1
+ package GenericClasses ;
2
+ /*
3
+ !!! Понимание это приходит не сразу !!!
4
+ Любой метод, что обычный, что тестовый
5
+ должны быть максимально сжатыми (короткими).
6
+
7
+ Можно ошибиться в основном коде и чем метод
8
+ длиннее, тем сложнее искать ошибку, есть
9
+ возможность разбить метод на подметоды,
10
+ лучше это сделать.
11
+
12
+ С тестами этот принцип просматривается
13
+ 'на раз', т.к. чем длиннее тест, тем
14
+ выше вероятность еще и в нем совершить
15
+ ошибку... (ошибка в коде, ошибка в тесте)
16
+
17
+ Чем короче метод:
18
+ -> тем понятнее, что в нем происходит;
19
+ -> тем проще, отлавливать ошибки и править код;
20
+ */
21
+
22
+ import MyCuteCats .Cat ;
23
+ import MyCuteCats .Serval ;
24
+ import MyCuteCats .Tiger ;
25
+ import org .junit .Before ;
26
+ import org .junit .Test ;
27
+
28
+ import static org .junit .Assert .assertEquals ;
29
+
30
+ public class ZooTest {
31
+
32
+ Zoo <Cat > catZoo ;
33
+ Zoo <Tiger > tigerZoo ;
34
+ Zoo <Serval > servalZoo ;
35
+
36
+ @ Before
37
+ public void setUp () throws Exception {
38
+ catZoo = new Zoo <>();
39
+ tigerZoo = new Zoo <>();
40
+ servalZoo = new Zoo <>();
41
+ for (int i = 0 ; i < 10 ; i ++) {
42
+ servalZoo .add (new Serval ());
43
+ tigerZoo .add (new Tiger ());
44
+ }
45
+ }
46
+
47
+ @ Test
48
+ public void getWeightOfAllCatsInZoo () {
49
+ System .out .println ("------- Тест getWeightOfAllCatsInZoo() -------" );
50
+ float foolAsserWeightServalInZoo = 0 ;
51
+ for (int i = 0 ; i < servalZoo .getCats ().size (); i ++){
52
+ foolAsserWeightServalInZoo += servalZoo .getCats ().get (i ).getWeight ();
53
+ }
54
+ System .out .println ("Вес всех сервалов в Зоопарке: " + foolAsserWeightServalInZoo );
55
+ /*
56
+ !!! Применение метода *.assertEquals() с Float требует
57
+ указания точности 'delta' - в нашем случае мы установили 0.001 !!!
58
+ */
59
+ assertEquals (foolAsserWeightServalInZoo , servalZoo .getWeightOfAllCatsInZoo (), 0.001 );
60
+
61
+ float foolAsserWeightTigerInZoo = 0 ;
62
+ for (int i = 0 ; i < tigerZoo .getCats ().size (); i ++){
63
+ foolAsserWeightTigerInZoo += tigerZoo .getCats ().get (i ).getWeight ();
64
+ }
65
+ System .out .println ("Вес всех тигров в Зоопарке: " + foolAsserWeightTigerInZoo );
66
+ /*
67
+ ЕЩЕ РАЗ НА ЗАМЕТКУ
68
+ !!! Применение метода *.assertEquals() с Float требует
69
+ указания точности 'delta' - в нашем случае мы установили 0.001 !!!
70
+ */
71
+ assertEquals (foolAsserWeightTigerInZoo , tigerZoo .getWeightOfAllCatsInZoo (), 0.001 );
72
+ }
73
+
74
+ @ Test
75
+ public void add_IfAddingElementToArrayIncreasesItsSize () {
76
+ System .out .println ("------- Тест add_IfAddingElementToArrayIncreasesItsSize() -------" );
77
+ assertEquals (10 , tigerZoo .getSizeOfCatsZoo ());
78
+ assertEquals (10 , servalZoo .getSizeOfCatsZoo ());
79
+ tigerZoo .add (new Tiger ());
80
+ servalZoo .add (new Serval ());
81
+ assertEquals (11 , tigerZoo .getSizeOfCatsZoo ());
82
+ assertEquals (11 , servalZoo .getSizeOfCatsZoo ());
83
+ }
84
+
85
+ @ Test
86
+ public void compare () {
87
+ System .out .println ("------- Тест compare() -------" );
88
+ /*
89
+ Метод сравнение в нашем случае работает с весами
90
+ котиков, причем с суммой всех весов в коллекции.
91
+ Как и любое сравнение мы оперируем условно тремя
92
+ значениями:
93
+ '1' - если то, что сравнивают (объект на котором
94
+ метод вызван), больше того с чем сравнивают
95
+ (объект переданный в аргументе метода);
96
+ '0' - объекты равны;
97
+ '-1' - если то, что сравнивают (объект на котором
98
+ метод вызван), меньше того с чем сравнивают
99
+ (объект переданный в аргументе метода);
100
+
101
+ Естественно в нашем случае тигры по определению тяжелее
102
+ сервалов и на оборот. Ну и сравнение объекта самого с
103
+ собой дает однозначный результат.
104
+ */
105
+ assertEquals (1 , tigerZoo .compare (servalZoo ));
106
+ assertEquals (-1 , servalZoo .compare (tigerZoo ));
107
+ assertEquals (0 , tigerZoo .compare (tigerZoo ));
108
+ assertEquals (0 , servalZoo .compare (servalZoo ));
109
+ }
110
+
111
+ @ Test
112
+ public void transfer_TransferAllObjectsCatTypeToOneZoo () {
113
+ System .out .println ("------- Тест transfer_TransferAllObjectsCatTypeToOneZoo() -------" );
114
+ float foolAsserWeightInBothZoo = 0 ;
115
+ for (int i = 0 ; i < servalZoo .getCats ().size (); i ++){
116
+ foolAsserWeightInBothZoo += servalZoo .getCats ().get (i ).getWeight ();
117
+ }
118
+ System .out .println ("Вес всех сервалов: " + foolAsserWeightInBothZoo );
119
+ for (int i = 0 ; i < tigerZoo .getCats ().size (); i ++){
120
+ foolAsserWeightInBothZoo += tigerZoo .getCats ().get (i ).getWeight ();
121
+ }
122
+ System .out .println ("Вес всех сервалов и тигров вместе: " + foolAsserWeightInBothZoo );
123
+
124
+ Zoo .transfer (servalZoo , catZoo );
125
+ Zoo .transfer (tigerZoo , catZoo );
126
+ assertEquals (foolAsserWeightInBothZoo , catZoo .getWeightOfAllCatsInZoo (), 0.001 );
127
+ assertEquals (0f , servalZoo .getWeightOfAllCatsInZoo (), 0.001 );
128
+ assertEquals (0f , tigerZoo .getWeightOfAllCatsInZoo (), 0.001 );
129
+ }
130
+
131
+ @ Test
132
+ public void transfer_TransferAllTigerAndServalTypeObjectsToZoosOfOnlyTheirTypes () {
133
+ System .out .println ("------- Тест transfer_TransferAllTigerAndServalTypeObjectsToZoosOfOnlyTheirTypes() -------" );
134
+ float foolAsserWeightInFirstServalZoo = 0 ;
135
+ for (int i = 0 ; i < servalZoo .getCats ().size (); i ++){
136
+ foolAsserWeightInFirstServalZoo += servalZoo .getCats ().get (i ).getWeight ();
137
+ }
138
+ System .out .println ("Вес всех сервалов в первом зоопарке: " + foolAsserWeightInFirstServalZoo );
139
+
140
+ float foolAsserWeightInFirstTigerZoo = 0 ;
141
+ for (int i = 0 ; i < tigerZoo .getCats ().size (); i ++){
142
+ foolAsserWeightInFirstTigerZoo += tigerZoo .getCats ().get (i ).getWeight ();
143
+ }
144
+ System .out .println ("Вес всех тигров в первом зоопарке: " + foolAsserWeightInFirstTigerZoo );
145
+
146
+ /* Создадим два дополнительных однотипных зоопарка */
147
+ Zoo <Serval > servalZooTwo = new Zoo <>();
148
+ Zoo <Tiger > tigerZooTwo = new Zoo <>();
149
+ float foolAsserWeightInSecondServalZoo = 0 ;
150
+ float foolAsserWeightInSecondTigerZoo = 0 ;
151
+ for (int i = 0 ; i < 10 ; i ++) {
152
+ Serval serval = new Serval ();
153
+ foolAsserWeightInSecondServalZoo += serval .getWeight ();
154
+ servalZooTwo .add (serval );
155
+ Tiger tiger = new Tiger ();
156
+ foolAsserWeightInSecondTigerZoo += tiger .getWeight ();
157
+ tigerZooTwo .add (tiger );
158
+ }
159
+ System .out .println ("Вес всех сервалов во втором зоопарке: " + foolAsserWeightInSecondServalZoo );
160
+ System .out .println ("Вес всех тигров во втором зоопарке: " + foolAsserWeightInSecondTigerZoo );
161
+ Zoo .transfer (servalZooTwo , servalZoo );
162
+ Zoo .transfer (tigerZooTwo , tigerZoo );
163
+ float foolAsserWeightInBothServalZoo = foolAsserWeightInFirstServalZoo +
164
+ foolAsserWeightInSecondServalZoo ;
165
+ float foolAsserWeightInBothTigerZoo = foolAsserWeightInFirstTigerZoo +
166
+ foolAsserWeightInSecondTigerZoo ;
167
+ assertEquals (foolAsserWeightInBothServalZoo , servalZoo .getWeightOfAllCatsInZoo (), 0.001 );
168
+ assertEquals (foolAsserWeightInBothTigerZoo , tigerZoo .getWeightOfAllCatsInZoo (), 0.001 );
169
+ assertEquals (0f , servalZooTwo .getWeightOfAllCatsInZoo (), 0.001 );
170
+ assertEquals (0f , tigerZooTwo .getWeightOfAllCatsInZoo (), 0.001 );
171
+ }
172
+ }
0 commit comments