From 7b69f9ab4c1c80778f26b953649ee6fb9652ecef Mon Sep 17 00:00:00 2001 From: Doni Pracner Date: Sun, 15 Nov 2015 14:18:13 +0100 Subject: [PATCH] Hash, primeri se sada sami pokrecu. U svim klasama primerima su dodati main metodi koji pokrecu test program sa adekvatnim parametrima. --- Hash/Gadjanje.java | 38 ++++++++++++++++++++++---------------- Hash/Kancelarija.java | 37 ++++++++++++++++++++++--------------- Hash/TestHash.java | 43 ++++++++++++++++++++++++++++++------------- Hash/XO.java | 4 ++++ 4 files changed, 78 insertions(+), 44 deletions(-) diff --git a/Hash/Gadjanje.java b/Hash/Gadjanje.java index 27684ec..b70b6d0 100644 --- a/Hash/Gadjanje.java +++ b/Hash/Gadjanje.java @@ -9,22 +9,6 @@ public class Gadjanje extends InfoTip { private int[] rezultati; private static int MAX_DUZ = 20; - public Gadjanje(String linija) { - String[] delovi = linija.replaceAll(" ", " ").split(" "); - if (delovi.length > 0) { - try { - int br = Integer.parseInt(delovi[0]); - rezultati = new int[br]; - for (int i = 0; i < br; i++) { - rezultati[i] = Integer.parseInt(delovi[i + 1]); - } - } catch (Exception ex) { - throw new RuntimeException(ex); - } - } else - throw new RuntimeException("Pogresan broj argumenata u redu"); - } - public Gadjanje() { // prazan konstruktor potreban za test program } @@ -93,4 +77,26 @@ public class Gadjanje extends InfoTip { return str; } + // pomocni metod za lakse testiranje + public static void main(String[] args) { + new TestHash(new Gadjanje(), "mete").run(); + } + + // ovaj konstruktor nije neophodan, ostavljen je kao primer + public Gadjanje(String linija) { + String[] delovi = linija.replaceAll(" ", " ").split(" "); + if (delovi.length > 0) { + try { + int br = Integer.parseInt(delovi[0]); + rezultati = new int[br]; + for (int i = 0; i < br; i++) { + rezultati[i] = Integer.parseInt(delovi[i + 1]); + } + } catch (Exception ex) { + throw new RuntimeException(ex); + } + } else + throw new RuntimeException("Pogresan broj argumenata u redu"); + } + } diff --git a/Hash/Kancelarija.java b/Hash/Kancelarija.java index 6d157b5..655a1cc 100644 --- a/Hash/Kancelarija.java +++ b/Hash/Kancelarija.java @@ -11,19 +11,6 @@ public class Kancelarija extends InfoTip { private String prezime; private int broj; - public Kancelarija(String line) { - String[] delovi = line.replaceAll(" ", " ").split(" "); - if (delovi.length == 2) { - try { - prezime = delovi[0]; - broj = Integer.parseInt(delovi[1]); - } catch (Exception ex) { - throw new RuntimeException(ex); - } - } else - throw new RuntimeException("Pogresan broj argumenata u redu"); - } - public Kancelarija(String prezime, int broj) { this.prezime = prezime; this.broj = broj; @@ -51,12 +38,12 @@ public class Kancelarija extends InfoTip { // Prvo proveravamo broj if (broj != k2.broj) { - return false; + return false; } // A potom prezime if (!Objects.equals(prezime, k2.prezime)) { - return false; + return false; } // Proverili smo polja i sva su jednaka @@ -79,4 +66,24 @@ public class Kancelarija extends InfoTip { InfoTip rez = new Kancelarija(prez, br); return rez; } + + // pomocni metod za lakse testiranje + public static void main(String[] args) { + new TestHash(new Kancelarija(), "kancelarije").run(); + } + + // ovaj konstruktor nije neophodan, ostavljen je kao primer + public Kancelarija(String line) { + String[] delovi = line.trim().split(" "); + if (delovi.length == 2) { + try { + prezime = delovi[0]; + broj = Integer.parseInt(delovi[1]); + } catch (Exception ex) { + throw new RuntimeException(ex); + } + } else + throw new RuntimeException("Pogresan broj argumenata u redu"); + } + } diff --git a/Hash/TestHash.java b/Hash/TestHash.java index 607d3b1..565614b 100644 --- a/Hash/TestHash.java +++ b/Hash/TestHash.java @@ -4,25 +4,41 @@ * Napravljen je da prikazuje rezultate ubacivanja istog fajla u tabele * razlicitih velicina. * - * Takodje se lako moze promeniti tip podataka koji se ubacuje promenama dve - * promenljive na pocetku klase. Medjutim da bi to radilo tipovi treba da - * prosiruju klasu InfoTip i da imaju ili prazan konstruktor ili da se nekako - * drugacije inicijalizuje objekat `element` u ovoj klasi. + * Takodje se lako moze promeniti tip podataka koji se ubacuje prosledjivanjem + * odgovarajuceg tipa i imena foldera u konstruktoru, ili promenama dve + * promenljive na pocetku klase. + * + * Medjutim da bi to radilo tipovi treba da prosiruju klasu InfoTip i da imaju + * ili prazan konstruktor ili da se nekako drugacije inicijalizuje objekat + * `element` u ovoj klasi. + * + * Takodje se ocekuje da postoje fajlovi tipa "t0" i "t2" za testiranje. Osnova + * imena fajla se moze proslediti u konstruktoru, ali ce program svakako traziti + * fajlove koji se zavrsavaju sa 0 i 2. To se moze promeniti u kodu ovog + * programa. */ public class TestHash { // treba promeniti tip ovog objekta i folder u kome su adekvatni // podaci da bi se radilo sa drugim podacima + // ovo se moze uraditi u konstruktoru private InfoTip element = new Kancelarija(); private String folder = "kancelarije"; + private String osnova = "/t"; + + public TestHash() { + + } - // Na primer ovako treba podesiti za Gadjanje mete - // private InfoTip element = new Gadjanje(); - // private String folder = "mete"; + public TestHash(InfoTip element, String folder, String osnova) { + this.element = element; + this.folder = folder; + this.osnova = osnova; + } - // a ovako za XO - // private InfoTip element = new XO(); - // private String folder = "xo"; + public TestHash(InfoTip element, String folder) { + this(element, folder, "/t"); + } /* * Pravi praznu mapu i ispisuje je @@ -59,7 +75,8 @@ public class TestHash { } Svetovid.closeIn(fajl); } - hash.printStats(); + System.out.println("-- dodatni testovi ubacivanja i izbacivanja --"); + // hash.printStats(); InfoTip it = hash.someElement(); if (!hash.add(it)) { System.out.println("success: not added again"); @@ -81,7 +98,7 @@ public class TestHash { public void run() { // emptyTest(); - String fajl = "/t2.txt"; + String fajl = osnova + "2.txt"; infoTest(folder + fajl, 101, element); Svetovid.out.println(); @@ -91,7 +108,7 @@ public class TestHash { Svetovid.out.println(); // add remove radimo na manjem fajlu - addRemoveTest(folder + "/t0.txt", 101, element); + addRemoveTest(folder + osnova + "0.txt", 101, element); } diff --git a/Hash/XO.java b/Hash/XO.java index ef94eea..8645f09 100644 --- a/Hash/XO.java +++ b/Hash/XO.java @@ -62,4 +62,8 @@ public class XO extends InfoTip { return rez; } + // pomocni metod za lakse testiranje + public static void main(String[] args) { + new TestHash(new XO(), "xo").run(); + } } -- 2.17.1