示例#1
0
    def test_equality_and_hash(self):
        a = Topic('a')
        ab = Topic('b', parent=a)
        abc1 = Topic('c', parent=ab)
        abc2 = Topic('c', parent=ab)
        abd = Topic('d', parent=ab)
        ac = Topic('c', parent=a)

        def assert_hash(t1, t2):
            self.assertEqual(hash(t1), hash(t2))

        # Check same object equality
        self.assertEqual(a, a)
        assert_hash(a, a)
        self.assertEqual(ab, ab)
        assert_hash(ab, ab)
        self.assertEqual(abc1, abc1)
        assert_hash(abc1, abc1)
        self.assertEqual(abc2, abc2)
        assert_hash(abc2, abc2)
        self.assertEqual(abd, abd)
        assert_hash(abd, abd)

        # Check same name and parent
        self.assertEqual(abc1, abc2)
        assert_hash(abc1, abc2)

        # Check same name and different parent
        self.assertNotEqual(abc1, ac)

        # Check different name and same parent
        self.assertNotEqual(abc1, abd)

        # Check different type
        self.assertNotEqual(abc1, object())
示例#2
0
 def test_iter(self):
     a = Topic('a')
     ab = a + 'b'
     abc = ab + 'c'
     i1 = iter(abc)
     i2 = iter(abc)
     self.assertEqual(next(i1), abc)
     self.assertEqual(next(i2), abc)
     self.assertEqual(next(i1), ab)
     self.assertEqual(next(i2), ab)
     self.assertEqual(next(i1), a)
     self.assertEqual(next(i2), a)
     self.assertIsNone(next(i1))
     self.assertIsNone(next(i2))
     with self.assertRaises(StopIteration):
         next(i1)
     with self.assertRaises(StopIteration):
         next(i2)
示例#3
0
 def test_parse(self):
     actual = Topic.parse('a:b:c')
     expected = Topic('c', parent=Topic('b', parent=Topic('a')))
     self.assertEqual(actual, expected)
示例#4
0
 def test_invalid_parent(self):
     with self.assertRaises(TypeError):
         Topic('name', parent=object())
示例#5
0
 def test_invalid_name(self):
     with self.assertRaises(TypeError):
         Topic(object())
示例#6
0
 def test_addition(self):
     a = Topic('a')
     self.assertEqual(a + 'b', Topic('b', parent=a))
     with self.assertRaises(TypeError):
         a + object()
示例#7
0
 def test_str(self):
     self.assertEqual(str(Topic('a') + 'b' + 'c'), 'a:b:c')
示例#8
0
 def test_repr(self):
     topic = Topic('a') + 'b' + 'c'
     self.assertEqual(eval(repr(topic)), topic)