gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Zadatak Putnici - Hash funkcija i funkcija jednakosti
[spa2-materijali.git] / Hash / OHashSet / 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 InfoTip sledeci = i.ucitaj(Svetovid.in(fajl));
60 hash.add(sledeci);
61 }
62 Svetovid.closeIn(fajl);
64 hash.printStats();
65 } else {
66 System.err.println("ne moze se otvoriti fajl!");
67 }
68 }
70 /*
71 * Testira ubacivanje i izbacivanje elemenata iz tabele, cime se dodatno
72 * proverava da li hash/equals rade kako treba
73 */
74 public void addRemoveTest(String fajl, int size, InfoTip i) {
75 OHashSet<InfoTip> hash = new OHashSet<>(size);
76 if (Svetovid.testIn(fajl)) {
77 while (Svetovid.in(fajl).hasMore()) {
78 hash.add(i.ucitaj(Svetovid.in(fajl)));
79 }
80 Svetovid.closeIn(fajl);
82 System.out
83 .println("-- dodatni testovi ubacivanja i izbacivanja --");
84 // hash.printStats();
85 InfoTip it = hash.someElement();
86 if (!hash.add(it)) {
87 System.out.println("uspeh: nije ponovo dodat");
88 } else {
89 System.out.println("neuspeh: ponovo dodat!");
90 }
91 if (hash.remove(it)) {
92 System.out.println("uspeh: uklonjen");
93 if (hash.add(it)) {
94 System.out.println("uspeh: vracen");
95 } else {
96 System.out.println("neuspeh: nije vracen");
97 }
98 } else {
99 System.out.println("neuspeh: nije uklonjen!");
101 } else {
102 System.err.println("ne moze se otvoriti fajl!");
106 public void run() {
107 // emptyTest();
109 String fajl = osnova + "2.txt";
111 infoTest(folder + fajl, 101, element);
112 Svetovid.out.println();
113 infoTest(folder + fajl, 503, element);
114 Svetovid.out.println();
115 infoTest(folder + fajl, 997, element);
116 Svetovid.out.println();
118 // add remove radimo na manjem fajlu
119 addRemoveTest(folder + osnova + "0.txt", 101, element);
123 public static void main(String[] args) {
124 new TestHash().run();
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner