コード例 #1
0
    def test_lauta(self):
        with patch('builtins.input', side_effect=["2"] * 100):
            for koko in range(3, 60):
                reload_module(self.module)
                output_alussa = get_stdout()
                clear_stdout()
                self.module.shakkilauta(koko)
                output_all = get_stdout().replace(output_alussa, '', 1)

                output = [
                    l for l in output_all.split("\n") if len(l.strip()) > 0
                ]

                self.assertTrue(
                    len(output_all) > 0,
                    f"Funktiokutsu shakkilauta({koko}) ei tulosta mitään")
                acual = '\n'.join(output)
                self.assertEqual(
                    koko, len(output),
                    f"Funktiokutsun shakkilauta({koko}) pitäisi tulostaa {koko} riviä, nyt se tulosti {len(output)} riviä, tulostus oli\n{acual}"
                )
                for i in range(koko):
                    rivi = "10" * koko if i % 2 == 0 else "01" * koko
                    rivi = rivi[0:koko]
                    self.assertEqual(
                        rivi, output[i].strip(),
                        f"Funktiokutsun shakkilauta({koko}) rivin {i} pitäisi olla {rivi}, nyt se on\n{output[i]}\nfunktion koko tulostus oli\n{acual}"
                    )
コード例 #2
0
 def test_funktio_olemassa(self):
     try:
         clear_stdout()
         self.module.shakkilauta(2)
     except:
         self.assertTrue(
             False,
             f"koodistasi pitäisi löytyä funktio nimeltään shakkilauta jota pystyy kutsumaan seuraavasti shakkilauta(2)"
         )
コード例 #3
0
 def test_funktio_olemassa(self):
     try:
         self.module.nelio("", 0)
     except:
         self.assertTrue(False, f'koodistasi pitäisi löytyä funktio nimeltään nelio')
     try:
         clear_stdout()
         self.module.nelio("ab", 2)
     except:
         self.assertTrue(False, f'Varmista että seuraava onnistuu\nnelio("ab", 3)')
コード例 #4
0
 def test_funktio_olemassa(self):
     with patch('builtins.input', side_effect=["2"] * 10):
         try:
             clear_stdout()
             self.module.keskiarvo(1, 2, 3)
         except:
             self.assertTrue(
                 False,
                 f"koodistasi pitäisi löytyä funktio nimeltään keskiarvo jota pystyy seuraavasti keskiarvo(1,2,3)"
             )
コード例 #5
0
 def test_funktio_olemassa(self):
     with patch('builtins.input',
                side_effect=[
                    AssertionError(
                        "tässä tehtävässä ei odotettu syötteen lukemista")
                ]):
         try:
             clear_stdout()
             self.module.tulosta_monesti("testi", 2)
         except:
             self.assertTrue(
                 False,
                 f'koodistasi pitäisi löytyä funktio nimeltään tulosta_monesti jota pystyy kutsumaan seuraavasti tulosta_monesti("testi", 2)'
             )
コード例 #6
0
 def test_seitseman(self):
     veljekset = [
         "Aapo",
         "Eero",
         "Juhani",
         "Lauri",
         "Simeoni",
         "Timo",
         "Tuomas"
     ]
     clear_stdout()
     self.module.seitseman_veljesta()
     output_all = get_stdout()
     output = output_all.split('\n')
     self.assertTrue(len(output_all)>0, f"Funktion seitseman_veljesta kutsuminen ei tulosta mitään")
     self.assertEqual(7, len(output), f"Funktion seitseman_veljesta kutsumisen pitäisi tulostaa 7 riviä, nyt se tulosti {len(output)} riviä, tulostus oli\n{output_all}")
     for i in range(7):
          self.assertEqual(veljekset[i], output[i].strip(), f"Funktion seitseman_veljesta kutsumisen rivin {i+1} tulostuksen pitäisi olla\n{veljekset[i]}\ntulostus oli\n{output[i]}")
