def test5_testaa_attribuuttien_arvot(self): test_cases = [("Seitsemän veljestä", "Aleksis Kivi", "Romaani", 1870), ("Sinuhe egyptiläinen", "Mika Waltari", "Romaani", 1945), ("Kyberias", "Stanislaw Lem", "Sci-fi", 1965), ("Kotona maailmankaikkeudessa", "Esko Valtaoja", "Tiede", 2001)] for test_case in test_cases: with patch('builtins.input', side_effect=[ AssertionError("Syötteen pyytämistä ei odotettu") ]): reload_module(self.module) from src.kirja import Kirja kirja = Kirja(test_case[0], test_case[1], test_case[2], test_case[3]) attributes = ("nimi", "kirjoittaja", "genre", "kirjoitusvuosi") ref = reflect.Reflect() ref.set_object(kirja) for i in range(len(attributes)): value = ref.get_attribute(attributes[i]) self.assertEqual( value, test_case[i], f'Attribuutin {attributes[i]} arvon pitäisi olla {test_case[i]}, nyt se on {value},\n kun parametrit olivat \n{test_case}' )
def test6_testaa_kaapeli(self): test_cases = [("cat", 5.0, 128, True), ("USB2", 10.0, 24, True), ("BSU3", 25.0, 18, False)] for test_case in test_cases: with patch('builtins.input', side_effect=[ AssertionError("Syötteen pyytämistä ei odotettu") ]): reload_module(self.module) from src.kirjoita_luokat import Kaapeli kaapeli = Kaapeli(test_case[0], test_case[1], test_case[2], test_case[3]) attributes = ("malli", "pituus", "maksiminopeus", "kaksisuuntainen") ref = reflect.Reflect() ref.set_object(kaapeli) for i in range(len(attributes)): value = ref.get_attribute(attributes[i]) self.assertEqual( value, test_case[i], f'Attribuutin {attributes[i]} arvon pitäisi olla {test_case[i]}, nyt se on {value},\n kun parametrit olivat \n{test_case}' )
def test3_testaa_attribuutit(self): from src.havaintoasema import Havaintoasema a = Havaintoasema("Kumpula") ref = reflect.Reflect() ref.set_object(a) att_list = [ "havaintojen_maara", "viimeisin_havainto", "lisaa_havainto" ] for attribute in att_list: self.assertTrue( ref.has_attribute(attribute), f'Luokalla Havaitoasema pitäisi olla attribuutti ' + f'{attribute}.') att = ref.list_public_members() att.remove("havaintojen_maara") att.remove("viimeisin_havainto") att.remove("lisaa_havainto") self.assertEqual( len(att), 0, f'Luokalla Havaintoasema ei pitäisi olla muita julkisia jäseniä kuin ' + f'metodit havaintojen_maara, viimeisin_havainto ja lisaa_havainto.' + f'\nNyt sillä on lisäksi seuraavat julkiset jäsenet:\n' + f(att))
def test4_testaa_attribuuttien_tyypit(self): with patch('builtins.input', side_effect=[ AssertionError("Syötteen pyytämistä ei odotettu") ]): reload_module(self.module) from src.kirja import Kirja attributes = (("nimi", str), ("kirjoittaja", str), ("genre", str), ("kirjoitusvuosi", int)) for attr in attributes: ref = reflect.Reflect() ref.set_object( Kirja("Python 1", "Pekka Python", "Tietokirja", 2010)) name, taip = attr taip_name = str(taip).replace("<class '", "").replace("'>", "") taip2 = str(type(ref.get_attribute(name))).replace( "<class '", "").replace("'>", "") self.assertTrue( type(ref.get_attribute(name)) == taip, f"Attribuutin {name} tyypin pitäisi olla {taip_name}, nyt se on {taip2}" )
def test3_testaa_attribuutit(self): from src.palvelumaksu import Pankkitili a = Pankkitili("Testi", "12345", 1.0) ref = reflect.Reflect() ref.set_object(a) att_list = ["saldo", "talleta", "nosta"] for attribute in att_list: self.assertTrue( ref.has_attribute(attribute), f'Luokalla Havaitoasema pitäisi olla attribuutti ' + f'{attribute}.') att = ref.list_public_members() att.remove("saldo") att.remove("talleta") att.remove("nosta") self.assertEqual( len(att), 0, f'Luokalla Havaintoasema ei pitäisi olla muita julkisia jäseniä kuin ' + f'metodit saldo, talleta ja nosta.' + f'\nNyt sillä on lisäksi seuraavat julkiset jäsenet:\n' + f(att)) self.assertTrue( ref.has_attribute("_Pankkitili__palvelumaksu"), f'Luokalla pitäisi olla yksityinen metodi ' + f'__palvelumaksu(self)')
def test_3_nelio_ei_uusia_attribuutteja(self): from src.pinta_alat import Suorakulmio, Nelio a = Nelio(1) b = Suorakulmio(1, 2) ref = reflect.Reflect() ref.set_object(a) attr = ref.list_attributes(True) self.assertTrue( len(attr) == 3, f"Luokalle Nelio ei saa määritellä " + "uusia attribuutteja!")
def test3_testaa_attribuutit(self): with patch('builtins.input', side_effect=[ AssertionError("Syötteen pyytämistä ei odotettu") ]): reload_module(self.module) from src.kirjoita_luokat import Muistilista, Asiakas, Kaapeli attributes = ("otsikko", "merkinnat") for attr in attributes: ref = reflect.Reflect() ref.set_object(Muistilista("lista", [])) self.assertTrue( ref.has_attribute(attr), f"Palautetulla oliolla pitäisi olla attribuutti {attr}," + f'\nnyt attribuutit ovat\n{f(ref.list_attributes(True))}\nkun konstruktoria kutsuttiin parametreilla' + f'Muistilista("lista",[])') attributes = ("tunniste", "saldo", "alennusprosentti") for attr in attributes: ref = reflect.Reflect() ref.set_object(Asiakas("asiakas", 1.0, 1)) self.assertTrue( ref.has_attribute(attr), f"Palautetulla oliolla pitäisi olla attribuutti {attr}," + f'\nnyt attribuutit ovat\n{f(ref.list_attributes(True))}\nkun konstruktoria kutsuttiin parametreilla' + f'Asiakas("asiakas", 1.0, 1)') attributes = ("malli", "pituus", "maksiminopeus", "kaksisuuntainen") for attr in attributes: ref = reflect.Reflect() ref.set_object(Kaapeli("kaapeli", 1.0, 1, True)) self.assertTrue( ref.has_attribute(attr), f"Palautetulla oliolla pitäisi olla attribuutti {attr}," + f'\nnyt attribuutit ovat\n{f(ref.list_attributes(True))}\nkun konstruktoria kutsuttiin parametreilla' + f'Kaapeli("kaapeli",1.0,1,True)')
def test_4_havainnointimetodit(self): from src.superryhma import SuperSankari, SuperRyhma ref = reflect.Reflect() ryhma = SuperRyhma("Ryhmä", "Helsinki") ref.set_object(ryhma) ryhma_attr = ref.list_attributes(True) attr_list = ("nimi", "kotipaikka") for attr in attr_list: self.assertTrue( attr in ryhma_attr, f'Luokalla SuperRyhma pitäisi olla ' + f'havainnointimetodi {attr}!\nVarmista, että attribuutti ' + 'on määritelty.')
def test_3_attribuutit_suojattu(self): from src.superryhma import SuperSankari, SuperRyhma ref = reflect.Reflect() ryhma = SuperRyhma("Ryhmä", "Helsinki") ref.set_object(ryhma) ryhma_attr = ref.list_attributes(True) attr_list = ("_nimi", "_kotipaikka", "_jasenet") for attr in attr_list: self.assertTrue( attr in ryhma_attr, f'Luokalla SuperRyhma pitäisi olla ' + f'suojattu attribuutti {attr}.\nVarmista, että attribuutti ' + 'on määritelty.')
def test_2_metodit_olemassa(self): from src.iteroitava_kauppalista import Kauppalista ref = reflect.Reflect() lista = Kauppalista() ref.set_object(lista) if not ref.has_attribute("__getitem__"): self.assertTrue( ref.has_attribute("__iter__"), f'Luokalla Kauppalista ' + 'pitäisi olla metodi __iter__, jotta iterointi toimii.') self.assertTrue( ref.has_attribute("__next__"), f'Luokalla Kauppalista ' + 'pitäisi olla metodi __next__, jotta iterointi toimii.')
def test3_testaa_attribuutit(self): from src.aanite import Aanite a = Aanite(1) ref = reflect.Reflect() ref.set_object(a) att = ref.list_public_members() self.assertTrue(ref.has_attribute("pituus"), f'Luokalla aanite pitäisi olla julkinen havainnointimetodi pituus') att.remove("pituus") self.assertEqual(len(att), 0, f'Luokalla Aanite ei pitäisi olla muita julkisia jäseniä kuin ' + f'asetus- ja havainnointimetodit pituudelle. Nyt sillä on lisäksi seuraavat julkiset jäsenet:\n'+ f(att))
def test_9_kapselointi_1(self): from src.raha import Raha ref = reflect.Reflect() r = Raha(1,50) ref.set_object(r) attr = ref.list_attributes(True) for att in attr: if not att.startswith("_"): self.fail('Luokalla ei pitäisi olla muita kuin kapseloituja ' + f'attribuutteja. Nyt sillä on julkinen' + f' attribuutti {att}') r.eurot = 1000 test = "1000.50 eur" self.assertTrue(str(r) != test, f'Lausekkeen raha.eurot = 1000 ei ' + f'pitäisi asettaa olion rahat arvoa, koska arvon pitäisi olla kapseloitu!')
def test3_testaa_attribuutit(self): with patch('builtins.input', side_effect=[ AssertionError("Syötteen pyytämistä ei odotettu") ]): reload_module(self.module) from src.kirja import Kirja attributes = ("nimi", "kirjoittaja", "genre", "kirjoitusvuosi") for attr in attributes: ref = reflect.Reflect() ref.set_object( Kirja("Python 1", "Pekka Python", "Tietokirja", 2010)) self.assertTrue( ref.has_attribute(attr), f"Palautetulla oliolla pitäisi olla attribuutti {attr}," + f'\nnyt attribuutit ovat\n{f(ref.list_attributes(True))}\nkun konstruktoria kutsuttiin parametreilla' + f'Kirja("Python 1", "Pekka Python", "Tietokirja", 2010)')
def test_2_lahja_toimii(self): test_cases = [("Pallo", 1), ("Leikkijuna",2), ("Polkupyörä", 5), ("Kitara", 3), ("Auto", 2000)] for test_case in test_cases: ref = reflect.Reflect() from src.lahjapakkaus import Lahja lahja = Lahja(test_case[0], test_case[1]) ref.set_object(lahja) for att in ("nimi", "paino"): self.assertTrue(ref.has_attribute(att), f'Luokalla Pallo pitäisi olla ' + f'attribuutti nimeltä {att}') self.assertEqual(lahja.nimi, test_case[0], f'Attribuutin nimi arvon pitäisi olla ' + f'{test_case[0]}, kun olio on alustettu näin:\n' + f'Lahja("{test_case[0]}", {test_case[1]})') self.assertEqual(lahja.paino, test_case[1], f'Attribuutin paino arvon pitäisi olla ' + f'{test_case[1]}, kun olio on alustettu näin:\n' + f'Lahja("{test_case[0]}", {test_case[1]})')
def test3_testaa_attribuutit(self): with patch('builtins.input', side_effect=[ AssertionError("Syötteen pyytämistä ei odotettu") ]): reload_module(self.module) uusi_lemmikki = load(exercise, function, 'fi') attributes = ("nimi", "laji", "syntymavuosi") for attr in attributes: ref = reflect.Reflect() ref.set_object(uusi_lemmikki("Musti", "koira", 1970)) self.assertTrue( ref.has_attribute(attr), f"Palautetulla Lemmikki-oliolla pitäisi olla attribuutti {attr}," + f'\nnyt attribuutit ovat\n{f(ref.list_attributes(True))}\nkun funktiota kutsuttiin parametreilla ("Musti","koira",1970)' )
def test4_testaa_attribuuttien_tyypit(self): with patch('builtins.input', side_effect=[ AssertionError("Syötteen pyytämistä ei odotettu") ]): reload_module(self.module) uusi_lemmikki = load(exercise, function, 'fi') attributes = (("nimi", str), ("laji", str), ("syntymavuosi", int)) for attr in attributes: ref = reflect.Reflect() ref.set_object(uusi_lemmikki("Musti", "koira", 1970)) name, taip = attr taip2 = str(type(ref.get_attribute(name))).replace( "<class '", "").replace("'>", "") self.assertTrue( type(ref.get_attribute(name)) == taip, f"Attribuutin {name} tyypin pitäisi olla {taip}, nyt se on {taip2}" )
def test5_testaa_asiakas(self): test_cases = [("Arto Asiakas", 1424.50, 10), ("Anne Asiakas", 550.0, 7), ("Aune Asiakas", 240.25, 15)] for test_case in test_cases: with patch('builtins.input', side_effect=[ AssertionError("Syötteen pyytämistä ei odotettu") ]): reload_module(self.module) from src.kirjoita_luokat import Asiakas asiakas = Asiakas(test_case[0], test_case[1], test_case[2]) attributes = ("tunniste", "saldo", "alennusprosentti") ref = reflect.Reflect() ref.set_object(asiakas) for i in range(len(attributes)): value = ref.get_attribute(attributes[i]) self.assertEqual( value, test_case[i], f'Attribuutin {attributes[i]} arvon pitäisi olla {test_case[i]}, nyt se on {value},\n kun parametrit olivat \n{test_case}' )
def test4_testaa_muistikirja(self): test_cases = [("Laskut", ["Muista vuokra", "Muista puhelinlasku"]), ("Kauppalista", ["Maito", "Leipä", "Mehu", "Viili"])] for test_case in test_cases: with patch('builtins.input', side_effect=[ AssertionError("Syötteen pyytämistä ei odotettu") ]): reload_module(self.module) from src.kirjoita_luokat import Muistilista lista = Muistilista(test_case[0], test_case[1]) attributes = ("otsikko", "merkinnat") ref = reflect.Reflect() ref.set_object(lista) for i in range(len(attributes)): value = ref.get_attribute(attributes[i]) self.assertEqual( value, test_case[i], f'Attribuutin {attributes[i]} arvon pitäisi olla {test_case[i]}, nyt se on {value},\n kun parametrit olivat \n{test_case}' )
def test5_testaa_attribuuttien_arvot(self): test_cases = [("Musti", "koira", 1970), ("Viiru", "kissa", 1986), ("Tiku", "orava", 1999), ("Dumbo", "norsu", 1963)] for test_case in test_cases: with patch('builtins.input', side_effect=[ AssertionError("Syötteen pyytämistä ei odotettu") ]): reload_module(self.module) uusi_lemmikki = load(exercise, function, 'fi') val = uusi_lemmikki(test_case[0], test_case[1], test_case[2]) attributes = ("nimi", "laji", "syntymavuosi") ref = reflect.Reflect() ref.set_object(val) for i in range(len(attributes)): value = ref.get_attribute(attributes[i]) self.assertEqual( value, test_case[i], f'Attribuutin {attributes[i]} arvon pitäisi olla {test_case[i]}, nyt se on {value},\n kun parametrit olivat {test_case}' )