def test_add_known_item(self): """Test that OrderedSet.add(known) returns False.""" contents = ["foo", "bar", "baz"] known = contents[1] os = utility.OrderedSet(contents) self.assertFalse(os.add(known)) self.assertEqual(list(os), contents)
def test_discard_unknown_item(self): """Test that OrderedSet.discard(unknown) returns False.""" contents = ["foo", "bar", "baz"] unknown = "qux" os = utility.OrderedSet(contents) self.assertFalse(os.discard(unknown)) self.assertEqual(list(os), contents)
def test_add_unknown_item(self): """Test that OrderedSet.add(unknown) returns True.""" contents = ["foo", "bar", "baz"] unknown = "qux" os = utility.OrderedSet(contents) self.assertTrue(os.add(unknown)) self.assertEqual(list(os), contents + [unknown])
def test_creation_with_duplicates(self): """"Test that OrderedSet instantiation removes duplicates.""" contents = ["foo", "bar", "foo", "baz"] os = utility.OrderedSet(contents) self.assertNotEqual(list(os), contents) self.assertEqual(len(os), len(contents) - 1) self.assertEqual(set(os), set(contents))
def test_creation_simple(self): """"Test basic OrderedSet instantiation.""" contents = ["foo", "bar", "baz"] os = utility.OrderedSet(contents) self.assertEqual(list(os), contents) self.assertEqual(len(os), len(contents)) self.assertEqual(set(os), set(contents))
def test_discard_known_item(self): """Test that OrderedSet.discard(known) returns True.""" contents = ["foo", "bar", "baz"] known = contents[1] new_contents = [x for x in contents if x != known] os = utility.OrderedSet(contents) self.assertTrue(os.discard(known)) self.assertEqual(list(os), new_contents)
def _add_literal_to_index(self, literal, index_name): index_key = ((index_name[0], ) + tuple([(i, literal.head.arguments[i].name) for i in index_name[1:]])) # Populate the index if index_key not in self.indicies[index_name]: self.indicies[index_name][index_key] = utility.OrderedSet() self.indicies[index_name][index_key].add(literal)
def test_equals_other_iterable(self): """Test that OrderedSet-to-other-iterable equality returns False.""" contents = ["foo", "bar", "baz"] os = utility.OrderedSet(contents) self.assertNotEqual(os, set(os)) self.assertNotEqual(os, frozenset(os)) self.assertNotEqual(os, list(os)) self.assertNotEqual(os, tuple(os)) self.assertNotEqual(os, {x: 0 for x in os})
def test_contains(self): """Test that basic OrderedSet.__contains__ functionality works.""" contents = ["foo", "bar", "baz"] missing = "qux" os = utility.OrderedSet(contents) self.assertTrue(all(x in os for x in contents)) self.assertTrue(missing not in os) discarded = contents[1] os.discard(discarded) self.assertTrue(all(x in os for x in contents if x != discarded)) self.assertTrue(discarded not in os)
def add_rule(self, key, rule): # rule can be a rule or a literal # returns True on change if len(rule.body): dest = self.rules else: dest = self.literals # Update indicies for index_name in self.indicies.keys(): if key == index_name[0]: self._add_literal_to_index(rule, index_name) if key in dest: return dest[key].add(rule) else: dest[key] = utility.OrderedSet([rule]) return True
def test_reversed_reverses_order(self): """Test that reversed(OrderedSet()) reverses correctly.""" contents = ["foo", "bar", "baz"] os = utility.OrderedSet(contents) self.assertEqual(list(reversed(os)), list(reversed(contents)))
def test_pop_not_first_item(self): """Test that OrderedSet.pop(last=False) returns the first item.""" contents = ["foo", "bar", "baz"] os = utility.OrderedSet(contents) self.assertEqual(os.pop(last=False), contents[0]) self.assertEqual(list(os), contents[1:])
def test_pop_last_item(self): """Test that OrderedSet.pop() returns the final item.""" contents = ["foo", "bar", "baz"] os = utility.OrderedSet(contents) self.assertEqual(os.pop(), contents[-1]) self.assertEqual(list(os), contents[:-1])
def test_equals_other_ordered_set(self): """Test that OrderedSet equality accounts for order.""" contents = ["foo", "bar", "baz"] os = utility.OrderedSet(contents) self.assertNotEqual(os, utility.OrderedSet(reversed(os))) self.assertEqual(os, utility.OrderedSet(contents))