def test_reset(self): geladenes_spielfeld_obj = Spielfeld( spielfeld=self.befuelltes_spielfeld) geladenes_spielfeld_obj.reset() self.assertEqual(geladenes_spielfeld_obj.spielfeld, self.leeres_spielfeld)
def test_is_tot(self): test_spieler = Spieler("TestName", Spielfeld(), Spielfeld(), 0) #Spielfeld von vorne rein Leer - somit kein Schiff mehr vorhanden -> tot self.assertEqual(test_spieler.is_tot(), True) test_spieler.update_spielfeld(Koordinate(1, 1), Status.SCHIFF) self.assertEqual(test_spieler.is_tot(), False)
def test_set_feld(self): spielfeld_obj = Spielfeld() statusse = list(Status) for y in range(1, 11): for x in range(1, 11): status = random.choice(statusse) position = Koordinate(x, y) spielfeld_obj.set_feld(status, position) self.assertEqual(spielfeld_obj.spielfeld[x - 1][y - 1], status)
def test_setter_getter(self): spielfeld_obj = Spielfeld() self.assertEqual(spielfeld_obj.spielfeld, self.leeres_spielfeld) spielfeld_obj.spielfeld = self.befuelltes_spielfeld get_spielfeld = spielfeld_obj.spielfeld self.assertEqual(get_spielfeld, self.befuelltes_spielfeld) self.assertNotEqual(get_spielfeld, self.leeres_spielfeld)
def test_konstruktoren(self): leeres_spielfeld_obj = Spielfeld() geladenes_spielfeld_obj = Spielfeld( spielfeld=self.befuelltes_spielfeld) kurzes_spielfeld_obj = Spielfeld(dimension=2) self.assertEqual(leeres_spielfeld_obj.spielfeld, self.leeres_spielfeld) self.assertEqual(geladenes_spielfeld_obj.spielfeld, self.befuelltes_spielfeld) self.assertEqual(kurzes_spielfeld_obj.spielfeld, self.kurzes_spielfeld)
def test_konstruktoren(self): name = "Name" spielfeld = Spielfeld() spielfeld_gegner = Spielfeld() punkte = 200 spieler = Spieler(name, spielfeld, spielfeld_gegner, punkte) self.assertEqual(spieler.name, name) self.assertEqual(spieler.spielfeld, spielfeld) self.assertEqual(spieler.spielfeld_gegner, spielfeld_gegner) self.assertEqual(spieler.punkte, punkte)
def test_add_punkt(self): punkt_add = 10 test_spieler = Spieler("TestName", Spielfeld(), Spielfeld(), 0) aktuelle_punkte = test_spieler.punkte test_spieler.add_punkt() self.assertEqual(aktuelle_punkte + 1, test_spieler.punkte) aktuelle_punkte = test_spieler.punkte test_spieler.add_punkt(punkt_add) self.assertEqual(aktuelle_punkte + punkt_add, test_spieler.punkte)
def test_get_status_bei(self): spielfeld_obj = Spielfeld() statusse = list(Status) for y in range(1, 11): for x in range(1, 11): koordinate = Koordinate(x, y) status = random.choice(statusse) spielfeld_obj.spielfeld[x - 1][y - 1] = status spielfeld_status = spielfeld_obj.get_status_bei(koordinate) self.assertEqual(status, spielfeld_status)
def test_update_spielfeld(self): statusse = list(Status) test_spieler = Spieler("TestName", Spielfeld(), Spielfeld(), 0) for y in range(1, 11): for x in range(1, 11): koordinate = Koordinate(x, y) status = random.choice(statusse) test_spieler.update_spielfeld(koordinate, status) status_spielfeld = test_spieler.spielfeld.get_status_bei( koordinate) self.assertEqual(status, status_spielfeld)
def test_platziere_schiffe(self): spielfeld: Spielfeld = Spielfeld() self.master.platziere_schiff(spielfeld, Schiff("Schlachtschiff", 5), Koordinate("A", 1, Richtung.SUEDEN)) with patch('sys.stdout', new=StringIO()) as fake_out: self.master.print_spielfeld(spielfeld) count_schiffe = fake_out.getvalue().count('#') self.assertEqual(count_schiffe, 5)
def test_wird_abgeschossen(self): statusse = list(Status) test_spieler = Spieler("TestName", Spielfeld(), Spielfeld(), 0) for y in range(1, 11): for x in range(1, 11): koordinate = Koordinate(x, y) status = random.choice(statusse) test_spieler.update_spielfeld(koordinate, status) if status == Status.SCHIFF: return_schuss = test_spieler.wird_abgeschossen(koordinate) self.assertEqual(return_schuss, Status.TREFFER) else: return_schuss = test_spieler.wird_abgeschossen(koordinate) self.assertEqual(return_schuss, status)
def test_alle_schiffe_zerstoert(self): befuelltes_spielfeld_obj = Spielfeld( spielfeld=self.befuelltes_spielfeld) leeres_spielfeld_obj = Spielfeld() self.assertEqual(befuelltes_spielfeld_obj.alle_schiffe_zerstoert(), False) self.assertEqual(leeres_spielfeld_obj.alle_schiffe_zerstoert(), True)
def test_spielen_letzter_schuss(self): master = Master() spieler_1 = self.spieler_1 master.aktueller_spieler = spieler_1 spieler_2 = Spieler("Test2", self.befuelltes_spielfeld_letzter_schuss, Spielfeld(), 0) master.aktueller_gegner = spieler_2 master.print_spielfeld(spieler_1.spielfeld) with patch('sys.stdin', new=StringIO("A1")): with patch('sys.stdout', new=StringIO()) as fake_out: master.spielen() self.assertEqual(master.ist_spiel_vorbei, True) ist_drin = False if "Glueckwunsch!" in fake_out.getvalue(): ist_drin = True self.assertEqual(ist_drin, True)
def test_plaziere_schiff(self): spielfeld_obj = Spielfeld() schiff = Schiff("U-Boot", 2) spielfeld_mit_plaziertem_schiff_sueden = [ [ Status.SCHIFF, Status.SCHIFF, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ] ] spielfeld_mit_plaziertem_schiff_osten = [ [ Status.SCHIFF, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.SCHIFF, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ] ] koordinate = Koordinate(1, 1, Richtung.SUEDEN) # index [0][0] sueden spielfeld_obj.plaziere_schiff(koordinate, schiff) self.assertEqual(spielfeld_obj.spielfeld, spielfeld_mit_plaziertem_schiff_sueden) spielfeld_obj.reset() koordinate = Koordinate(1, 1, Richtung.OSTEN) # index [0][0] osten spielfeld_obj.plaziere_schiff(koordinate, schiff) self.assertEqual(spielfeld_obj.spielfeld, spielfeld_mit_plaziertem_schiff_osten) spielfeld_obj.reset() koordinate = Koordinate(1, 1, Richtung.NORDEN) # index [0][0] norden self.assertRaises(IndexError, spielfeld_obj.plaziere_schiff, koordinate, schiff) koordinate = Koordinate(1, 1, Richtung.WESTEN) # index [0][0] westen self.assertRaises(IndexError, spielfeld_obj.plaziere_schiff, koordinate, schiff) koordinate = Koordinate(12, 1, Richtung.NORDEN) # index fehlerhaft self.assertRaises(IndexError, spielfeld_obj.plaziere_schiff, koordinate, schiff) koordinate = Koordinate("Z", 1, Richtung.NORDEN) # index fehlerhaft self.assertRaises(IndexError, spielfeld_obj.plaziere_schiff, koordinate, schiff) spielfeld_obj_befuellt = Spielfeld(spielfeld=self.befuelltes_spielfeld) koordinate_befuellt = Koordinate(4, 8, Richtung.NORDEN) # index[3][7] norden self.assertRaises(IndexError, spielfeld_obj_befuellt.plaziere_schiff, koordinate_befuellt, schiff)
def setUp(self) -> None: self.master = Master() self.befuelltes_spielfeld_list = [ [ Status.SCHIFF, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.SCHIFF, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.SCHIFF, Status.WASSER, Status.TREFFER, Status.SCHIFF, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.SCHIFF, Status.WASSER, Status.WASSER, Status.WASSER, Status.SCHIFF, Status.SCHIFF, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.SCHIFF, Status.TREFFER, Status.SCHIFF, Status.WASSER, Status.WASSER, Status.WASSER, Status.SCHIFF, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.SCHIFF, Status.WASSER ], [ Status.DANEBEN, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.SCHIFF, Status.SCHIFF, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ] ] self.befuelltes_spielfeld_letzter_schuss_list = [ [ Status.SCHIFF, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ], [ Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER, Status.WASSER ] ] self.befuelltes_spielfeld = Spielfeld( spielfeld=self.befuelltes_spielfeld_list) self.befuelltes_spielfeld_letzter_schuss = Spielfeld( spielfeld=self.befuelltes_spielfeld_letzter_schuss_list) self.spieler_1 = Spieler("Test1", self.befuelltes_spielfeld, Spielfeld(), 0) self.master.aktueller_spieler = self.spieler_1 self.master.spieler_1 = self.spieler_1 self.spieler_2 = Spieler("Test2", self.befuelltes_spielfeld, Spielfeld(), 0) self.master.spieler_2 = self.spieler_2 self.master.aktueller_gegner = self.spieler_2 self.test_get_user_input_koordinate = Koordinate('A', 10) self.test_ungueltige_koordinate = Koordinate('A', 12) self.test_koordinate_treffer = Koordinate('A', 1) self.test_koordinate_daneben = Koordinate('E', 1) return super().setUp()