def test_run(self): pairs_list = self.use_case.run( Members([Member('a'), Member('b'), Member('c')])) self.assertEqual(pairs_list, [ Pairs([Pair(Member('a'), Member('b')), Pair(Member('c'), None)]), Pairs([Pair(Member('a'), Member('c')), Pair(Member('b'), None)]), Pairs([Pair(Member('b'), Member('c')), Pair(Member('a'), None)]) ])
def test_evaluate(self): last_pairs = Pairs([ Pair(Member('a'), Member('b')), Pair(Member('c'), Member('d')), Pair(Member('e'), None) ]) members = Members( [Member('a'), Member('b'), Member('c'), Member('d'), Member('e')]) pairs = EvaluationService().evaluate([last_pairs], members) self.assertEqual(pairs, [ Pairs([ Pair(Member('a'), Member('c')), Pair(Member('d'), Member('e')), Pair(Member('b'), None) ]), Pairs([ Pair(Member('a'), Member('d')), Pair(Member('c'), Member('e')), Pair(Member('b'), None) ]), Pairs([ Pair(Member('a'), Member('e')), Pair(Member('b'), Member('c')), Pair(Member('d'), None) ]), Pairs([ Pair(Member('a'), Member('e')), Pair(Member('b'), Member('d')), Pair(Member('c'), None) ]), Pairs([ Pair(Member('b'), Member('c')), Pair(Member('d'), Member('e')), Pair(Member('a'), None) ]), Pairs([ Pair(Member('b'), Member('d')), Pair(Member('c'), Member('e')), Pair(Member('a'), None) ]), Pairs([ Pair(Member('b'), Member('e')), Pair(Member('a'), Member('c')), Pair(Member('d'), None) ]), Pairs([ Pair(Member('b'), Member('e')), Pair(Member('a'), Member('d')), Pair(Member('c'), None) ]), ])
def test_filter_same_pair2(self): history = [ Pairs([Pair(Member('a'), Member('b')), Pair(Member('c'), None)]), Pairs([Pair(Member('a'), Member('c')), Pair(Member('b'), None)]) ] pairs = PairTree.possible_pairs(self.members3.combinations()) filtered_pairs = EvaluationService( ).pair_should_not_exist_same_pair_in_near_history(history, pairs) self.assertEqual( filtered_pairs, [Pairs([Pair(Member('b'), Member('c')), Pair(Member('a'), None)])])
def test_filter_and_empty(self): members = Members([Member('a'), Member('b')]) tree = members.combinations() filtered = EvaluationService( ).pair_must_have_only_either_member_of_last_pair( Pairs([Pair(Member('a'), Member('b'))]), tree) self.assertEqual(filtered, [])
def pair_must_have_only_either_member_of_last_pair( self, last_pairs: Pairs, pair_trees: List[PairTree]) -> List[PairTree]: if not last_pairs: return pair_trees return [ PairTree( tree.pair, self.pair_must_have_only_either_member_of_last_pair( last_pairs.tail(), tree.remainder)) for tree in pair_trees if tree.pair.only_has_either(last_pairs[0]) and ( not last_pairs.tail() or (last_pairs.tail( ) and self.pair_must_have_only_either_member_of_last_pair( last_pairs.tail(), tree.remainder))) ]
def test_position_filter(self): history = [ Pairs([Pair(Member('a'), Member('b')), Pair(Member('c'), None)]), Pairs([Pair(Member('a'), Member('c')), Pair(Member('b'), None)]) ] tree = self.members3.combinations() possible_pairs = PairTree.possible_pairs(tree) filtered_tree = EvaluationService( ).member_is_must_not_in_same_position_at_three_times( history, possible_pairs) self.assertEqual( filtered_tree, [Pairs([Pair(Member('b'), Member('c')), Pair(Member('a'), None)])])
def load(self) -> List[PairsHistory]: return [ PairsHistory( PairsHistoryId(l[0]), Pairs.from_list(json.loads(l[1]))) for l in list( self.cursor.execute( 'SELECT id, data FROM pairs ORDER BY created_at')) ]
def test_run_with_history(self): self.repository.save( PairsHistory( PairsHistoryId('id'), Pairs( [Pair(Member('a'), Member('b')), Pair(Member('c'), None)]))) pairs_list = self.use_case.run( Members([Member('a'), Member('b'), Member('c')])) self.assertEqual(pairs_list, [ Pairs([Pair(Member('a'), Member('c')), Pair(Member('b'), None)]), Pairs([Pair(Member('b'), Member('c')), Pair(Member('a'), None)]) ])
def setUp(self): self.last_pairs3 = Pairs( [Pair(Member('a'), Member('b')), Pair(Member('c'), None)]) self.members3 = Members([Member('a'), Member('b'), Member('c')]) self.last_pairs5 = Pairs([ Pair(Member('a'), Member('b')), Pair(Member('c'), Member('d')), Pair(Member('e'), None) ]) self.members5 = Members( [Member('a'), Member('b'), Member('c'), Member('d'), Member('e')])
def test_fold2(self): tree = PairTree(Pair(Member('a'), Member('b')), [ PairTree(Pair(Member('c'), Member('d')), [PairTree(Pair(Member('e'), None), [])]), PairTree(Pair(Member('c'), Member('e')), [PairTree(Pair(Member('d'), None), [])]) ]) self.assertEqual([ Pairs([ Pair(Member('a'), Member('b')), Pair(Member('c'), Member('d')), Pair(Member('e'), None) ]), Pairs([ Pair(Member('a'), Member('b')), Pair(Member('c'), Member('e')), Pair(Member('d'), None) ]) ], tree.fold())
def test_run(self): save_pairs = Pairs( [Pair(Member('a'), Member('b')), Pair(Member('c'), None)]) self.use_case.run(save_pairs) self.assertEqual([history.pairs for history in self.repository.list], [save_pairs]) self.assertEqual( [history.identity for history in self.repository.list], [PairsHistoryId('0')])
def test_evaluate_four_times(self): history = [ Pairs([ Pair(Member('a'), Member('b')), Pair(Member('c'), Member('d')), Pair(Member('e'), None) ]), Pairs([ Pair(Member('a'), Member('c')), Pair(Member('d'), Member('e')), Pair(Member('b'), None) ]), Pairs([ Pair(Member('c'), Member('d')), Pair(Member('b'), Member('e')), Pair(Member('a'), None) ]), Pairs([ Pair(Member('d'), Member('e')), Pair(Member('a'), Member('b')), Pair(Member('c'), None) ]) ] members = Members( [Member('a'), Member('b'), Member('c'), Member('d'), Member('e')]) pairs = EvaluationService().evaluate(history, members) self.assertEqual(pairs, [ Pairs([ Pair(Member('b'), Member('e')), Pair(Member('a'), Member('c')), Pair(Member('d'), None) ]) ])
class PairsTest(TestCase): def setUp(self): self.pairs = Pairs( [Pair(Member('a'), Member('b')), Pair(Member('c'), None)]) self.one_pairs = Pairs([Pair(Member('a'), Member('b'))]) self.empty_pairs = Pairs([]) def test_getitem__pairs(self): self.assertEqual(self.pairs[1], Pair(Member('c'), None)) def test_tail__pairs(self): self.assertEqual(self.pairs.tail(), Pairs([Pair(Member('c'), None)])) def test_tail__one_pairs(self): self.assertEqual(self.one_pairs.tail(), Pairs([])) def test_tail__empty_pairs(self): self.assertEqual(self.one_pairs.tail(), Pairs([])) def test_in__pairs(self): self.assertTrue(Pair(Member('c'), None) in self.pairs) def test_have_same__pairs(self): self.assertTrue( self.pairs.have_same( Pairs( [Pair(Member('x'), Member('y')), Pair(Member('c'), None)]))) def test_have_same__pairs2(self): self.assertTrue(not self.pairs.have_same( Pairs([Pair(Member('x'), Member('y')), Pair(Member('z'), None)])))
def test_filter_same_pair3(self): history = [ Pairs([ Pair(Member('a'), Member('c')), Pair(Member('d'), Member('e')), Pair(Member('b'), None) ]), Pairs([ Pair(Member('a'), Member('b')), Pair(Member('c'), Member('d')), Pair(Member('e'), None) ]) ] tree = self.members5.combinations() s = EvaluationService() filtered_pairs = s.pair_should_not_exist_same_pair_in_near_history( history, PairTree.possible_pairs( s.pair_must_have_only_either_member_of_last_pair( history[-1], tree))) self.assertEqual(filtered_pairs, [ Pairs([ Pair(Member('a'), Member('e')), Pair(Member('b'), Member('c')), Pair(Member('d'), None) ]), Pairs([ Pair(Member('a'), Member('e')), Pair(Member('b'), Member('d')), Pair(Member('c'), None) ]), Pairs([ Pair(Member('b'), Member('d')), Pair(Member('c'), Member('e')), Pair(Member('a'), None) ]), Pairs([ Pair(Member('b'), Member('e')), Pair(Member('a'), Member('c')), Pair(Member('d'), None) ]), Pairs([ Pair(Member('b'), Member('e')), Pair(Member('a'), Member('d')), Pair(Member('c'), None) ]) ])
def load_pairs(self, message: pair_pb2.Pairs) -> Pairs: return Pairs([self.load_pair(pair) for pair in message.pairs])
def save(self, *history: str) -> str: """e.g. pairpair.py save test1,test2 test3,test4 test5,""" pairs = Pairs.from_list2([list(h) for h in history]) save_pairs_history().run(pairs) return str(pairs)
def test_tail__pairs(self): self.assertEqual(self.pairs.tail(), Pairs([Pair(Member('c'), None)]))
def test_tail__empty_pairs(self): self.assertEqual(self.one_pairs.tail(), Pairs([]))
def test_have_same__pairs2(self): self.assertTrue(not self.pairs.have_same( Pairs([Pair(Member('x'), Member('y')), Pair(Member('z'), None)])))