gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
565614b81066a83302cf5267e26730d8aa691046
[spa2-materijali.git] / Hash / TestHash.java
1 /**
2 * Test program za hash funkcije i equals funkciju
3 *
4 * Napravljen je da prikazuje rezultate ubacivanja istog fajla u tabele
5 * razlicitih velicina.
6 *
7 * Takodje se lako moze promeniti tip podataka koji se ubacuje prosledjivanjem
8 * odgovarajuceg tipa i imena foldera u konstruktoru, ili promenama dve
9 * promenljive na pocetku klase.
10 *
11 * Medjutim da bi to radilo tipovi treba da prosiruju klasu InfoTip i da imaju
12 * ili prazan konstruktor ili da se nekako drugacije inicijalizuje objekat
13 * `element` u ovoj klasi.
14 *
15 * Takodje se ocekuje da postoje fajlovi tipa "t0" i "t2" za testiranje. Osnova
16 * imena fajla se moze proslediti u konstruktoru, ali ce program svakako traziti
17 * fajlove koji se zavrsavaju sa 0 i 2. To se moze promeniti u kodu ovog
18 * programa.
19 */
20 public class TestHash {
22 // treba promeniti tip ovog objekta i folder u kome su adekvatni
23 // podaci da bi se radilo sa drugim podacima
24 // ovo se moze uraditi u konstruktoru
25 private InfoTip element = new Kancelarija();
26 private String folder = "kancelarije";
27 private String osnova = "/t";
29 public TestHash() {
31 }
33 public TestHash(InfoTip element, String folder, String osnova) {
34 this.element = element;
35 this.folder = folder;
36 this.osnova = osnova;
37 }
39 public TestHash(InfoTip element, String folder) {
40 this(element, folder, "/t");
41 }
43 /*
44 * Pravi praznu mapu i ispisuje je
45 */
46 public void emptyTest() {
47 OHashSet<Object> hash = new OHashSet<>();
48 hash.printStats();
49 }
51 /*
52 * ucitava podatke iz datog fajla u tabelu date velicine, pri cemu su podaci
53 * datog tipa, te ispisuje na kraju statistike o tabeli.
54 */
55 public void infoTest(String fajl, int size, InfoTip i) {
56 OHashSet<InfoTip> hash = new OHashSet<>(size);
57 if (Svetovid.testIn(fajl)) {
58 while (Svetovid.in(fajl).hasMore()) {
59 hash.add(i.ucitaj(Svetovid.in(fajl)));
60 }
61 Svetovid.closeIn(fajl);
62 }
63 hash.printStats();
64 }
66 /*
67 * Testira ubacivanje i izbacivanje elemenata iz tabele, cime se dodatno
68 * proverava da li hash/equals rade kako treba
69 */
70 public void addRemoveTest(String fajl, int size, InfoTip i) {
71 OHashSet<InfoTip> hash = new OHashSet<>(size);
72 if (Svetovid.testIn(fajl)) {
73 while (Svetovid.in(fajl).hasMore()) {
74 hash.add(i.ucitaj(Svetovid.in(fajl)));
75 }
76 Svetovid.closeIn(fajl);
77 }
78 System.out.println("-- dodatni testovi ubacivanja i izbacivanja --");
79 // hash.printStats();
80 InfoTip it = hash.someElement();
81 if (!hash.add(it)) {
82 System.out.println("success: not added again");
83 } else {
84 System.out.println("fail: added again!");
85 }
86 if (hash.remove(it)) {
87 System.out.println("success: removed");
88 } else {
89 System.out.println("fail: not removed!");
90 }
91 if (hash.add(it)) {
92 System.out.println("success: added back in");
93 } else {
94 System.out.println("fail: not added back in");
95 }
96 }
98 public void run() {
99 // emptyTest();
101 String fajl = osnova + "2.txt";
103 infoTest(folder + fajl, 101, element);
104 Svetovid.out.println();
105 infoTest(folder + fajl, 503, element);
106 Svetovid.out.println();
107 infoTest(folder + fajl, 997, element);
108 Svetovid.out.println();
110 // add remove radimo na manjem fajlu
111 addRemoveTest(folder + osnova + "0.txt", 101, element);
115 public static void main(String[] args) {
116 new TestHash().run();
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner