def test10_matkalaukku_raskain_tavara_2(self): from src.koodi import Tavara from src.koodi import Matkalaukku koodi = """ laukku = Matkalaukku(25) tavara1 = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara1) tavara2 = Tavara("Moukari", 10) laukku.lisaa_tavara(tavara2) tavara3 = Tavara("Kivi", 3) laukku.lisaa_tavara(tavara3) laukku.raskain_tavara() """ laukku = Matkalaukku(25) tavara1 = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara1) tavara2 = Tavara("Moukari", 10) laukku.lisaa_tavara(tavara2) tavara3 = Tavara("Kivi", 3) laukku.lisaa_tavara(tavara3) try: r = laukku.raskain_tavara() except: self.fail(f"Varmista että seuraavan koodin suorittaminen onnistuu\n{koodi}") self.assertTrue(r.nimi() == "Moukari", f'Kun suoritetaan\n{koodi}\nmetodin pitäsi palauttaa {tavara2}, paluuarvo oli {r}')
def test7_matkalaukku_tulosta_tavarat2(self): try: from src.koodi import Tavara from src.koodi import Matkalaukku koodi = """ laukku = Matkalaukku(25) tavara1 = Tavara("Kivi", 1) tavara2 = Tavara("Maitotölkki", 1) laukku.lisaa_tavara(tavara1) laukku.lisaa_tavara(tavara2) tavara3 = Tavara("Vasara", 2) laukku.lisaa_tavara(tavara3) """ laukku = Matkalaukku(25) tavara1 = Tavara("Kivi", 1) tavara2 = Tavara("Maitotölkki", 1) laukku.lisaa_tavara(tavara1) laukku.lisaa_tavara(tavara2) tavara3 = Tavara("Vasara", 2) laukku.lisaa_tavara(tavara3) laukku.tulosta_tavarat() except Exception as e: self.assertTrue(False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi tulosta_tavarat(self) määritelty?') out = get_stdout() lines = [x for x in out.split('\n') if len(x)>0] self.assertTrue(3 == len(lines), f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa kolme riviä\nTulostus oli\n{out}') tt = [ f"{t}" for t in [tavara1, tavara2, tavara3]] odotettu = "\n".join(tt) self.assertTrue(sorted(lines) == sorted(tt), f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa\n{odotettu}\nTulostus oli\n{out}')
def test4_matkalaukku_lisaa_tavara(self): try: from src.koodi import Tavara from src.koodi import Matkalaukku koodi = """ laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) """ tavara = Tavara("Aapiskukko", 2) laukku = Matkalaukku(25) laukku.lisaa_tavara(tavara) except Exception as e: self.assertTrue(False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi lisaa_tavara(self, tavara) määritelty?') corr0 = "1 tavaraa (2 kg)" corr1 = "1 tavara (2 kg)" val = str(laukku) self.assertTrue(corr1 == val or corr0 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + f'Nyt metodi palauttaa merkkijonon\n{val}') corr0 = "1 tavaraa (2 kg)" corr1 = "1 tavara (2 kg)" val = str(laukku) self.assertTrue(corr1 == val or corr0 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + f'Nyt metodi palauttaa merkkijonon\n{val}') tavara2 = Tavara("Tiiliskivi", 5) try: laukku.lisaa_tavara(tavara2) except: self.fail(f"Varmista että seuraavan koodin suorittaminen onnistuu\n{koodi}") koodi += """tavara2 = Tavara("Tiiliskivi", 5) laukku.lisaa_tavara(tavara2) """ corr1 = "2 tavaraa (7 kg)" val = str(laukku) self.assertTrue(corr1 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + f'Nyt metodi palauttaa merkkijonon\n{val}') tavara3 = Tavara("iPhone", 1) laukku.lisaa_tavara(tavara3) koodi += """tavara3 = Tavara("iPhone", 1) laukku.lisaa_tavara(tavara3) """ corr1 = "3 tavaraa (8 kg)" val = str(laukku) self.assertTrue(corr1 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + f'Nyt metodi palauttaa merkkijonon\n{val}')
def test_6_tulosta_tavarat_ruumasta2(self): try: from src.koodi import Tavara from src.koodi import Matkalaukku from src.koodi import Lastiruuma ruuma = Lastiruuma(100) koodi = """ ruuma = Lastiruuma(50) laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) ruuma.lisaa_matkalaukku(laukku) laukku2 = Matkalaukku(10) laukku2.lisaa_tavara(Tavara("Kivi", 1)) laukku2.lisaa_tavara(Tavara("Hiiri", 2)) ruuma.lisaa_matkalaukku(laukku2) ruuma.tulosta_tavarat() """ ruuma = Lastiruuma(50) laukku = Matkalaukku(25) tavara1 = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara1) ruuma.lisaa_matkalaukku(laukku) laukku2 = Matkalaukku(10) tavara2 = Tavara("Kivi", 1) laukku2.lisaa_tavara(tavara2) tavara3 = Tavara("Hiiri", 2) laukku2.lisaa_tavara(tavara3) ruuma.lisaa_matkalaukku(laukku2) ruuma.tulosta_tavarat() except Exception as e: self.assertTrue( False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi tulosta_tavarat(self) määritelty?' ) out = get_stdout() self.assertTrue( 0 < len(out), f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa yksi rivi\nNyt ei tulosteta mitään' ) lines = [x for x in out.split('\n') if len(x) > 0] self.assertTrue( 3 == len(lines), f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa kolme riviä\nTulostus oli\n{out}' ) tt = [f"{t}" for t in [tavara1, tavara2, tavara3]] odotettu = "\n".join(tt) self.assertTrue( sorted(lines) == sorted(tt), f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa\n{odotettu}\nTulostus oli\n{out}' )
def test_5_ruumaan_ei_mene_liikaa(self): try: from src.koodi import Tavara from src.koodi import Matkalaukku from src.koodi import Lastiruuma ruuma = Lastiruuma(100) koodi = """ ruuma = Lastiruuma(10) laukku = Matkalaukku(25) tavara = Tavara("Alasin", 24) laukku.lisaa_tavara(tavara) ruuma.lisaa_matkalaukku(laukku) """ ruuma = Lastiruuma(10) laukku = Matkalaukku(25) tavara = Tavara("Alasin", 24) laukku.lisaa_tavara(tavara) ruuma.lisaa_matkalaukku(laukku) except Exception as e: self.assertTrue( False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi lisaa_matkalaukku(self, laukku) määritelty?' ) corr1 = "0 matkalaukkua, tilaa 10 kg" val = str(ruuma) self.assertTrue( corr1 == val, f"Metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + f'Nyt metodi palauttaa merkkijonon\n{val}\nHuomaa, että lastiruumaan ei saa laittaa liikaa tavaraa!' )
def test9_matkalaukku_raskain_tavara(self): try: from src.koodi import Tavara from src.koodi import Matkalaukku koodi = """ laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) laukku.raskain_tavara() """ laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) try: r = laukku.raskain_tavara() except: self.fail(f"Varmista että seuraavan koodin suorittaminen onnistuu\n{koodi}") except Exception as e: self.assertTrue(False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi raskain_tavara(self) määritelty?') try: r.nimi() except: koodi2 = """ laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) raskain = laukku.raskain_tavara() print(raskain.nimi()) """ self.fail(f"Palauttaahan metodi raskain_tavara(self) oikean tyyppisen olion? Varmista että seuraavan koodin suorittaminen onnistuu\n{koodi2}") self.assertTrue(r.nimi() == "Aapiskukko", f'Kun suoritetaan\n{koodi}\nmetodin pitäsi palauttaa {tavara}, paluuarvo oli {r}')
def test6_matkalaukku_tulosta_tavarat(self): try: from src.koodi import Tavara from src.koodi import Matkalaukku koodi = """ laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) laukku.tulosta_tavarat() """ laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) laukku.tulosta_tavarat() except Exception as e: self.assertTrue(False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi tulosta_tavarat(self) määritelty?') out = get_stdout() self.assertTrue(0<len(out), f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa yksi rivi\nNyt ei tulosteta mitään') lines = [x for x in out.split('\n') if len(x)>0] self.assertTrue(1 == len(lines), f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa yksi rivi\nTulostus oli\n{out}') odotettu = "Aapiskukko (2 kg)" self.assertTrue(out == odotettu, f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa\n{odotettu}\nTulostus oli\n{out}')
def test5_matkalaukkuun_ei_voi_lisata_liikaa(self): from src.koodi import Tavara from src.koodi import Matkalaukku koodi = """ laukku = Matkalaukku(4) tavara = Tavara("Tietosanakirja", 5) laukku.lisaa_tavara(tavara) """ laukku = Matkalaukku(4) tavara = Tavara("Tietosanakirja", 5) laukku.lisaa_tavara(tavara) corr1 = "0 tavaraa (0 kg)" val = str(laukku) self.assertTrue(corr1 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + f'Nyt metodi palauttaa merkkijonon\n{val}\nHuomaa, että matkalaukkuun ei saa lisätä sen kapasiteettia enempää tavaraa!') koodi = """ laukku = Matkalaukku(3) tavara1 = Tavara("Kivi", 1) tavara2 = Tavara("Maitotölkki", 1) laukku.lisaa_tavara(tavara1) laukku.lisaa_tavara(tavara2) tavara3 = Tavara("Vasara", 2) laukku.lisaa_tavara(tavara3) """ laukku = Matkalaukku(3) tavara1 = Tavara("Kivi", 1) tavara2 = Tavara("Maitotölkki", 1) laukku.lisaa_tavara(tavara1) laukku.lisaa_tavara(tavara2) tavara3 = Tavara("Vasara", 2) laukku.lisaa_tavara(tavara3) corr1 = "2 tavaraa (2 kg)" val = str(laukku) self.assertTrue(corr1 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + f'Nyt metodi palauttaa merkkijonon\n{val}\nHuomaa, että matkalaukkuun ei saa lisätä sen kapasiteettia enempää tavaraa!')
def test2_tavara_konstruktori(self): try: from src.koodi import Tavara tavara = Tavara("Aapiskukko", 2) except Exception as e: self.assertTrue( False, 'Luokan Tavara konstuktorin kutsuminen arvoilla Tavara("Aapiskukko", 2)' + f' palautti virheen: {e}\nVarmista että konstruktori on määritelty oikein' )
def test6_matkalaukku_paino(self): try: from src.koodi import Tavara from src.koodi import Matkalaukku koodi = """ laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) laukku.paino() """ laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) paino = laukku.paino() except Exception as e: self.assertTrue(False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi paino(self) määritelty?') self.assertTrue(paino == 2, f'Kun suoritetaan\n{koodi}\nmetodin pitäsi palauttaa 2, paluuarvo oli {paino}') koodi = """ laukku = Matkalaukku(25) tavara1 = Tavara("Kivi", 1) tavara2 = Tavara("Maitotölkki", 1) laukku.lisaa_tavara(tavara1) laukku.lisaa_tavara(tavara2) tavara3 = Tavara("Vasara", 2) laukku.lisaa_tavara(tavara3) paino = laukku.paino() """ laukku = Matkalaukku(25) tavara1 = Tavara("Kivi", 1) tavara2 = Tavara("Maitotölkki", 1) laukku.lisaa_tavara(tavara1) laukku.lisaa_tavara(tavara2) tavara3 = Tavara("Vasara", 2) laukku.lisaa_tavara(tavara3) paino = laukku.paino() self.assertTrue(paino == 4, f'Kun suoritetaan\n{koodi}\nmetodin pitäsi palauttaa 4, paluuarvo oli {paino}')
def test7_tavara_nimi_2(self): try: from src.koodi import Tavara koodi = """ tavara = Tavara("Kukko", 2) tavara.nimi() """ tavara = Tavara("Kukko", 2) p = tavara.nimi() except Exception as e: self.assertTrue( False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi nimi(self) määritelty?' ) self.assertTrue( p == "Kukko", f'Kun suoritetaan\n{koodi}\n, metodin pitäsi palauttaa Kukko, paluuarvo oli {p}' )
def test7_tavara_paino_2(self): try: from src.koodi import Tavara koodi = """ tavara = Tavara("Aapiskukko", 5) tavara.paino() """ tavara = Tavara("Aapiskukko", 5) p = tavara.paino() except Exception as e: self.assertTrue( False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi paino(self) määritelty?' ) self.assertTrue( p == 5, f'Kun suoritetaan\n{koodi}\n, metodin pitäsi palauttaa 5, paluuarvo oli {p}' )
def test4_aatribuutit_piilossa(self): from src.koodi import Tavara koodi = """ tavara = Tavara("Aapiskukko", 2) print(tavara.paino) """ ok = False tavara = Tavara("Aapiskukko", 2) try: v = tavara.paino except Exception as e: ok = True if not ok: self.assertFalse( type(v) == type(2), f'Koodin\n{koodi}\nsuorituksen ei pitäisi tulostaa tuotteen painoa. Tuotteen painon tulee olla kapseloitu' ) koodi = """ tavara = Tavara("Aapiskukko", 2) print(tavara.nimi) """ ok = False tavara = Tavara("Aapiskukko", 2) try: v = tavara.paino except Exception as e: ok = True if not ok: self.assertFalse( type(v) == type("LOL"), f'Koodin\n{koodi}\nsuorituksen ei pitäisi tulostaa tuotteen nimeä. Tuotteen nimen tulee olla kapseloitu' )
def test3_tavara_str(self): test_cases = [("Aapiskukko", 2), ("Moukari", 8), ("Kalajapullo", 1)] for test_case in test_cases: from src.koodi import Tavara tavara = Tavara(test_case[0], test_case[1]) corr = f'{test_case[0]} ({test_case[1]} kg)' val = str(tavara) self.assertEqual( corr, val, f"Metodin __str__ pitäisi palauttaa merkkijono\n{corr}\nkun olio luotiin kutsulla\n" + f'Tavara("{test_case[0]}", {test_case[1]})\nNyt metodi palauttaa merkkijonon\n{val}' )
def test6_matkalaukku_missa_yksi_tavara(self): from src.koodi import Tavara from src.koodi import Matkalaukku koodi = """ laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) """ tavara = Tavara("Aapiskukko", 2) laukku = Matkalaukku(25) laukku.lisaa_tavara(tavara) corr1 = "1 tavara (2 kg)" val = str(laukku) self.assertTrue(corr1 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + f'Nyt metodi palauttaa merkkijonon\n{val}\nLue tarkasti osan 3 tehtävänanot!')
def test4_ruuma_lisaa_tavara(self): try: from src.koodi import Tavara from src.koodi import Matkalaukku from src.koodi import Lastiruuma ruuma = Lastiruuma(100) koodi = """ ruuma = Lastiruuma(100) laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) ruuma.lisaa_matkalaukku(laukku) """ ruuma = Lastiruuma(100) laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) ruuma.lisaa_matkalaukku(laukku) except Exception as e: self.assertTrue( False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi lisaa_matkalaukku(self, laukku) määritelty?' ) corr1 = "1 matkalaukku, tilaa 98 kg" val = str(ruuma) self.assertTrue( corr1 == val, f"Metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + f'Nyt metodi palauttaa merkkijonon\n{val}') koodi = """ ruuma = Lastiruuma(50) laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) ruuma.lisaa_matkalaukku(laukku) laukku2 = Matkalaukku(10) laukku2.lisaa_tavara(Tavara("Kivi", 1)) laukku2.lisaa_tavara(Tavara("Hiiri", 2)) ruuma.lisaa_matkalaukku(laukku2) """ ruuma = Lastiruuma(50) laukku = Matkalaukku(25) tavara = Tavara("Aapiskukko", 2) laukku.lisaa_tavara(tavara) ruuma.lisaa_matkalaukku(laukku) laukku2 = Matkalaukku(10) laukku2.lisaa_tavara(Tavara("Kivi", 1)) laukku2.lisaa_tavara(Tavara("Hiiri", 2)) ruuma.lisaa_matkalaukku(laukku2) corr1 = "2 matkalaukkua, tilaa 45 kg" val = str(ruuma) self.assertTrue( corr1 == val, f"Metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + f'Nyt metodi palauttaa merkkijonon\n{val}')