def _test_evaluates_to(self,xxx, val): self.assertEqual( expressions.evaluate(xxx), val ) self.assertTrue( isinstance(expressions.evaluate(xxx), Number) ) self.assertEqual( xxx, val ) self.assertTrue( xxx.is_def() ) self.assertEqual( xxx.evaluate(), val ) self.assertEqual( xxx.val(), val ) self.assertEqual( str(xxx), str(val) ) self.assertEqual( xxx.name_or_value(), str(val) )
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() )
def test_syntax_constrain(self): system = expressions.System() a = expressions.Var() system.constrain( 3==a*2 ) expressions.constrain( a == 15 ) self.assertEqual( system.evaluate(a), 1.5 ) self.assertEqual( expressions.evaluate(a), 15 )
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() )
def sim_draw(self, str=""): if self._text: return str + ' >> Drawing "'+self._text+'" at {:},{:}\n"'.format(int(evaluate(self.pt.x)),int(evaluate(self.pt.y)))
def free_vars(self): for x in self.vars(): if is_undef(evaluate(x)): yield x
def sim_draw(self, str=""): return str + " >> Drawing line from {:},{:} to {:},{:}\n".format(int(evaluate(self.pt1.x)),int(evaluate(self.pt1.y)), int(evaluate(self.pt2.x)),int(evaluate(self.pt2.y)))
def sim_draw(self, str=""): return str + " >> Drawing circle about {:},{:} with radius {:}\n".format(int(evaluate(self.c.x)),int(evaluate(self.c.y)),int(evaluate(self.r)))
def draw_pil(self, draw): draw.line((int(evaluate(self.pt1.x)), int(evaluate(self.pt1.y)), int(evaluate(self.pt2.x)), int(evaluate(self.pt2.y))), fill = self._col) return draw
def draw_tk(self, canvas): canvas.create_line(int(evaluate(self.pt1.x)), int(evaluate(self.pt1.y)), int(evaluate(self.pt2.x)), int(evaluate(self.pt2.y)), fill = self._col) return canvas
def conv(expr): return int(evaluate(expr)+0.5)
def draw_pil(self,draw): if self._text: sz = draw.textsize(self._text) draw.text((int(evaluate(self.pt.x)),int(evaluate(self.pt.y))-sz[1]),self._text, fill = self._col) return draw
def draw_tk(self,canvas): if self._text: canvas.create_text(int(evaluate(self.pt.x)),int(evaluate(self.pt.y)),text=self._text,anchor=self._anchor) return canvas