def test_jarruta_tarvittaessa(self): """ Testaa Kaytosmalli luokan metodia jarruta_tarvittaessa() """ eka = Yksilo(60,60) eka.voima = Vector(100,100) toka = Yksilo(70,60) self.kaytosmalli.lisaa_yksilo(eka) self.kaytosmalli.lisaa_yksilo(toka) self.kaytosmalli.jarruta_tarvittaessa(eka) self.assertEqual(Vector(0,0),eka.voima, "ei jarruta oikein") eka.voima = Vector(100,100) toka.paikka = Vector(85,60) self.kaytosmalli.jarruta_tarvittaessa(eka) self.assertEqual(Vector(100,100),eka.voima, "jarruttaa vaikka ei pitaisi")
def test_paivita_paikat(self): """ Testaa Kaytosmalli luokan metodia paivita_paikat() """ eka = Yksilo(60,60) eka.voima = Vector(100,100) toka = Yksilo(70,60) self.kaytosmalli.lisaa_yksilo(eka) self.kaytosmalli.lisaa_yksilo(toka) self.kaytosmalli.paivita_paikat() self.assertEqual(toka.paikka, Vector(70,60), "ohausvoima 0, muuttaa silti paikkaa") self.assertNotEqual(eka.paikka, Vector(60,60), "ohausvoima != 0, ei muuta silti paikkaa") eka.paikka = self.kaytosmalli.KOHDE + Vector(1,0) self.kaytosmalli.paivita_paikat() self.assertEqual(len(self.kaytosmalli.yksilo_lista), 1, "ei poista yksiloa listasta vaikka on lahella kohdetta")
def test_paivita_kartta(self): """ Testaa Kartta-luokan metodia paivita_kartta() paivittymista visuaalisesti. Arpoo yksiloille uusia paikkoja. Jalleen huono testi """ yksilo_lista = [] for i in range(0,3): paikka_x = random.randint(10,390) paikka_y = random.randint(10,390) yksilo = Yksilo(paikka_x,paikka_y,5) yksilo_lista.append(yksilo) while (self.kartta.paivita_kartta(yksilo_lista)): for yksilo in yksilo_lista: yksilo.paikka[0] = random.randint(380,390) yksilo.paikka[0] = random.randint(380,390)
def test_laske_seeking(self): """ Testaa Kaytosmalli luokan metodia laske_seeking() """ eka = Yksilo(0,0) #ylospain maksimivoimalla eka.paikka = self.kaytosmalli.KOHDE - Vector(0,-40) ohjausvoima = self.kaytosmalli.laske_seeking(eka) ohjausvoima_tarkistus = eka.max_nopeus * (self.kaytosmalli.KOHDE - eka.paikka).normalize() self.assertEqual(ohjausvoima_tarkistus,ohjausvoima, "liikkuminen maksiminopeudella ylospain ei toimi") #alaspain maksimivoimalla eka.paikka = self.kaytosmalli.KOHDE + Vector(0,-40) ohjausvoima = self.kaytosmalli.laske_seeking(eka) ohjausvoima_tarkistus = eka.max_nopeus * (self.kaytosmalli.KOHDE - eka.paikka).normalize() self.assertEqual(ohjausvoima_tarkistus,ohjausvoima, "liikkuminen maksiminopeudella alaspain ei toimi") #vinottain eka.paikka = self.kaytosmalli.KOHDE + Vector(-100,-40) ohjausvoima = self.kaytosmalli.laske_seeking(eka) ohjausvoima_tarkistus = eka.max_nopeus * (self.kaytosmalli.KOHDE - eka.paikka).normalize() self.assertEqual(ohjausvoima_tarkistus,ohjausvoima, "liikkuminen vinottain ei toimi")
def test_onko_edessa(self): """ Testaa Kaytosmalli luokan metodia onko_edessa() """ eka = Yksilo(0,0) toka = Yksilo(10,0) self.kaytosmalli.lisaa_yksilo(eka) self.kaytosmalli.lisaa_yksilo(toka) #katsoo suoraan kohti eka.suunta = Vector(1,0) self.assertEqual(True,self.kaytosmalli.onko_edessa(eka,toka.paikka),"onko_edessa vaara arvo kun naapuri suoraan edessa") #katsoo vastakkaiseen suuntaan eka.suunta = Vector(-1,0) self.assertEqual(False,self.kaytosmalli.onko_edessa(eka,toka.paikka),"onko_edessa vaara arvo kun naapuri suoraan takana") #pitaisi olla viela katsealueella mutta ei suoraan edessa x = 2. eka.suunta = Vector(0,1) toka.paikka = Vector(x,10) self.assertEqual(True,self.kaytosmalli.onko_edessa(eka,toka.paikka),"onko_edessa vaara arvo kun naapuri viela katsealueella") #pitaisi olla viela katsealueella mutta ei suoraan edessa x = -2. eka.suunta = Vector(0,1) toka.paikka = Vector(x,10) self.assertEqual(True,self.kaytosmalli.onko_edessa(eka,toka.paikka),"onko_edessa vaara arvo kun naapuri viela katsealueella (negatiivinen)") #ei pitaisi olla enaa katsealueella mutta ei suoraan edessa x = math.tan(math.radians(Input.KATSEALUE/2.))*Input.MIN_JARRUTUSETAISYYS + 0.1 eka.suunta = Vector(0,1) toka.paikka = Vector(x,Input.MIN_JARRUTUSETAISYYS) self.assertEqual(False,self.kaytosmalli.onko_edessa(eka,toka.paikka),"onko_edessa vaara arvo kun naapuri ei ole enaa katsealueella")
def setUp(self): self.yksilo = Yksilo(100,100)
class Test(unittest.TestCase): def setUp(self): self.yksilo = Yksilo(100,100) def test_jarruta(self): """ Tarkastaa etta voimavektori on pienempi jarrutuksen jalkeen. Jarrutus tarkoittaa siis ohjausvoimavektorin pituuden lyhentamista """ self.yksilo.voima = Vector(1,1) alkuperainen_pituus = self.yksilo.voima.length() self.yksilo.jarruta() jarrutus_pituus = self.yksilo.voima.length() self.assertTrue(alkuperainen_pituus > jarrutus_pituus, "Jarrutus ei toimi oikein") def test_katkaise_vektori(self): """ Tarkastaa etta vektori lyhennetaan tarvittaessa ja etta sita ei lyhenneta kun ei tarvitse. """ vektori = Vector(3,3) alkuperainen_pituus = vektori.length() maksimi_pienempi = 0.5*alkuperainen_pituus maksimi_isompi = 2*alkuperainen_pituus self.yksilo.katkaise_vektori(vektori,maksimi_pienempi) self.assertTrue(vektori.length() == maksimi_pienempi, "Vektorin katkaisu ei toimi") vektori = Vector(3,3) self.yksilo.katkaise_vektori(vektori,maksimi_isompi) self.assertTrue(vektori.length() == alkuperainen_pituus, "Vektorin katkaisemattomuus ei toimi") def test_laske_uusi_paikka(self): """ Testaa liikkeen positiivisiin ja negatiivisiin x,y suuntiin sekä että nollavektorilla ei tule virheitä """ #positiivien x self.yksilo.paikka = Vector(100,100) self.yksilo.voima = Vector(1,0) uusi_paikkavektori = self.yksilo.laske_uusi_paikka() self.assertEqual(uusi_paikkavektori,Vector(101,100), "oikealle liike ei toimi") self.yksilo.nopeus=Vector(0,0) #negatiivinen x self.yksilo.paikka = Vector(100,100) self.yksilo.voima = Vector(-1,0) uusi_paikkavektori = self.yksilo.laske_uusi_paikka() self.assertEqual(uusi_paikkavektori,Vector(99,100), "vasemmalle liike ei toimi") self.yksilo.nopeus=Vector(0,0) #positiivien y self.yksilo.paikka = Vector(100,100) self.yksilo.voima = Vector(0,1) uusi_paikkavektori = self.yksilo.laske_uusi_paikka() self.assertEqual(uusi_paikkavektori,Vector(100,101), "ylospain liike ei toimi") self.yksilo.nopeus=Vector(0,0) #negatiivinen y self.yksilo.paikka = Vector(100,100) self.yksilo.voima = Vector(0,-1) uusi_paikkavektori = self.yksilo.laske_uusi_paikka() self.assertEqual(uusi_paikkavektori,Vector(100,99), "alaspain liike ei toimi") self.yksilo.nopeus=Vector(0,0) #nollavoimavektori self.yksilo.paikka = Vector(100,100) self.yksilo.voima = Vector(0,0) uusi_paikkavektori = self.yksilo.laske_uusi_paikka() self.assertEqual(uusi_paikkavektori,Vector(100,100), "nollavektori ei toimi") self.yksilo.nopeus=Vector(0,0)