/**
  * Testaa sitä, pysyykö kokonaisuuden on_lapsia-arvo mukana, kun
  * lapsikokonaisuus luodaan, poistetaan tai sen isäntää muutetaan. Lisäksi
  * testaa, antaako metodi on_lapsia_kokon()-metodi oikeat arvot.
  * 
  */
 function testaa_kokon_on_lapsia_muutokset()
 {
     $this->lisaa_lihava_kommentti("============ Testataan on_lapsia-arvon muutokset ==================");
     // Tarkistetaan on_lapsia-arvot kokonaisuuksilta kokon2 ja kokon3,
     // joilla siis ei pitäisi olla lapsia. Tarkistetaan samalla, että
     // funktion on_lapsia_kokon() antaa oikean vastauksen.
     // Huom! Näissä === ei toiminut!
     if ($this->kokon2 instanceof Kokonaisuusolio) {
         if ($this->kokon2->getOn_lapsia() == 0 && $this->kokon3->getOn_lapsia() == 0 && !$this->kokon3->on_lapsia_kokon()) {
             $this->lisaa_kommentti("Oikein! Kokon2 ja kokon3 ovat lapsettomia!" . " Lisäksi on_lapsia_kokon()-metodi antaa oikean vastauksen!");
         } else {
             $this->lisaa_virheilmoitus("Virhe kokon2:n tai kokon3:n " . "on_lapsia-arvossa tai on_lapsia_kokon()-metodin arvossa!" . " Kokon2_on_lapsia=" . $this->kokon2->getOn_lapsia() . " ja kokon3_on_lapsia=" . $this->kokon3->getOn_lapsia());
         }
     } else {
         $this->lisaa_virheilmoitus("Virhe kokon2 ei ole Kokonaisuusolio!");
     }
     // Lisätään uusi kokonaisuus, jonka isäntä on kokon3:
     $ylakokon_id = $this->kokon3->get_id();
     $palauteolio = $this->luo_testikokonaisuus("Huu", "Haa", $ylakokon_id);
     $testilapsikokon = new Kokonaisuusolio($palauteolio->get_muokatun_id(), $this->tietokantaolio);
     if ($testilapsikokon->olio_loytyi_tietokannasta) {
         $this->lisaa_kommentti("Testilapsikokonaisuuden tallennus ok!");
         // Tarkistetaan, että on_lapsia-arvo on muuttunut kokon3:lla ja
         // on_lapsia_kokon näyttää positiivista:
         // Päivitetään ensin arvot tietokannasta:
         $this->kokon3->paivita_olion_tiedot_tietokannasta();
         if ($this->kokon3->getOn_lapsia() == 1 && $this->kokon3->on_lapsia_kokon()) {
             $this->lisaa_kommentti("Oikein! kokon3:n lapsiarvo=1 ja " . "on_lapsia_kokon()-metodi palaute true!");
         } else {
             $this->lisaa_virheilmoitus("Virhe kokon3:n on_lapsia-arvossa! (=" . $this->kokon3->getOn_lapsia() . ") tai " . "on_lapsia_kokon()-metodin palautteessa");
         }
         // Muutetaan isäntä kokon2:seen:
         $this->lisaa_kommentti("Vaihdetaan isäntä kokon2:seen.");
         $uusi_isanta_id = $this->kokon2->get_id();
         $testilapsikokon->setYlakokonaisuuden_id($uusi_isanta_id);
         $testilapsikokon->tallenna_muutokset();
         // Tarkistetaan, että on_lapsia-arvot kohdillaan entisessä
         // ja uudessa isännässä:
         $this->lisaa_kommentti("Tarkistetaan, onko on-lapsia arvot " . " kohdallaan kokon2:ssa ja kokon3:ssa.");
         $this->kokon2->paivita_olion_tiedot_tietokannasta();
         $this->kokon3->paivita_olion_tiedot_tietokannasta();
         if ($this->kokon2->getOn_lapsia() == 1 && $this->kokon3->getOn_lapsia() == 0) {
             $this->lisaa_kommentti("Oikein! Kokon3 on lapseton ja kokon2 ei!");
         } else {
             $this->lisaa_virheilmoitus("Virhe kokon2:n tai kokon3:n " . "on_lapsia-arvossa! Kokon2_on_lapsia=" . $this->kokon2->getOn_lapsia() . " ja kokon3_on_lapsia=" . $this->kokon3->getOn_lapsia());
         }
         // Tehdään vielä poisto ja tarkistetaan isännän lapsettomuus:
         $this->lisaa_kommentti("Poistetaan testilapsi, jolloin kokon2:n" . " pitäisi taas olla lapseton:");
         $testilapsikokon->poista();
         $this->kokon2->paivita_olion_tiedot_tietokannasta();
         if ($this->kokon2->getOn_lapsia() == 0) {
             $this->lisaa_kommentti("Oikein! Kokon2 on taas lapseton!");
         } else {
             $this->lisaa_virheilmoitus("Virhe kokon2:n " . "on_lapsia-arvossa! Kokon2_on_lapsia=" . $this->kokon2->getOn_lapsia());
         }
     } else {
         $this->lisaa_virheilmoitus("Virhe testilapsikokonaisuuden tallennuksessa!");
     }
     $this->lisaa_lihava_kommentti("============ Loppuu on_lapsia-arvon muutosten testaus ========");
 }