예제 #1
0
  /*
   * Testaa merge() ja mergeBottomUp() minimikekojen tulos
   */
  @Test
  public void testaaKekoLopputuloksetBothMergetTest() {
    int summa = instanssiT2.getHeapSize() + instanssiT1.getHeapSize();
    instanssiMergeBottomUp = Dkeko.mergeBottomUp(instanssiT1, instanssiT2);

    instanssiT1 = new Dkeko(2);
    instanssiT2 = new Dkeko(5);
    for (int i = 900; i > 400; i--) {
      solmuMerge = new Solmu(i);
      instanssiT2.insert(solmuMerge);
    }
    for (int i = 400; i >= 0; i--) {
      solmuMerge = new Solmu(i);
      instanssiT1.insert(solmuMerge);
    }
    instanssi = Dkeko.merge(instanssiT1, instanssiT2);

    for (int i = 0; i < instanssi.getHeapSize(); i++) {
      assertEquals(instanssi.deleteMin().getValue(), instanssiMergeBottomUp.deleteMin().getValue());
    }
  }
예제 #2
0
  /**
   * 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());
      }
    }
  }
예제 #3
0
  /**
   * 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());
  }
예제 #4
0
 /** Testaa deleteMin() odotettu lopputulos,keko palauttaa null, koska keko tyhja */
 @Test
 public void tyhjakekodeleteMinTest() {
   assertNull(instanssi2.findMin());
   assertNull(instanssi2.deleteMin());
 }