gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
zadatak boje i automobili sa prakticnih vezbi
[spa2-materijali.git] / Hash / boje-i-automobili / 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 Boja();
26 private String folder = "boja";
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 StatSet<Object> hash = new StatSet<>();
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 StatSet<InfoTip> hash = new StatSet<>();
57 System.out.println("poceto ucitavanje");
58 if (Svetovid.testIn(fajl)) {
59 while (Svetovid.in(fajl).hasMore()) {
60 InfoTip sledeci = i.ucitaj(Svetovid.in(fajl));
61 hash.add(sledeci);
62 }
63 Svetovid.closeIn(fajl);
65 hash.printStats();
66 } else {
67 System.err.println("ne moze se otvoriti fajl:" + fajl);
68 }
69 }
71 /*
72 * Testira ubacivanje i izbacivanje elemenata iz tabele, cime se dodatno
73 * proverava da li hash/equals rade kako treba
74 */
75 public void addRemoveTest(String fajl, int size, InfoTip i) {
76 StatSet<InfoTip> hash = new StatSet<>();
77 if (Svetovid.testIn(fajl)) {
78 while (Svetovid.in(fajl).hasMore()) {
79 hash.add(i.ucitaj(Svetovid.in(fajl)));
80 }
81 Svetovid.closeIn(fajl);
83 System.out
84 .println("-- dodatni testovi ubacivanja i izbacivanja --");
85 // hash.printStats();
86 InfoTip it = hash.someElement();
87 if (!hash.add(it)) {
88 System.out.println("uspeh: nije ponovo dodat");
89 } else {
90 System.out.println("neuspeh: ponovo dodat!");
91 }
92 if (hash.remove(it)) {
93 System.out.println("uspeh: uklonjen");
94 if (hash.add(it)) {
95 System.out.println("uspeh: vracen");
96 } else {
97 System.out.println("neuspeh: nije vracen");
98 }
99 } else {
100 System.out.println("neuspeh: nije uklonjen!");
102 } else {
103 System.err.println("ne moze se otvoriti fajl!");
107 public void run() {
108 // emptyTest();
110 String fajl = osnova + "2.txt";
112 infoTest(folder + fajl, 997, element);
113 Svetovid.out.println();
115 // add remove radimo na manjem fajlu
116 addRemoveTest(folder + osnova + "0.txt", 101, element);
120 public static void main(String[] args) {
121 new TestHash().run();
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner