#Før programmet kjøres bør python colored library lastes ned. #Skriv inn følgende i terminal (kun 1 gang): pip install colored #https://pypi.org/project/colored/ from skolesystem import Skolesystem from elev import Elev from klasse import Klasse from trinn import Trinn from hus import Hus from skole import Skole from colored import fg, bg, attr feilmelding = fg(196) riktig = fg(118) res = attr(0) tittel = bg(55) + fg('white') def testNone(testobjekt): if testobjekt is None: return False return True def testElever(): print(tittel + "TESTER KLASSEN ELEV" + res) harry = Elev("Harry Potter", 12) hermine = Elev("Hermine Grang", 12) if harry is not None and hermine is not None: print(riktig +"{:60}{}".format("Oppretting av elev-objekter", "OK")+res) else: print(feilmelding +"{:60}{}".format("Elevene ble ikke opprettet", "NOT OK")+res) assert harry.hentNavn() == harry._navn, feilmelding +"Navn ble ikke hentet riktig"+res assert hermine.hentNavn() == hermine._navn, feilmelding +"Navn ble ikke hentet riktig"+res assert not (hermine.hentNavn() == "Draco"), feilmelding +"Navn ble ikke hentet riktig"+res print(riktig +"{:60}{}".format("Henting av navn til elev-objekter", "OK")+res) print() def testKlasse(): print(tittel + "TESTER KLASSEN KLASSE" + res) ny_klasse = Klasse() if testNone(ny_klasse): print(riktig +"{:60}{}".format("Oppretting av klasse ", "OK")+res) else: print(feilmelding+"Klassen ble ikke opprettet!"+res) #Lager elev-objekter og legger til for antall in range(25): elev = Elev("Test Elev", 23) assert ny_klasse.leggTilElev(elev), feilmelding+ "Elev nr "+antall +"ble ikke lagt til i klassen"+res print(riktig +"{:60}{}".format("Elever legges til i klassen", "OK")+res) #Tester returnering av lengde if ny_klasse.returnerAntall() == 25: print(riktig +"{:60}{}".format("Antall elever lagt til i klassen", "OK")+res) else: print(feilmelding +"{:60}{}".format("Ikke lagt til riktig antall elever!", "NOT OK")+res) #Tester legg til 1 elev mario = Elev("Mario", 34) ny_klasse.leggTilElev(mario) assert ny_klasse.returnerAntall() == 26, feilmelding+"Ikke lagt til riktig antall elever!"+res #Tester finnElev assert ny_klasse.finnElev("Mario") != None, feilmelding+"Finner ikke eleven"+res assert ny_klasse.finnElev("Hannah") == None, feilmelding+"finnElev() fungerer ikke riktig!"+res print(riktig +"{:60}{}".format("Finne elev i klasse etter navn ", "OK")+res) #Tester fjerning av elever i klassen ny_klasse.fjernElev(mario) assert ny_klasse.returnerAntall() == 25, feilmelding+"fjernElev() fungerer ikke riktig!"+res print(riktig +"{:60}{}".format("Fjerne en elev via objekt ", "OK")+res) #Tester fjern på navn ny_klasse.fjernPaNavn("Test Elev") assert ny_klasse.returnerAntall() == 24, feilmelding+"Ikke lagt til riktig antall elever!"+res #Tester maks antall i klassen (Når dette kallet kjøres, avsluttes hele testKlasse()) for e in range(30): ny_elev = Elev("Ny Elev", 13) if (ny_klasse.leggTilElev(ny_elev) == False) and (ny_klasse.returnerAntall() == ny_klasse.hentMaksAntall()): print(riktig +"{:60}{}".format("Maks antall elever ", "OK")+res) return elif ny_klasse.leggTilElev(ny_elev) and (ny_klasse.returnerAntall() > ny_klasse.hentMaksAntall()): print(feilmelding +"{:60}{}".format("feil i leggTilElev(), overskrider maksgrense ", "OK")+res) else: ny_klasse.leggTilElev(ny_elev) def testTrinn(): print() print(tittel + "TESTER KLASSEN TRINN" + res) nytt_trinn = Trinn("forste") ny_klasse = Klasse() #Tester legg til klasse nytt_trinn.leggTilKlasse(ny_klasse) assert nytt_trinn.antallKlasser() == 1, feilmelding+"Ikke lagt til riktig antall klasse!"+res print(riktig +"{:60}{}".format("Lagt til en klasse på trinnet ", "OK")+res) #Tester legge til elever på trinnet for antall in range(100): ny_elev = Elev ("Navn Navnesen", 13) nytt_trinn.leggTilElevIKlasse(ny_elev) assert nytt_trinn.antallKlasser() == 3, feilmelding+"Ikke lagt til riktig antall klasse!"+res print(riktig +"{:60}{}".format("Lagt til 100 elever på trinnet ", "OK")+res) #Tester opptelling av studenter assert nytt_trinn.antallElever() == 100, feilmelding+"Ikke riktig antall elever på trinnet!"+res print(riktig +"{:60}{}".format("Opptelling av antall elever på trinnet", "OK")+res) print() def testHus(): print(tittel + "TESTER KLASSEN HUS" + res) #Tester opprettelse av hus nytt_hus = Hus("TestHus", "Testing", "unittest", "Svart") if nytt_hus.antallTrinn() == 7: print(riktig +"{:60}{}".format("Riktig antall trinn i huset", "OK")+res) else: print(feilmelding +"{:60}{}".format("Feil antall trinn i huset", "NOT OK")+res) #Tester legge til elev i første trinn ny_elev = Elev("Test Testensen", 12) nytt_hus.leggTilElev(ny_elev, "forste") assert nytt_hus.antallKlasserPaTrinn("forste") == 1, feilmelding+"Antall klasser på trinnet ikke riktig!"+res print(riktig +"{:60}{}".format("Antall klasser på første trinn etter ny elev", "OK")+res) #Tester legge til flere elever på andre trinn for antall in range(100): elev = Elev("Test Tester", 12) nytt_hus.leggTilElev(elev, "andre") assert nytt_hus.antallKlasserPaTrinn("andre") == 3, feilmelding+"Antall klasser på trinnet ikke riktig!"+res print(riktig +"{:60}{}".format("Antall klasser på andre trinn etter 100 nye elever", "OK")+res) #Tester antall elver på trinn if nytt_hus.antallEleverPaTrinn("forste") == 1: if nytt_hus.antallEleverPaTrinn("andre") == 100: print(riktig +"{:60}{}".format("Antall elever på begge trinn", "OK")+res) else: print(feilmelding+"{:60}{}".format("Ikke riktig antall elver på andre trinn", "NOT OK")+res) else: print(feilmelding+"{:60}{}".format("Ikke riktig antall elver på forste trinn", "NOT OK")+res) #Tester antall elever i huset assert nytt_hus.antallEleveriHus() == 101, feilmelding+"Antall elever i huset ikke riktig!"+res print(riktig +"{:60}{}".format("Antall elever i huset", "OK")+res) print() def testSkole(): print(tittel + "TESTER KLASSEN SKOLE" + res) #Tester legge til hus i skolen ny_skole = Skole("Ny skole") nytt_hus = Hus("TestHus", "Testing", "unittest", "Svart") nyere_hus = Hus("TestHus", "Testing", "unittest", "Svart") ny_skole.leggTilHus("Nytt Hus", nytt_hus) ny_skole.leggTilHus("Nyere Hus", nyere_hus) assert ny_skole.antallHus() == 2, feilmelding+"Antall hus i skolen ikke riktig!"+res print(riktig +"{:60}{}".format("Antall hus", "OK")+res) #Tester innrullering av elev på ett trinn elev = Elev("Test Tester", 12) ny_skole.innrullerElev(elev, "Nytt Hus", "forste") assert ny_skole.antallEleveriHus("Nytt Hus") == 1, feilmelding+"Antall elever i Nytt Hus ikke riktig!"+res #Tester innrullering av flere elever på ett trinn for antall in range(100): elev = Elev("Test Tester", 12) ny_skole.innrullerElev(elev, "Nyere Hus", "andre") ny_skole.innrullerElev(elev, "Nyere Hus", "forste") assert ny_skole.antallEleveriHus("Nyere Hus") == 200, feilmelding+"Antall elever i Nyere Hus ikke riktig!"+res print(riktig +"{:60}{}".format("Innrullering av elever i hus", "OK")+res) #Tester antall elever på trinn assert ny_skole.antallEleverPaTrinn("Nytt Hus", "forste" ) == 1, feilmelding+"Antall elever i Nytt Hus ikke riktig!"+res assert ny_skole.antallEleverPaTrinn("Nyere Hus", "forste" ) == 100, feilmelding+"Antall elever i Nytt Hus ikke riktig!"+res print(riktig +"{:60}{}".format("Telle antall elever per trinn", "OK")+res) def testprogram(): testElever() testKlasse() testTrinn() testHus() testSkole() testprogram()