gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
607d3b15b8079e64317f9a545598ac7b822e80fb
[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 promenama dve
8 * promenljive na pocetku klase. Medjutim da bi to radilo tipovi treba da
9 * prosiruju klasu InfoTip i da imaju ili prazan konstruktor ili da se nekako
10 * drugacije inicijalizuje objekat `element` u ovoj klasi.
11 */
12 public class TestHash {
14 // treba promeniti tip ovog objekta i folder u kome su adekvatni
15 // podaci da bi se radilo sa drugim podacima
16 private InfoTip element = new Kancelarija();
17 private String folder = "kancelarije";
19 // Na primer ovako treba podesiti za Gadjanje mete
20 // private InfoTip element = new Gadjanje();
21 // private String folder = "mete";
23 // a ovako za XO
24 // private InfoTip element = new XO();
25 // private String folder = "xo";
27 /*
28 * Pravi praznu mapu i ispisuje je
29 */
30 public void emptyTest() {
31 OHashSet<Object> hash = new OHashSet<>();
32 hash.printStats();
33 }
35 /*
36 * ucitava podatke iz datog fajla u tabelu date velicine, pri cemu su podaci
37 * datog tipa, te ispisuje na kraju statistike o tabeli.
38 */
39 public void infoTest(String fajl, int size, InfoTip i) {
40 OHashSet<InfoTip> hash = new OHashSet<>(size);
41 if (Svetovid.testIn(fajl)) {
42 while (Svetovid.in(fajl).hasMore()) {
43 hash.add(i.ucitaj(Svetovid.in(fajl)));
44 }
45 Svetovid.closeIn(fajl);
46 }
47 hash.printStats();
48 }
50 /*
51 * Testira ubacivanje i izbacivanje elemenata iz tabele, cime se dodatno
52 * proverava da li hash/equals rade kako treba
53 */
54 public void addRemoveTest(String fajl, int size, InfoTip i) {
55 OHashSet<InfoTip> hash = new OHashSet<>(size);
56 if (Svetovid.testIn(fajl)) {
57 while (Svetovid.in(fajl).hasMore()) {
58 hash.add(i.ucitaj(Svetovid.in(fajl)));
59 }
60 Svetovid.closeIn(fajl);
61 }
62 hash.printStats();
63 InfoTip it = hash.someElement();
64 if (!hash.add(it)) {
65 System.out.println("success: not added again");
66 } else {
67 System.out.println("fail: added again!");
68 }
69 if (hash.remove(it)) {
70 System.out.println("success: removed");
71 } else {
72 System.out.println("fail: not removed!");
73 }
74 if (hash.add(it)) {
75 System.out.println("success: added back in");
76 } else {
77 System.out.println("fail: not added back in");
78 }
79 }
81 public void run() {
82 // emptyTest();
84 String fajl = "/t2.txt";
86 infoTest(folder + fajl, 101, element);
87 Svetovid.out.println();
88 infoTest(folder + fajl, 503, element);
89 Svetovid.out.println();
90 infoTest(folder + fajl, 997, element);
91 Svetovid.out.println();
93 // add remove radimo na manjem fajlu
94 addRemoveTest(folder + "/t0.txt", 101, element);
96 }
98 public static void main(String[] args) {
99 new TestHash().run();
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner