def setUp(self): self.dog = self.Creature(name='dog', number_of_legs=4, number_of_eyes=2) self.spider = self.Creature(name='spider', number_of_legs=8, number_of_eyes=9000) self.human = self.Creature(name='human', number_of_legs=2, number_of_eyes=2) self.creatures = Filterable([self.dog, self.human, self.spider])
class TestOrdering(FilteratorTestCase): class Creature(namedtuple('Creature', 'name number_of_legs number_of_eyes')): def get_name(self): return self.name def setUp(self): self.dog = self.Creature(name='dog', number_of_legs=4, number_of_eyes=2) self.spider = self.Creature(name='spider', number_of_legs=8, number_of_eyes=9000) self.human = self.Creature(name='human', number_of_legs=2, number_of_eyes=2) self.creatures = Filterable([self.dog, self.human, self.spider]) def test_order_by_int(self): self.assertItemsEqual([self.human, self.dog, self.spider], self.creatures.order_by('number_of_legs')) def test_equal_items_remains_in_original_order(self): self.assertItemsEqual([self.dog, self.human, self.spider], self.creatures.order_by('number_of_eyes')) def test_order_by_multiple_ints(self): self.assertItemsEqual([self.human, self.dog, self.spider], self.creatures.order_by('number_of_eyes', 'number_of_legs')) def test_order_by_reversed_key(self): self.assertItemsEqual([self.spider, self.dog, self.human], self.creatures.order_by('-number_of_legs')) def test_order_by_multiple_reversed_keys(self): self.assertItemsEqual([self.spider, self.dog, self.human], self.creatures.order_by('-number_of_eyes', '-number_of_legs')) def test_order_by_multiple_mixed_reversed_and_unreversed_keys(self): self.assertItemsEqual([self.spider, self.human, self.dog], self.creatures.order_by('-number_of_eyes', 'number_of_legs')) def test_order_by_string(self): self.assertItemsEqual([self.dog, self.human, self.spider], self.creatures.order_by('name')) def test_order_by_string_reversed(self): self.assertItemsEqual([self.spider, self.human, self.dog], self.creatures.order_by('-name')) def test_order_by_method(self): self.assertEqual([self.dog, self.human, self.spider], self.creatures.order_by('get_name'))
class TestOrdering(FilteratorTestCase): class Creature(namedtuple('Creature', 'name number_of_legs number_of_eyes')): def get_name(self): return self.name def setUp(self): self.dog = self.Creature(name='dog', number_of_legs=4, number_of_eyes=2) self.spider = self.Creature(name='spider', number_of_legs=8, number_of_eyes=9000) self.human = self.Creature(name='human', number_of_legs=2, number_of_eyes=2) self.creatures = Filterable([self.dog, self.human, self.spider]) def test_order_by_int(self): self.assertItemsEqual([self.human, self.dog, self.spider], self.creatures.order_by('number_of_legs')) def test_equal_items_remains_in_original_order(self): self.assertItemsEqual([self.dog, self.human, self.spider], self.creatures.order_by('number_of_eyes')) def test_order_by_multiple_ints(self): self.assertItemsEqual( [self.human, self.dog, self.spider], self.creatures.order_by('number_of_eyes', 'number_of_legs') ) def test_order_by_reversed_key(self): self.assertItemsEqual([self.spider, self.dog, self.human], self.creatures.order_by('-number_of_legs')) def test_order_by_multiple_reversed_keys(self): self.assertItemsEqual( [self.spider, self.dog, self.human], self.creatures.order_by('-number_of_eyes', '-number_of_legs') ) def test_order_by_multiple_mixed_reversed_and_unreversed_keys(self): self.assertItemsEqual( [self.spider, self.human, self.dog], self.creatures.order_by('-number_of_eyes', 'number_of_legs') ) def test_order_by_string(self): self.assertItemsEqual([self.dog, self.human, self.spider], self.creatures.order_by('name')) def test_order_by_string_reversed(self): self.assertItemsEqual([self.spider, self.human, self.dog], self.creatures.order_by('-name')) def test_order_by_method(self): self.assertEqual([self.dog, self.human, self.spider], self.creatures.order_by('get_name'))
def setUp(self): self.car = Vehicle('car', 'ford') self.bicycle = Vehicle('bicycle', 'nsbikes') self.marta = Person('Marta', 2, 'F', [], None) self.joe = Person('Joe', 7, 'M', [], None) self.alice = Person('Alice', 23, 'F', [self.marta], self.bicycle) self.bob = Person('Bob', 31, 'M', [self.marta, self.joe], self.car) self.people = Filterable([ self.marta, self.joe, self.alice, self.bob, ])