コード例 #7
0
    def test_nelio(self):
        for sana, koko in [("ab", 3), ("abc", 5), ("python", 15), ('qwerty', 37), ('123456789', 100)]:
            with patch('builtins.input', side_effect=["2"] * 100):
                reload_module(self.module)
                output_alussa = get_stdout()
                clear_stdout()
                try:
                    self.module.nelio(sana, koko)
                except:
                    self.assertTrue(False, f'Varmista että seuraava onnistuu\nnelio("{sana}", {koko})')

                output_all = get_stdout().replace(output_alussa, '', 1)
                
                output = [l for l in output_all.split("\n") if len(l.strip())>0 ]
                rivit = textwrap.wrap(sana*(koko*koko), koko)[0:koko]

                self.assertTrue(len(output_all)>0, f'Funktiokutsu  nelio("{sana}", {koko}) ei tulosta mitään')
                acual = '\n'.join(output)
                self.assertEqual(len(rivit), len(output), f'Funktiokutsun  nelio("{sana}", {koko}) pitäisi tulostaa {koko} riviä, nyt se tulosti {len(output)} riviä, tulostus oli\n{acual}')
                
                for i in range(koko):
                    self.assertEqual(rivit[i], output[i].strip(), f'Funktiokutsun nelio("{sana}", {koko}) rivin {i} tulostuksen pitäisi olla {rivit[i]}, nyt se on\n{output[i]}\nfunktion koko tulostus oli\n{acual}')
コード例 #8
0
    def test_lasku_oikein(self):

        for l1, l2, l3 in [(5, 3, 1), (10, 1, 1), (1, 1, 2), (-3, 7, 21),
                           (5, 44, 21), (0, 0, 0), (-9, 22, 1021)]:
            with patch('builtins.input', side_effect=["2"] * 10):
                reload_module(self.module)
                output_alussa = get_stdout()
                clear_stdout()
                self.module.keskiarvo(l1, l2, l3)
                output_all = get_stdout().replace(output_alussa, '', 1)

                output = [
                    l for l in output_all.split("\n") if len(l.strip()) > 0
                ]

                inpt = ', '.join(str(i) for i in [l1, l2, l3])

                self.assertTrue(
                    len(output_all) > 0,
                    f"Funktiokutsu keskiarvo({inpt}) ei tulosta mitään")
                acual = '\n'.join(output)
                self.assertEqual(
                    1, len(output),
                    f"Funktiokutsun keskiarvo({inpt}) pitäisi tulostaa vain 1 rivi, nyt se tulosti {len(output)} riviä, tulostus oli\n{acual}"
                )
                expctd = (l1 + l2 + l3) / 3
                try:
                    was = float(acual.strip())
                except:
                    self.assertFalse(
                        True,
                        f"Funktiokutsun keskiarvo({inpt}) pitäisi tulostaa {expctd}, funktion tulostus\n{acual}\nei ole muutettavissa likukuluvuksi!"
                    )

                self.assertAlmostEqual(
                    expctd, was, 2,
                    f"Funktiokutsun keskiarvo({inpt}) pitäisi tulostaa {expctd}, nyt se tulosti\n{was}"
                )
コード例 #9
0
    def test_tulostukset_kunnossa(self):
        test_data = [("testi", 2), ("python", 7), ("suo kuokka ja jussi", 4),
                     ("martti luther ja muovipussi", 12),
                     ("koodistasi pitäisi löytyä funktio", 10),
                     ("viimeinen testi", 20)]

        for mj, lkm in test_data:
            with patch(
                    'builtins.input',
                    side_effect=[
                        AssertionError(
                            "tässä tehtävässä ei odotettu syötteen lukemista")
                    ]):
                reload_module(self.module)
                output_alussa = get_stdout()
                clear_stdout()
                self.module.tulosta_monesti(mj, lkm)
                output_all = get_stdout().replace(output_alussa, '', 1)

                output = [
                    l for l in output_all.split("\n") if len(l.strip()) > 0
                ]

                self.assertTrue(
                    len(output_all) > 0,
                    f'Funktiokutsu monta_tulostusta("{mj}", {lkm}) ei tulosta mitään'
                )
                acual = '\n'.join(output)
                self.assertEqual(
                    lkm, len(output),
                    f'Funktiokutsun monta_tulostusta("{mj}", {lkm}) pitäisi tulostaa {lkm} riviä, nyt se tulosti {len(output)} riviä, tulostus oli\n{acual}'
                )
                for i in range(lkm):
                    self.assertEqual(
                        mj, output[i].strip(),
                        f'Funktiokutsun monta_tulostusta("{mj}", {lkm}) jokaisen tulostusrivin pitäisi olla {mj}, seuraava rivi tulostuu väärin:\n{output[i]}\nfunktion koko tulostus oli:\n{acual}'
                    )
コード例 #10
0
 def test_funktio_olemassa(self):
     try:
         clear_stdout()
         self.module.seitseman_veljesta()
     except:
         self.assertTrue(False, f"koodistasi pitäisi löytyä funktio nimeltään seitseman_veljesta jota pystyy kutsumaan seuraavasti:\nseitseman_veljesta()")