Exemplo n.º 1
0
class AttitudeTestCase(unittest.TestCase):

    def setUp(self):
        CreateEngine()
        self.attitude = Attitude()

    def test_priority(self):
        """Test set/get priority."""
        self.attitude.set_priority(1)
        self.assertEqual(self.attitude.get_priority(), 1)

    def test_terms(self):
        """Test set/get terms."""
        terms = ['ball', 42, 42]
        self.attitude.set_terms(terms)
        self.assertEqual(self.attitude.get_terms(), terms)

    def test_condition(self):
        """Test set/get condition"""
        condition = Condition('A')
        self.attitude.set_condition(condition)
        self.assertEqual(self.attitude.get_condition(), condition)

    def test_type(self):
        """Test set/get type."""
        self.attitude.set_type('add')
        self.assertEqual(self.attitude.get_type(), 'add')

    def test_pos(self):
        """Test __pos__ method."""
        self.aptitude = +self.attitude
        self.assertEqual(self.attitude.get_type(), 'add')

    def test_neg(self):
        """Test __neg__ method."""
        self.aptitude = -self.attitude
        self.assertEqual(self.attitude.get_type(), 'delete')

    def test_or(self):
        """Test __or__ method."""
        # function
        x = lambda: 42
        res = self.attitude | x
        self.assertEqual(res.get_condition()._Condition__conditions[0], x)

        # Belief
        class object_seen(Belief):
            pass
        res = self.attitude | object_seen('x')
        self.assertEqual(res.get_condition()._Condition__conditions[0],
                             object_seen('x'))
        # Condition
        condition = Condition('A')
        res = self.attitude | condition
        self.assertEqual(res.get_condition(), condition)
        # raise InvalidTypeInCondition
        self.assertRaises(InvalidTypeInCondition,
                              lambda: self.attitude | None)

    def test_rmod(self):
        """Test __rmod__ method."""
        res = 2 % self.attitude
        self.assertEqual(self.attitude.get_priority(), 2)

    def test_rshift(self):
        """Test __rshift__ method."""
        class reach_object(Goal):
            pass
        action = reach_object('1', '1')
        # If self.attitude type is None InvalidTriggeringEvent will raised
        self.assertRaises(InvalidTriggeringEvent,
                              lambda: self.attitude >> action)

        res = +self.attitude >> action
        self.assertEqual(res, self.attitude)
        self.assertEqual(Engine.instance().plans(),
                         [(0, self.attitude, TrueCondition(), action)])
Exemplo n.º 2
0
 def setUp(self):
     CreateEngine()
     self.attitude = Attitude()