示例#1
0
 def test_like(self):
     w = Woman(id_number=777)
     men = [attractive_man, less_attractive_man] = [Man(id_number=7), Man(id_number=17)]
     w.set_preference(men)
     w.marry(attractive_man)
     self.assertFalse(w.like(less_attractive_man))
     w.divorce()
     w.marry(less_attractive_man)
     self.assertTrue(w.like(attractive_man))
示例#2
0
 def test_stable(self):
     men = [m1, m2] = [Man(id_number=1), Man(id_number=2)]
     women = [w1, w2] = [Woman(id_number=1), Woman(id_number=2)]
     for m in men:
         m.set_preference(women)
     for w in women:
         w.set_preference(men)
     w1.marry(m1)
     w2.marry(m2)
     couples = [(m1, w1), (m2, w2)]
     self.assertTrue(is_stable(matching=couples))
示例#3
0
 def test_divorce(self):
     w = Woman(id_number=22)
     m = Man(id_number=2)
     w.marry(m)
     ex_husband = w.divorce()
     self.assertTrue(w.is_single())
     self.assertIsInstance(ex_husband, Man)
示例#4
0
 def test_men_women_with_same_preference(self):
     pair_number = 8
     men = [Man(id_number=i) for i in range(pair_number)]
     women = [Woman(id_number=i) for i in range(pair_number)]
     shuffle(men)
     shuffle(women)
     for m in men:
         m.set_preference(preference=list(women))
     for w in women:
         w.set_preference(preference=list(men))
     couples = stable_matching(men=men, women=women)
     self.assertTrue(is_stable(matching=couples))
示例#5
0
 def test_random_preference(self):
     pair_number = 8
     men = [Man(id_number=i) for i in range(pair_number)]
     women = [Woman(id_number=i) for i in range(pair_number)]
     for m in men:
         w_preference = list(women)
         shuffle(w_preference)
         m.set_preference(preference=w_preference)
     for w in women:
         m_preference = list(men)
         shuffle(m_preference)
         w.set_preference(preference=m_preference)
     couples = stable_matching(men=men, women=women)
     self.assertTrue(is_stable(matching=couples))
示例#6
0
 def test_add_proposed(self):
     w1 = Woman(id_number=1)
     w2 = Woman(id_number=2)
     m = Man(id_number=999)
     m.add_proposed(w1)
     pairs = [(m.has_proposed(w1), True), (m.has_proposed(w2), False)]
     for i, (result, expected_result) in enumerate(pairs):
         with self.subTest(f'iteration {i}'):
             self.assertEqual(result, expected_result)
示例#7
0
 def test_marry(self):
     w = Woman(id_number=33)
     m = Man(id_number=3)
     w.marry(m)
     self.assertFalse(w.is_single())
示例#8
0
 def test_like(self):
     m = Man(id_number=999)
     w1 = Woman(id_number=1)
     w2 = Woman(id_number=2)
     m.set_preference([w1, w2]) # [most-prefered ,..., least-prefered]
     m.marry(w2)
     self.assertTrue(m.like(w1))
     m.marry(w1)
     self.assertFalse(m.like(w1))
     m.divorce()
     self.assertTrue(m.like(w2))