def test_homogeneous_parts_A(self):
   one = self.poly_ring.one()
   zero = self.poly_ring.zero()
   gm = GradedModule([[one,one]],[0,1],[1,2,3])
   parts = gm.get_homogeneous_parts([one,one])
   parts_true = { 0:[one,zero] , 1:[zero,one] }
   self.assertEqual(parts,parts_true)
 def test_homogeneous_part_basisA(self):
   x = self.x
   y = self.y
   z = self.z
   one = self.poly_ring.one()
   gm = GradedModule([[z,one,x**2 + y]],[0,1,2],[1,2,3])
   basis = gm.homogeneous_part_basis(6);
   self.assertEqual(len(basis),10)
 def test_monomial_basis(self):
   x = self.x
   y = self.y
   one = self.poly_ring.one()
   zero = self.poly_ring.zero()
   gm = GradedModule([[one,one]],[0,1],[1,2,3])
   true_basis  = [(x**2,zero),(y,zero),(zero,x)]
   self.assertEqual(Set(gm.monomial_basis(2)),Set(true_basis))
 def test_homogeneous_part_basisB(self):
   #From bug found with ncd
   x = self.x
   y = self.y
   z = self.z
   zero = self.poly_ring.zero()
   gm = GradedModule([[zero, x*z, x*y], [zero, -x*z, zero], [y*z, zero, zero]],[1, 1, 1],[1, 1, 1])
   basis = gm.homogeneous_part_basis(3);
   self.assertEqual(len(basis),3)
 def test_homogeneous_parts_B(self):
   x = self.x
   y = self.y
   z = self.z
   one = self.poly_ring.one()
   zero = self.poly_ring.zero()
   gm = GradedModule([[one,one]],[0,1],[1,2,3])
   parts = gm.get_homogeneous_parts([x*y,x**3+z*y])
   self.assertEqual(parts,{3:[x*y,zero],4:[zero,x**3],6:[zero,z*y]})
 def test_monomial_basis_zero(self):
   one = self.poly_ring.one()
   zero = self.poly_ring.zero()
   gm = GradedModule([[one,one,one,one]],[0,1,2,3],[1,2,3])
   self.assertEqual(gm.monomial_basis(0),[(one,zero,zero,zero)])