Skip to content
Snippets Groups Projects
Commit a0c500ed authored by tornhale's avatar tornhale
Browse files

H5

parent cc79d34f
Branches tyo5
No related tags found
No related merge requests found
No preview for this file type
......@@ -71,8 +71,20 @@ public class Genre {
this.nimi = esim[rand.nextInt(3)];
}
/**
* Luo olion testejä varten
* @return Genre satunnaisilla arvoilla
*/
public static Genre testiGenre() {
Genre g = new Genre();
Random rand = new Random();
g.nimi = g.esim[rand.nextInt(3)];
g.rekisteroi();
return g;
}
/**
* Palauttaa genren nimen
* @return Genren nimi
*/
public String getNimi() {
......@@ -80,7 +92,7 @@ public class Genre {
}
/**
* palauttaa genren id:n
* Palauttaa genren id:n
* @return Genren id
*/
public int getId() {
......
......@@ -28,17 +28,32 @@ public class GenreRelaatio {
* esim. palauttaa kaikkien kirjojen id:t, joiden genre on fantasia
* @param genreId Genren id, jonka perusteella haetaan kirjojen id:itä
* @return Kaikkien niiden kirjojen id:t, joiden genren id on genreId
* TODO testit
* <pre name="test">
* #import java.util.ArrayList;
* GenreRelaatio gr = new GenreRelaatio();
* gr.lisaa(new KirjanGenre(1, 2));
* int[] t = gr.haeKirjat(2);
* t[0] === 1;
* TODO lisää testejä
* Kirja k = Kirja.testiKirja();
* Kirja k1 = Kirja.testiKirja();
* Kirja k2 = Kirja.testiKirja();
* Genre g = Genre.testiGenre();
* Genre g2 = Genre.testiGenre();
*
* gr.lisaa(new KirjanGenre(k, g));
* gr.lisaa(new KirjanGenre(k1, g));
* gr.lisaa(new KirjanGenre(k2, g));
* gr.lisaa(new KirjanGenre(k, g2));
* ArrayList<Integer> al = gr.haeKirjat(g.getId());
* int i = al.get(0);
* int i1 = al.get(1);
* int i2 = al.get(2);
* i === k.getId();
* i1 === k1.getId();
* i2 === k2.getId();
* al.size() === 3;
* </pre>
*/
public ArrayList<Integer> haeKirjat(int genreId) {
//if (alkiot.length() <= 0) throw new IndexOutOfBoundsException();
ArrayList<Integer> kirjojenIdt = new ArrayList<Integer>();
alkiot.iter = alkiot.getEka();
......@@ -46,7 +61,7 @@ public class GenreRelaatio {
for (int i = 0; i < alkiot.length(); i++) {
KirjanGenre alkio = alkiot.iter.getSisalto();
if (alkio.getGenreId() == genreId) {
kirjojenIdt.add(alkio.getGenreId());
kirjojenIdt.add(alkio.getKirjaId());
}
alkiot.iter = alkiot.iter.getNext();
}
......@@ -60,10 +75,31 @@ public class GenreRelaatio {
* eli toisin sanoen palauttaa tietyn kirjan kaikkien genrejen id:t
* @param kirjaId Kirjan id, jonka perusteella haetaan genrejen id:itä
* @return Kaikkien niiden genrejen id:t, joiden kirjan id on kirjaId
* TODO testit
* <pre name="test">
* GenreRelaatio gr = new GenreRelaatio();
* Kirja k = Kirja.testiKirja();
* Kirja k2 = Kirja.testiKirja();
* Genre g = Genre.testiGenre();
* Genre g1 = Genre.testiGenre();
* Genre g2 = Genre.testiGenre();
*
* gr.lisaa(new KirjanGenre(k, g2));
* gr.lisaa(new KirjanGenre(k, g));
* gr.lisaa(new KirjanGenre(k, g1));
* gr.lisaa(new KirjanGenre(k2, g));
* ArrayList<Integer> al = gr.haeGenret(k.getId());
* int i = al.get(0);
* int i1 = al.get(1);
* int i2 = al.get(2);
* i === g2.getId();
* i1 === g.getId();
* i2 === g1.getId();
*
* al.size() === 3;
* </pre>
*/
public ArrayList<Integer> haeGenret(int kirjaId) {
//if (alkiot.length() <= 0) throw new IndexOutOfBoundsException(); ??? tämä ei mahdollista
ArrayList<Integer> genrejenIdt = new ArrayList<Integer>();
alkiot.iter = alkiot.getEka();
......
......@@ -9,6 +9,34 @@ import java.util.NoSuchElementException;
* - Lisää ja poistaa kirjoja
* - Lukee ja kirjoittaa tiedostoon
* - Etsii ja lajittelee
* <pre name="test">
* #import java.util.NoSuchElementException;
* Genret g = new Genret();
* Genre g1 = Genre.testiGenre();
* Genre g2 = Genre.testiGenre();
* Genre g3 = Genre.testiGenre();
*
* g.lisaa(g1);
* g.lisaa(g2);
* g.lisaa(g3);
*
* Genre g4 = new Genre();
* g4.parse(g1.toString());
*
* g.onOlemassa(g4.getNimi()) === true;
*
* g.haeIdNimella(g1.getNimi()) === g1.getId();
* g.haeIdNimella(g2.getNimi()) === g2.getId();
* g.haeIdNimella(g3.getNimi()) === g3.getId();
*
* g.hae(g1.getId()).toString() === g1.getNimi();
* g.hae(g2.getId()).toString() === g2.getNimi();
* g.hae(g3.getId()).toString() === g3.getNimi();
*
* int g1Id = g1.getId();
* g.poista(g1Id);
* g.hae(g1Id); #THROWS NoSuchElementException
* </pre>
*/
public class Genret {
private ArrayList<Genre> alkiot = new ArrayList<Genre>();
......@@ -28,9 +56,14 @@ public class Genret {
}
private int haeIdNimella(String nimi) {
/**
* Hakee genren id:n nimen perusteella
* @param nimi Nimi, jonka perusteella id haetaan
* @return Genren id, -1 jos ei löydy
*/
public int haeIdNimella(String nimi) {
for (int i = 0; i < alkiot.size(); i++) {
if (alkiot.get(i).getNimi() == nimi) return alkiot.get(i).getId();
if (alkiot.get(i).getNimi().toLowerCase().contentEquals(nimi.toLowerCase())) return alkiot.get(i).getId();
}
return -1;
}
......@@ -59,8 +92,9 @@ public class Genret {
*/
public boolean onOlemassa(String nimi) {
for (int i = 0; i < alkiot.size(); i++) {
if (alkiot.get(i).getNimi() == nimi) {
if (alkiot.get(i).getNimi().toLowerCase().contentEquals(nimi.toLowerCase())) {
return true;
}
}
return false;
......
......@@ -83,6 +83,21 @@ public class Kirja {
}
/**
* Apumetodi, jolla saadaan luotua kirjaolio testejä varten
* @return Kirja satunnaisilla arvoilla
*/
public static Kirja testiKirja() {
Kirja k = new Kirja();
k.rekisteroi();
Random rand = new Random();
k.nimi = "Hobitti" + rand.nextInt(10);
k.kirjoittaja = "J.R.R. Tolkien";
k.kirjasarja = "";
k.sivumaara = rand.nextInt(1000);
return k;
}
/**
* @return palauttaa kirjan id:n
*/
......@@ -107,18 +122,5 @@ public class Kirja {
}
/**
* Testausta varten
* @param args ei käytössä
*/
public static void main(String[] args) {
Kirja k = new Kirja();
k.rekisteroi();
k.esimerkkiKirja();
k.tulosta(System.out);
Kirja k1 = new Kirja();
k1.rekisteroi();
k1.esimerkkiKirja();
k1.tulosta(System.out);
}
}
......@@ -44,7 +44,6 @@ public class Kirjasto {
}
}
// TODO haku ja poisto genreRelaatioille ???
/**
* @param idnro Haettavan kirjan id
......
......@@ -8,6 +8,38 @@ import java.util.NoSuchElementException;
* - Lisää ja poistaa kirjoja
* - Lukee ja kirjoittaa tiedostoon (sitten joskus)
* - Etsii ja lajittelee (sitten joskus)
* <pre name="test">
* #import java.util.NoSuchElementException;
* #THROWS NoSuchElementException
* Kirjat kirjat = new Kirjat();
*
* Kirja k1 = new Kirja();
* Kirja k2 = new Kirja();
* Kirja k3 = new Kirja();
* k1.parse("Hobitti1 |J.R.R. Tolkien||336");
* k2.parse("Hobitti2 |J.R.R. Tolkien||336");
* k3.parse("Hobitti3 |J.R.R. Tolkien||336");
*
*
* try {
* kirjat.lisaa(k1);
* kirjat.lisaa(k2);
* kirjat.lisaa(k3);
* } catch (SailoException e) {
* e.printStackTrace();
* }
*
*
* kirjat.hae(k1.getId()).getNimi() === "Hobitti1";
* kirjat.hae(k3.getId()).getNimi() === "Hobitti3";
* kirjat.hae(0); #THROWS NoSuchElementException
* kirjat.hae(5); #THROWS NoSuchElementException
*
* int k2Id = k2.getId();
* kirjat.poista(k2Id);
* kirjat.hae(k2Id); #THROWS NoSuchElementException
*
* </pre>
*/
public class Kirjat {
private int maxLkm = 8;
......@@ -18,6 +50,22 @@ public class Kirjat {
/**
* @param kirja Lisättävä kirja
* @throws SailoException Heittää, jos lisääminen ei onnistu
* <pre name="test">
* Kirja kirja = new Kirja();
* Kirjat kirjat = new Kirjat();
* try {
* for (int i = 0; i < 8; i++) {
* kirjat.lisaa(kirja);
* kirjat.getLkm() === i + 1;
* }
* kirjat.getLkm() === 8;
* } catch (SailoException e) {
* System.out.println("Comtest heittaa virheita, jos ei ole trycatchia");
* }
* kirjat.lisaa(kirja); #THROWS SailoException
*
*
* </pre>
*/
public void lisaa(Kirja kirja) throws SailoException {
if (this.lkm >= this.alkiot.length) throw new SailoException("Liikaa alkioita");
......@@ -31,7 +79,6 @@ public class Kirjat {
* Poistaa kirjan annetulla id:llä
* @param id Poistettavan kirjan id
* @throws NoSuchElementException Jos id:tä vastaavaa kirjaa ei löydy
* TODO testit
*/
public void poista(int id) throws NoSuchElementException {
for (int i = 0; i < alkiot.length; i++) {
......@@ -39,7 +86,7 @@ public class Kirjat {
for (int j = i; j < alkiot.length - 1; j++) {
alkiot[j] = alkiot[j + 1];
}
alkiot[alkiot.length] = null;
alkiot[alkiot.length - 1] = null;
this.lkm--;
return;
}
......@@ -51,12 +98,11 @@ public class Kirjat {
* Hakee kirjan id:n perusteella
* @param id Halutun kirjan id
* @return Viite kirjaan halutulla id:llä
* @throws NoSuchElementException
* TODO testit
* @throws NoSuchElementException Jos Id:tä vastaavaa kirjaa ei löydy
*/
public Kirja hae(int id) throws NoSuchElementException {
for (int i = 0; i < alkiot.length; i++) {
for (int i = 0; i < this.lkm; i++) {
if (alkiot[i].getId() == id) return alkiot[i];
}
......
package Kirjalista.test;
// Generated by ComTest BEGIN
import java.util.ArrayList;
import static org.junit.Assert.*;
import org.junit.*;
import Kirjalista.*;
......@@ -8,7 +9,7 @@ import tietorakenne.LinkattuLista;
/**
* Test class made by ComTest
* @version 2025.03.05 22:52:50 // Generated by ComTest
* @version 2025.03.13 19:08:29 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
......@@ -17,12 +18,51 @@ public class GenreRelaatioTest {
// Generated by ComTest BEGIN
/** testHaeKirjat33 */
/** testHaeKirjat31 */
@Test
public void testHaeKirjat33() { // GenreRelaatio: 33
public void testHaeKirjat31() { // GenreRelaatio: 31
GenreRelaatio gr = new GenreRelaatio();
gr.lisaa(new KirjanGenre(1, 2));
int[] t = gr.haeKirjat(2);
assertEquals("From: GenreRelaatio line: 37", 1, t[0]);
Kirja k = Kirja.testiKirja();
Kirja k1 = Kirja.testiKirja();
Kirja k2 = Kirja.testiKirja();
Genre g = Genre.testiGenre();
Genre g2 = Genre.testiGenre();
gr.lisaa(new KirjanGenre(k, g));
gr.lisaa(new KirjanGenre(k1, g));
gr.lisaa(new KirjanGenre(k2, g));
gr.lisaa(new KirjanGenre(k, g2));
ArrayList<Integer> al = gr.haeKirjat(g.getId());
int i = al.get(0);
int i1 = al.get(1);
int i2 = al.get(2);
assertEquals("From: GenreRelaatio line: 48", k.getId(), i);
assertEquals("From: GenreRelaatio line: 49", k1.getId(), i1);
assertEquals("From: GenreRelaatio line: 50", k2.getId(), i2);
assertEquals("From: GenreRelaatio line: 51", 3, al.size());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testHaeGenret78 */
@Test
public void testHaeGenret78() { // GenreRelaatio: 78
GenreRelaatio gr = new GenreRelaatio();
Kirja k = Kirja.testiKirja();
Kirja k2 = Kirja.testiKirja();
Genre g = Genre.testiGenre();
Genre g1 = Genre.testiGenre();
Genre g2 = Genre.testiGenre();
gr.lisaa(new KirjanGenre(k, g2));
gr.lisaa(new KirjanGenre(k, g));
gr.lisaa(new KirjanGenre(k, g1));
gr.lisaa(new KirjanGenre(k2, g));
ArrayList<Integer> al = gr.haeGenret(k.getId());
int i = al.get(0);
int i1 = al.get(1);
int i2 = al.get(2);
assertEquals("From: GenreRelaatio line: 94", g2.getId(), i);
assertEquals("From: GenreRelaatio line: 95", g.getId(), i1);
assertEquals("From: GenreRelaatio line: 96", g1.getId(), i2);
assertEquals("From: GenreRelaatio line: 98", 3, al.size());
} // Generated by ComTest END
}
\ No newline at end of file
package Kirjalista.test;
// Generated by ComTest BEGIN
import java.util.NoSuchElementException;
import static org.junit.Assert.*;
import org.junit.*;
import Kirjalista.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2025.03.13 19:30:50 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
public class GenretTest {
// Generated by ComTest BEGIN
/** testGenret12 */
@Test
public void testGenret12() { // Genret: 12
Genret g = new Genret();
Genre g1 = Genre.testiGenre();
Genre g2 = Genre.testiGenre();
Genre g3 = Genre.testiGenre();
g.lisaa(g1);
g.lisaa(g2);
g.lisaa(g3);
Genre g4 = new Genre();
g4.parse(g1.toString());
assertEquals("From: Genret line: 26", true, g.onOlemassa(g4.getNimi()));
assertEquals("From: Genret line: 28", g1.getId(), g.haeIdNimella(g1.getNimi()));
assertEquals("From: Genret line: 29", g2.getId(), g.haeIdNimella(g2.getNimi()));
assertEquals("From: Genret line: 30", g3.getId(), g.haeIdNimella(g3.getNimi()));
assertEquals("From: Genret line: 32", g1.getNimi(), g.hae(g1.getId()).toString());
assertEquals("From: Genret line: 33", g2.getNimi(), g.hae(g2.getId()).toString());
assertEquals("From: Genret line: 34", g3.getNimi(), g.hae(g3.getId()).toString());
int g1Id = g1.getId();
g.poista(g1Id);
try {
g.hae(g1Id);
fail("Genret: 38 Did not throw NoSuchElementException");
} catch(NoSuchElementException _e_){ _e_.getMessage(); }
} // Generated by ComTest END
}
\ No newline at end of file
package Kirjalista.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import Kirjalista.*;
// Generated by ComTest END
* @version 2025.03.10 18:15:06 // Generated by ComTest
package Kirjalista.test;
/**
* Test class made by ComTest
* @version 2025.03.10 18:15:06 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
public class KirjanGenreTest {
}
\ No newline at end of file
package Kirjalista.test;
// Generated by ComTest BEGIN
import java.util.NoSuchElementException;
import static org.junit.Assert.*;
import org.junit.*;
import Kirjalista.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2025.03.13 19:42:50 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
public class KirjatTest {
// Generated by ComTest BEGIN
/** testKirjat11 */
@Test
public void testKirjat11() { // Kirjat: 11
Kirjat kirjat = new Kirjat();
Kirja k1 = new Kirja();
Kirja k2 = new Kirja();
Kirja k3 = new Kirja();
k1.parse("Hobitti1 |J.R.R. Tolkien||336");
k2.parse("Hobitti2 |J.R.R. Tolkien||336");
k3.parse("Hobitti3 |J.R.R. Tolkien||336");
try {
kirjat.lisaa(k1);
kirjat.lisaa(k2);
kirjat.lisaa(k3);
} catch (SailoException e) {
e.printStackTrace();
}
assertEquals("From: Kirjat line: 33", "Hobitti1", kirjat.hae(k1.getId()).getNimi());
assertEquals("From: Kirjat line: 34", "Hobitti3", kirjat.hae(k3.getId()).getNimi());
try {
kirjat.hae(0);
fail("Kirjat: 35 Did not throw NoSuchElementException");
} catch(NoSuchElementException _e_){ _e_.getMessage(); }
try {
kirjat.hae(5);
fail("Kirjat: 36 Did not throw NoSuchElementException");
} catch(NoSuchElementException _e_){ _e_.getMessage(); }
int k2Id = k2.getId();
kirjat.poista(k2Id);
try {
kirjat.hae(k2Id);
fail("Kirjat: 40 Did not throw NoSuchElementException");
} catch(NoSuchElementException _e_){ _e_.getMessage(); }
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testLisaa53 */
@Test
public void testLisaa53() { // Kirjat: 53
Kirja kirja = new Kirja();
Kirjat kirjat = new Kirjat();
try {
for (int i = 0; i < 8; i++) {
kirjat.lisaa(kirja);
assertEquals("From: Kirjat line: 59", i + 1, kirjat.getLkm());
}
assertEquals("From: Kirjat line: 61", 8, kirjat.getLkm());
} catch (SailoException e) {
System.out.println("Comtest heittaa virheita, jos ei ole trycatchia");
}
try {
kirjat.lisaa(kirja);
fail("Kirjat: 65 Did not throw SailoException");
} catch(SailoException _e_){ _e_.getMessage(); }
} // Generated by ComTest END
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment