/** * Testaa DecreaseKey() odotettu lopputulos,keko palauttaa -1, koska keossa ei ole parametrina * annettua solmun arvoa */ @Test public void arvoaEiLoydyKekoDecreaseKeyTest() { assertNull(instanssi5.findMin()); solmu = new Solmu(3); instanssi5.insert(solmu); assertEquals(solmu.getValue(), instanssi5.findMin().getValue()); Kekoalkio alkio = new Kekoalkio(solmu1); assertEquals(-1, instanssi5.decreaseKey(alkio, 0)); }
/** * Testaa DecreaseKey() odotettu lopputulos,keko palauttaa -1, koska parametrina annettua solmun * arvoa yritetaan kasvattaa keossa */ @Test public void increaseYritysDecreaseKeyTest() { assertNull(instanssi5.findMin()); solmu = new Solmu(3); instanssi5.insert(solmu); assertEquals(solmu.getValue(), instanssi5.findMin().getValue()); Kekoalkio alkio = instanssi5.findKekoalkio(solmu); assertEquals(-1, instanssi5.decreaseKey(alkio, 4)); }
/** Testaa findMin odotettu lopputulos ,palauttaa yhden Solmu olion joka pysyy keossa. */ @Test public void yksiSolmuKekoFindMinTest() { assertEquals(null, instanssi2.findMin()); instanssi2.insert(solmu1); assertEquals(1, solmu1.getValue()); assertNotNull(instanssi2.findMin()); assertEquals(solmu1.getValue(), instanssi2.findMin().getValue()); assertNotNull(instanssi2.findMin()); assertEquals(solmu1.getValue(), instanssi2.findMin().getValue()); }
/** * Testaa insert() odotettu lopputulos,kekoon onnistuu useamman kuin haarautumisaste solmun * lisääminen solmun arvo valitaan satunnaisesti keko on kekoehdon mukaisesti ehyt lisäyksen * jälkeen palauttaa tarkistuksessa oikean minimikeon arvon */ @Test public void haarautumisaste2RandomSolmuaInsertTest() { assertEquals(solmuNull, instanssi2.findMin()); for (int i = 0; i < 29; i++) { solmuarvo = generator.nextInt(Integer.MAX_VALUE); if (pienin > solmuarvo) { pienin = solmuarvo; } solmu = new Solmu(solmuarvo); instanssi2.insert(solmu); assertEquals(pienin, instanssi2.findMin().getValue()); } }
/** Testaa DecreaseKey() odotettu lopputulos,keko palauttaa -1, koska keko on tyhja */ @Test public void tyhjaKekoDecreaseKeyTest() { assertNull(instanssi5.findMin()); solmu = new Solmu(3); Kekoalkio alkio = new Kekoalkio(solmu); assertEquals(-1, instanssi5.decreaseKey(alkio, 2)); }
/** * Testaa insert() odotettu lopputulos,kekoon onnistuu useamman kuin haarautumisaste solmun * lisääminen keko on kekoehdon mukaisesti ehyt lisäyksen jälkeen palauttaa tarkistuksessa oikean * minimikeon arvon */ @Test public void haarautumisaste2ViisiSolmuaInsertTest() { assertEquals(solmuNull, instanssi2.getMin()); assertEquals(2, instanssi2.getAste()); // isommasta pienempään järjestyksessä for (int i = 4; i >= 0; i--) { solmu = new Solmu(i); instanssi2.insert(solmu); assertEquals(solmu.getValue(), instanssi2.findMin().getValue()); } // pienemmästä isompaan solmu järjestyksessä instanssi2 = Dkeko.makeHeap(solmuarvo2); assertEquals(solmuNull, instanssi2.findMin()); for (int i = 0; i < 5; i++) { solmu = new Solmu(i); instanssi2.insert(solmu); assertEquals(0, instanssi2.findMin().getValue()); } }
/** * Testaa deleteMin() odotettu lopputulos,keko palauttaa solmu kerrallaan kunnes keko on * tyhjä.keon minimisolmun arvo tarkistetaan ennen ja jälkeen deleteMin operaatioita.Sen arvon * tulee olla eri ennen ja jälkeen testin */ @Test public void aste20RandomDeleteMinTest() { assertEquals(solmuNull, instanssi20.getMin()); for (int i = 0; i < 9260; i++) { solmuarvo = generator.nextInt(); if (pienin > solmuarvo) { pienin = solmuarvo; } solmu = new Solmu(solmuarvo); instanssi20.insert(solmu); assertEquals(pienin, instanssi20.findMin().getValue()); } while (instanssi20.getHeapSize() != 0) { pienin = instanssi20.findMin().getValue(); assertEquals(pienin, instanssi20.deleteMin().getValue()); if (instanssi20.getHeapSize() != 0) { assertTrue(pienin != instanssi20.findMin().getValue()); } } }
/** * Testaa decreaseKey odotettu lopputulos,keossa olevan solmun arvon pienentäminen onnistuu ja * solmusta tulee keon pienin alkio */ @Test public void aste5RandomDecreaseKeyTest() { assertEquals(solmuNull, instanssi5.findMin()); for (int i = 0; i < 59; i++) { solmuarvo = generator.nextInt(Integer.MAX_VALUE); if (pienin > solmuarvo) { pienin = solmuarvo; } if (suurin < solmuarvo) { suurin = solmuarvo; } solmu = new Solmu(solmuarvo); instanssi5.insert(solmu); assertEquals(pienin, instanssi5.findMin().getValue()); } instanssi5.deleteMin(); assertTrue(pienin != instanssi5.findMin().getValue()); solmu1.setValue(suurin); Kekoalkio alkio = instanssi5.findKekoalkio(solmu1); instanssi5.decreaseKey(alkio, pienin); assertEquals(pienin, instanssi5.findMin().getValue()); }
/** * Testaa findMin odotettu lopputulos ,palauttaa yhden Solmu olion arvolla 0,pysyy koko ajan keon * pienimpänä joka pysyy keossa.Asetetaan solmut järjestyksessä pienemmästä suurempaan */ @Test public void keossa012SolmuSolmuKekoFindMinTest() { assertEquals(null, instanssi2.findMin()); instanssi2.insert(solmu); assertEquals(0, solmu.getValue()); assertNotNull(instanssi2.findMin()); assertEquals(solmu.getValue(), instanssi2.findMin().getValue()); instanssi2.insert(solmu1); assertEquals(1, solmu1.getValue()); assertNotNull(instanssi2.findMin()); assertEquals(solmu.getValue(), instanssi2.findMin().getValue()); instanssi2.insert(solmu2); assertEquals(2, solmu2.getValue()); assertNotNull(instanssi2.findMin()); assertEquals(solmu.getValue(), instanssi2.findMin().getValue()); assertNotNull(instanssi2.findMin()); assertEquals(solmu.getValue(), instanssi2.findMin().getValue()); }
/** * Testaa mergeBottomUp() t1 >== t2 odotettu tulos: palauttaa uuden keko olion, jonka * haarautumisaste on sama kuin t2 annetun keon haarautumisaste keot samankokoisia,mutta eri * haarautumisaste.suurempi valitaan */ @Test public void testaaT1T2YhtasuuriaMergeBottomUpTest() { for (int i = 900; i > 400; i--) { solmu = new Solmu(i); instanssi5.insert(solmu); } for (int i = 400; i >= 0; i--) { solmu = new Solmu(i); instanssi2.insert(solmu); } int summa = instanssi5.getHeapSize() + instanssi2.getHeapSize(); instanssi = Dkeko.mergeBottomUp(instanssi2, instanssi5); assertEquals(0, instanssi.findMin().getValue()); assertEquals(instanssi5.getAste(), instanssi.getAste()); assertEquals(summa, instanssi.getHeapSize()); }
/** * Testaa mergeBottomUp() t1 > t2 odotettu tulos: palauttaa uuden keko olion, jonka keon aste on * sama kuin suuremman parametrina annetun keon aste */ @Test public void testaaT1SuurempiMergeBottomUpTest() { for (int i = 12; i >= 3; i--) { solmu = new Solmu(i); instanssi5.insert(solmu); } for (int i = 2; i >= 1; i--) { solmu = new Solmu(i); instanssi2.insert(solmu); } int summa = instanssi5.getHeapSize() + instanssi2.getHeapSize(); instanssi = Dkeko.mergeBottomUp(instanssi5, instanssi2); assertEquals(1, instanssi.findMin().getValue()); assertEquals(instanssi5.getAste(), instanssi.getAste()); assertEquals(summa, instanssi.getHeapSize()); }
/** Testaa deleteMin() odotettu lopputulos,keko palauttaa null, koska keko tyhja */ @Test public void tyhjakekodeleteMinTest() { assertNull(instanssi2.findMin()); assertNull(instanssi2.deleteMin()); }
/** * Testaa insert() odotettu lopputulos ,kekoon onnistuu yhden solmun lisäys keko on kekoehdon * mukaisesti ehyt lisäyksen jälkeen palauttaa tarkistuksessa oikean minimikeon arvon */ @Test public void haarautumisaste5YksiSolmuInsertTest() { assertEquals(solmuNull, instanssi5.getMin()); instanssi5.insert(solmu); assertEquals(solmu.getValue(), instanssi5.findMin().getValue()); }
/** Testaa findMin odotettu lopputulos ,palauttaa null */ @Test public void tyhjaKekoFindMinTest() { assertEquals(null, instanssi2.findMin()); assertEquals(null, instanssi3.findMin()); assertEquals(null, instanssi5.findMin()); }