summaryrefslogtreecommitdiffstats
path: root/šola/p1/dn/7/Test01.java
blob: 28b3745abe2f4c4f9d2b6d6ea1fb576bc3190547 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125

import java.util.*;

public class Test01 {

    public static void main(String[] args) {

        Oseba a1 = new Oseba("Andrej Antlej", 'M', 67);
        Oseba a2 = new Oseba("Ana Antlej", 'Z', 58);
        Oseba d1 = new Oseba("Denis Debeljak", 'M', 43);
        Oseba d2 = new Oseba("Darja Debeljak", 'Z', 41);
        Oseba d3 = new Oseba("Dejan Debeljak", 'M', 14);
        Oseba d4 = new Oseba("Diana Debeljak", 'Z', 16);
        Oseba e1 = new Oseba("Eva Ertl", 'Z', 23);
        Oseba g1 = new Oseba("Gabrijel Golob", 'M', 72);
        Oseba g2 = new Oseba("Genovefa Golob", 'Z', 74);
        Oseba i1 = new Oseba("Ivan Ilovar", 'M', 52);
        Oseba i2 = new Oseba("Irena Ilovar", 'Z', 47);
        Oseba i3 = new Oseba("Iztok Ilovar", 'M', 21);
        Oseba j1 = new Oseba("Jasna Jarc", 'Z', 45);

        preveri("Oseba/toString", primerjajNiza(a2.toString(), "Ana Antlej, Z, 58"));

        preveri("Oseba/jeStarejsaOd", !a2.jeStarejsaOd(a1));

        Stanovanje sA = new Stanovanje(new Oseba[]{a1, a2});
        Stanovanje sB = new Stanovanje(new Oseba[0]);
        Stanovanje sC = new Stanovanje(new Oseba[0]);
        Stanovanje sD = new Stanovanje(new Oseba[]{d1, d2, d3, d4});
        Stanovanje sE = new Stanovanje(new Oseba[]{e1});
        Stanovanje sF = new Stanovanje(new Oseba[0]);
        Stanovanje sG = new Stanovanje(new Oseba[]{g1, g2});
        Stanovanje sH = new Stanovanje(new Oseba[0]);
        Stanovanje sI = new Stanovanje(new Oseba[]{i1, i2, i3});
        Stanovanje sJ = new Stanovanje(new Oseba[]{j1});

        preveri("Stanovanje/steviloStanovalcev", sA.steviloStanovalcev() == 2);

        preveri("Stanovanje/steviloStarejsihOd", sA.steviloStarejsihOd(a2) == 1);

        preveri("Stanovanje/mz", Arrays.equals(sI.mz(), new int[]{2, 1}));

        preveri("Stanovanje/starosta", sA.starosta() == a1);

        sA.nastaviSosede(null, null, null, sD);
        sB.nastaviSosede(null, null, sC, null);
        sC.nastaviSosede(sB, null, sD, sF);
        sD.nastaviSosede(sC, sA, sE, sG);
        sE.nastaviSosede(sD, null, null, null);
        sF.nastaviSosede(null, sC, sG, null);
        sG.nastaviSosede(sF, sD, null, sH);
        sH.nastaviSosede(null, sG, sI, null);
        sI.nastaviSosede(sH, null, sJ, null);
        sJ.nastaviSosede(sI, null, null, null);

        preveri("Stanovanje/starostaSosescine", sJ.starostaSosescine() == i1);

        preveri("Stanovanje/sosedjeSosedov", 
                primerjajTabeliOseb(sG.sosedjeSosedov(), new Oseba[]{a1, a2, e1, i1, i2, i3}));

        Blok blok = new Blok(sD);

        preveri("Blok/starosta", blok.starosta() == g2);

	System.out.println("<soseščina>");
	System.out.println(blok.stanovanje.soseščina().size());
	System.out.println("</soseščina>");

	System.out.println("<razporeditev bloka>");
	for (int[] line : blok.razporeditev()) {
		for (int število : line) {
			System.out.print(število + "\t");
		}
		System.out.println();
	}
	System.out.println("</razporeditev bloka>");

        preveri("Blok/razporeditev",
                Arrays.deepEquals(
                    blok.razporeditev(),
                    new int[][]{
                        {-1, -1, 2, -1, -1},
                        { 0,  0, 4,  1, -1},
                        {-1,  0, 2, -1, -1},
                        {-1, -1, 0,  3,  1},
                    }));
    }

    private static void preveri(String besedilo, boolean pogoj) {
        System.out.printf("%-29s --> %s%n", besedilo, (pogoj ? "OK" : "napaka"));
    }

    private static boolean primerjajNiza(String a, String b) {
        if (a == null && b == null) {
            return true;
        }
        if (a == null || b == null) {
            return false;
        }
        return a.equals(b);
    }

    private static boolean primerjajTabeliOseb(Oseba[] a, Oseba[] b) {
    	System.out.println("primerjajTabeliOseb. osebe a:");
    	for (Oseba x : a)
		System.out.println(x.toString());
    	System.out.println("primerjajTabeliOseb. osebe b:");
    	for (Oseba y : b)
		System.out.println(b.toString());
    	System.out.println("</primerjajTabeliOseb>");
        if (a == null && b == null) {
            return true;
        }
        if (a == null || b == null || a.length != b.length) {
            return false;
        }
        List<Oseba> prvi = new ArrayList<>(Arrays.asList(a));
        List<Oseba> drugi = new ArrayList<>(Arrays.asList(b));
        Comparator<Oseba> primerjalnik = 
            (p, q) -> Integer.compare(p.hashCode(), q.hashCode());
        prvi.sort(primerjalnik);
        drugi.sort(primerjalnik);
        return prvi.equals(drugi);
    }
}