예제 #1
0
    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}'
                    )
예제 #2
0
    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))
예제 #4
0
    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}"
                )
예제 #5
0
    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)')
예제 #6
0
 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!")
예제 #7
0
    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.')
예제 #10
0
    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.')
예제 #11
0
    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))
예제 #12
0
    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!')
예제 #13
0
    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]})')
예제 #15
0
    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)'
                )
예제 #16
0
    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}"
                )
예제 #17
0
    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}'
                    )
예제 #18
0
    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}'
                    )
예제 #19
0
    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}'
                    )