def test_getitem(self): items = Nodes([1, 2]) # Index self.assertEqual(items[0], 1) # Key self.assertEqual(items['1'], 1) # Multiple self.assertCountEqual(items[0, 1], [1, 2]) # Invalid key self.assertRaises(KeyError, items.__getitem__, None)
def test_sort(self): n0 = Node({'order': 0}) n1 = Node({'order': 1}) n2 = Node({'order': 2}) items = Nodes([n1, n2, n0]) self.assertCountEqual(items.sort('order'), [n0, n1, n2]) f = lambda n: n.props.get('order') self.assertCountEqual(items.sort(f), [n0, n1, n2])
def test_filter(self): items = Nodes([Node({'foo': 1}), Node({'foo': 2}), Node({'foo': 2})]) self.assertCountEqual(items.filter('foo'), items) self.assertCountEqual(items.filter('foo', 1), items[:1]) self.assertCountEqual(items.filter('foo', 2), items[1:]) self.assertCountEqual(items.filter('foo', 3), []) self.assertCountEqual(items.filter('bar'), []) # Arbitrary filter function f = lambda n: n == items[2] self.assertCountEqual(items.filter(f), items[2:]) # Only functions and strings self.assertRaises(TypeError, items.filter, 10)
def test_equality(self): self.assertEqual(Nodes([1]), [1]) self.assertNotEqual(Nodes(), 1) self.assertNotEqual(Nodes([1, 2]), [1]) self.assertNotEqual(Nodes([1, 2]), [1, 3])
def test_match(self): items = Nodes([1, 2, 13]) self.assertCountEqual(items.match(r'1'), [1, 13]) self.assertCountEqual(items.match(r'2'), [2])