def test_decorators(self): program = Program(PROGRAM) assertEqual = self.assertEqual assertEqual('ANIMAL', program.run(Data(1, 'fish')).payload) assertEqual('ANIMAL', program.run(Data(1, 'cat')).payload) assertEqual('ANIMAL', program.run(Data(1, 'dog')).payload) assertEqual('something else', program.run(Data(1, 'flower')).payload) assertEqual('something else', program.run(Data(1, 'rock')).payload)
def test_to_dot_with_statistics(self): prog = self.program() prog.run(Data(id, 1)) prog.run(Data(id, 2)) prog.run(Data(id, 2)) text = prog.to_dot(with_statistics=True) self.assertEqualText(TEST_TO_DOT_WITH_STATISTICS, text)
def test_rule_branch(self): # program: add 2 to value if odd, else leave it prog = m.Program( [ m.IF (increase_if_odd), add1, m.ENDIF, m.RETURN_TRUE, ]) self.assertEqualData(Data(id, 0), prog.run(Data(id, 0))) self.assertEqualData(Data(id, 3), prog.run(Data(id, 1)))
def test_branch(self): # program: convert an odd number to string 'odd', # an even number to 'even' prog = m.Program([ m.IF (odd), const_odd, m.ELSE, const_even, m.ENDIF, m.RETURN_TRUE]) self.assertEqualData(Data(id, 'even'), prog.run(Data(id, 0))) self.assertEqualData(Data(id, 'odd'), prog.run(Data(id, 1)))
def modify(self, record): for field_name in self.fields: Program(self.getTransforms() + [RETURN_TRUE]).run( Data(field_name, record.getField(field_name))).payload return record
def run(self): if self.getTransforms(): Program(self.getTransforms() + [RETURN_TRUE]).run( Data(self.getName(), self)).payload if self.getType() != self.field_final_type: self.setType(self.field_final_type, hard=self.getValue() is None)
def run_and_expect_exception(self, prog): try: prog.run(Data(None, None)) except WellKnownException: # expected return else: self.fail('expected a WellKnownException from prog.run!')
def test_multiple_use_of_instructions(self): # program: convert an odd number to string 'odd', # an even number to 'even' prog = m.Program([ odd, m.IF (odd), odd, const_even, const_odd, m.ELSE, odd, const_odd, const_even, m.ENDIF, m.RETURN_TRUE]) self.assertEqualData(Data(id, 'even'), prog.run(Data(id, 0))) self.assertEqualData(Data(id, 'odd'), prog.run(Data(id, 1)))
def test_rule(self): prog = m.Program([add1, m.RETURN_TRUE]) self.assertEqualData(Data(id, 1), prog.run(Data(id, 0))) self.assertEqualData(Data(id, 2), prog.run(Data(id, 1)))