Example #1
0
 def _test_is_undef(self,xxx):
     self.assertEqual( expressions.evaluate(xxx), expressions.undefined() )
     self.assertEqual( str(xxx), 'undefined' )
     self.assertEqual( xxx.evaluate(), expressions.undefined() )
     self.assertEqual( str(xxx.evaluate()), 'undefined' )
     self.assertFalse( xxx.is_def() )
     self.assertEqual( xxx.name_or_value(), xxx.name() )
Example #2
0
 def test_more_reduce_undef_truthvals(self):
     a = expressions.Var('a')
     b = expressions.Var('b')
     self.assertEqual( undef_eq([a,1,b],[a,1,b]), True )
     self.assertEqual( undef_eq([a,1,b],[a,a,b]), expressions.undefined() )
     self.assertEqual( undef_eq([a,a,b],[b,b,b]), expressions.undefined() )
     self.assertEqual( undef_eq([a,a,0],[b,b,1]), False )
     self.assertEqual( undef_eq([a,1,1],[a,1,0]), False )
     self.assertEqual( undef_eq([a,a,1],[a,1,0]), False )
Example #3
0
 def test_undef(self):
     p1 = Point()
     p1.x = 3
     self.assertEqual( len(expressions.constraints()), 1 )
     self.assertEqual( expressions.evaluate(p1.x), 3 )
     self.assertEqual( expressions.evaluate(p1.x==3), True )
     self.assertTrue( bool(p1.x==3) )
     self.assertFalse( p1.y.is_def() )
     self.assertEqual( p1==Point(3,3), expressions.undefined() )
     self.assertEqual( p1==Point(0,0), False )
     self.assertEqual( p1==Point(), expressions.undefined() )
Example #4
0
 def test_arr_circ(self):
     arr = Array(2,Circle,"circs")
     # arr.first.left = Point(0,Var())
     # arr.last.right = Point(10,Var())
     arr.first.left.x = 0
     arr.last.right.x = 4
     for a,b in arr.adj_objs():
         a.right = b.left
         a.r = b.r
     self.assertEqual( arr[1].r, 1 )
     self.assertFalse( arr[1].top.y.is_def() )
     self.assertEqual( arr[1].top.y, expressions.undefined() )
Example #5
0
    def test_system(self):
    
        # Variables
        a = expressions.Var('a')
        b = expressions.Var('b')
        
        system = expressions.System()
        system2 = expressions.System()

        # Not necessary for real code, but test results expect this order
        self.assertTrue( hash(a) < hash(b) )
        self.assertTrue( list({ a:2, b:1 }.keys())[0] is a )

        # Check we can apply constraints, including duplicates
        system.constrain( b == a * 2 )
        system.constrain( b == 2 * a )
        system.constrain( -1 * b == 0 - (2 * a) )
        
        system2.constrain( a == 1 )

        self.assertEqual( system2.variables(), {a} )
        self.assertEqual( system.variables(), {a,b} )

        self.assertFalse( system.solved() )
        self.assertEqual( system.evaluate(a), expressions.undefined() )
        self.assertEqual( system.evaluate(b), expressions.undefined() )

        # Check solution
        system.constrain( a == 3 )
        self.assertTrue( system.solved() )
        
        # Check results
        self.assertEqual( system.evaluate(a), 3 )
        self.assertEqual( system.evaluate(b), 6 )
        self.assertEqual( system.evaluate(2*b), 12 )
        
        a == 2 
        system.constrain( b == a * 2 )
Example #6
0
 def test_null_evaluations(self):
     system = expressions.System()
     a = expressions.Var('a')
     b = expressions.Var('b')
     self.assertEqual( system.evaluate( 3) , 3 )
     self.assertEqual( system.evaluate( 3*a +2 -2*a -a ) , 2 )
     self.assertTrue( (a-a).is_null() )
     self.assertFalse( (a+0).is_null() )
     self.assertTrue( expressions.Expr(0).is_null() )
     self.assertEqual( system.evaluate( a==b ), expressions.undefined() )
     self.assertTrue( expressions.Equ( a, a ) )
     self.assertTrue( expressions.Equ( a + b, b + a ) )
     self.assertTrue( a == a )
     self.assertTrue( a + b == b + a )
     self.assertEqual( a, a )
     self.assertEqual( a + b, b + a )
Example #7
0
    def test_reduce_undef_truthvals(self):
        a = expressions.Var('a')
        b = expressions.Var('b')
        self.assertEqual( True & expressions._Undefined() , expressions.undefined() )
        self.assertEqual( False & expressions._Undefined(), False )
        self.assertEqual( expressions._Undefined() & True,  expressions.undefined() )
        self.assertEqual( expressions._Undefined() & False, False)
        self.assertEqual( expressions._Undefined() & expressions._Undefined(), expressions.undefined() )
        self.assertEqual( expressions._Undefined() & expressions._Undefined() & expressions._Undefined(), expressions.undefined() )

        self.assertEqual( (a==a).evaluate(), True )
        self.assertEqual( (a==b).evaluate(), expressions.undefined() )
        self.assertEqual( (a-a==1).evaluate(), False )
        self.assertEqual( (a==a) & (a==a), True )
        self.assertEqual( (a==a) & (a==b), expressions.undefined() )
        self.assertEqual( (a==a) & (a-a==1), False )
        
        self.assertEqual(expressions._Undefined() & (a==b), expressions.undefined())