Projekt

Obecné

Profil

Stáhnout (60.8 KB) Statistiky
| Větev: | Tag: | Revize:
1 a53b1de8 A-Konig
using Microsoft.VisualStudio.TestTools.UnitTesting;
2
using System;
3
using ServerApp.Parser.Parsers;
4
using System.Collections.Generic;
5
using ServerApp.Parser.OutputInfo;
6
using Moq;
7
using ServerApp.Parser.InputData;
8 4b847de5 A-Konig
using ServerApp.WeatherPredictionParser;
9
using ServerApp.DataDownload;
10 a53b1de8 A-Konig
11
// 1h
12
// 0.5h to edit parsers 
13
14
namespace TestProject
15
{
16
17
    [TestClass]
18
    public class TestingParser
19
    {
20
        [TestMethod]
21
        public void AbstactClassTest()
22
        {
23
            IDataParser p = new DataParser(null);
24
            List<ActivityInfo> aa = p.AttendanceList;
25
            List<WeatherInfo> wa = p.WeatherList;
26
27
            DataParser pp = (DataParser)p;
28
            List<ActivityInfo> ap = pp.AttendanceList;
29
            List<WeatherInfo> wp = pp.WeatherList;
30
31
            Assert.AreEqual(aa, ap);
32
            Assert.AreEqual(wa, wp);
33
        }
34
35
        // ------------------------------------ MERGE LISTS -------------------------------------
36
37
        #region Merge lists
38
        [TestMethod]
39
        public void MergeListsNull()
40
        {
41
            DataParser target = new DataParser(null);
42
            PrivateObject obj = new PrivateObject(target);
43
44
            List<ActivityInfo> jis = null;
45
            List<ActivityInfo> pc = null;
46
47
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc);
48
            Assert.AreEqual(0, retVal.Count);
49
        }
50
51
        [TestMethod]
52
        public void MergeListsJisNull()
53
        {
54
            DataParser target = new DataParser(null);
55
            PrivateObject obj = new PrivateObject(target);
56
57
            List<ActivityInfo> jis = null;
58
            List<ActivityInfo> pc = new List<ActivityInfo>();
59
60
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc);
61
            Assert.AreEqual(pc, retVal);
62
        }
63
64
        [TestMethod]
65
        public void MergeListsPcNull()
66
        {
67
            DataParser target = new DataParser(null);
68
            PrivateObject obj = new PrivateObject(target);
69
70
            List<ActivityInfo> jis = new List<ActivityInfo>();
71
            List<ActivityInfo> pc = null;
72
73
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc);
74
            Assert.AreEqual(jis, retVal);
75
        }
76
77
        [TestMethod]
78
        public void MergeListsOneNoOverlap()
79
        {
80
            DataParser target = new DataParser(null);
81
            PrivateObject obj = new PrivateObject(target);
82
83
            List<ActivityInfo> jis = new List<ActivityInfo>();
84
            List<ActivityInfo> pc = new List<ActivityInfo>();
85
86
            jis.Add(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 15, 0, 0), 3));
87
            pc.Add(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 18, 0, 0), 3));
88
89
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc);
90
91
            Assert.AreEqual(2, retVal.Count);
92
            Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 15, 0, 0), 3), retVal[0]);
93
            Assert.AreEqual(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 18, 0, 0), 3), retVal[1]);
94
        }
95
96
        [TestMethod]
97
        public void MergeListsOneOverlap()
98
        {
99
            DataParser target = new DataParser(null);
100
            PrivateObject obj = new PrivateObject(target);
101
102
            List<ActivityInfo> jis = new List<ActivityInfo>();
103
            List<ActivityInfo> pc = new List<ActivityInfo>();
104
105
            jis.Add(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 15, 0, 0), 3));
106
            pc.Add(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 15, 0, 0), 3));
107
108
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc);
109
110
            Assert.AreEqual(1, retVal.Count);
111
            Assert.AreEqual(new ActivityInfo("FAV", 8, new DateTime(2001, 1, 1, 15, 0, 0), 3), retVal[0]);
112
        }
113
114
        [TestMethod]
115
        public void MergeListsTwoNoOverlap()
116
        {
117
            DataParser target = new DataParser(null);
118
            PrivateObject obj = new PrivateObject(target);
119
120
            List<ActivityInfo> jis = new List<ActivityInfo>();
121
            List<ActivityInfo> pc = new List<ActivityInfo>();
122
123
            jis.Add(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 9, 0, 0), 3));
124
            jis.Add(new ActivityInfo("FAV", 1, new DateTime(2001, 1, 1, 15, 0, 0), 3));
125
            pc.Add(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 12, 0, 0), 3));
126
            pc.Add(new ActivityInfo("FAV", 2, new DateTime(2001, 1, 1, 18, 0, 0), 3));
127
128
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc);
129
130
            Assert.AreEqual(4, retVal.Count);
131
            Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 9, 0, 0), 3), retVal[0]);
132
            Assert.AreEqual(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 12, 0, 0), 3), retVal[1]);
133
            Assert.AreEqual(new ActivityInfo("FAV", 1, new DateTime(2001, 1, 1, 15, 0, 0), 3), retVal[2]);
134
            Assert.AreEqual(new ActivityInfo("FAV", 2, new DateTime(2001, 1, 1, 18, 0, 0), 3), retVal[3]);
135
        }
136
137
        [TestMethod]
138
        public void MergeListsTwoOverlap()
139
        {
140
            DataParser target = new DataParser(null);
141
            PrivateObject obj = new PrivateObject(target);
142
143
            List<ActivityInfo> jis = new List<ActivityInfo>();
144
            List<ActivityInfo> pc = new List<ActivityInfo>();
145
146
            jis.Add(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 9, 0, 0), 3));
147
            jis.Add(new ActivityInfo("FAV", 1, new DateTime(2001, 1, 1, 15, 0, 0), 3));
148
            pc.Add(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 12, 0, 0), 3));
149
            pc.Add(new ActivityInfo("FAV", 2, new DateTime(2001, 1, 1, 15, 0, 0), 3));
150
151
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc);
152
153
            Assert.AreEqual(3, retVal.Count);
154
            Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 9, 0, 0), 3), retVal[0]);
155
            Assert.AreEqual(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 12, 0, 0), 3), retVal[1]);
156
            Assert.AreEqual(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 15, 0, 0), 3), retVal[2]);
157
        }
158
159
        [TestMethod]
160
        public void MergeListsMultiple()
161
        {
162
            DataParser target = new DataParser(null);
163
            PrivateObject obj = new PrivateObject(target);
164
165
            List<ActivityInfo> jis = new List<ActivityInfo>();
166
            List<ActivityInfo> pc = new List<ActivityInfo>();
167
168
            jis.Add(new ActivityInfo("FAV", 5, new DateTime(2000, 1, 10, 9, 0, 0), 3));
169
            jis.Add(new ActivityInfo("FAV", 1, new DateTime(2001, 1, 1, 15, 0, 0), 3));
170
            jis.Add(new ActivityInfo("FDU", 3, new DateTime(2001, 4, 1, 15, 0, 0), 3));
171
172
            pc.Add(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 12, 0, 0), 3));
173
            pc.Add(new ActivityInfo("FAV", 2, new DateTime(2001, 1, 1, 15, 0, 0), 3));
174
            pc.Add(new ActivityInfo("FAV", 5, new DateTime(2001, 4, 1, 15, 0, 0), 3));
175
176
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc);
177
178
            Assert.AreEqual(5, retVal.Count);
179
            Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2000, 1, 10, 9, 0, 0), 3), retVal[0]);
180
            Assert.AreEqual(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 12, 0, 0), 3), retVal[1]);
181
            Assert.AreEqual(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 15, 0, 0), 3), retVal[2]);
182
            Assert.AreEqual(new ActivityInfo("FDU", 3, new DateTime(2001, 4, 1, 15, 0, 0), 3), retVal[3]);
183
            Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2001, 4, 1, 15, 0, 0), 3), retVal[4]);
184
        }
185
        #endregion
186
187
        // ------------------------------ WEATHER PARSER ----------------------------------------
188
189
        #region Weather parser
190
191
        #region Parse days
192
        [TestMethod]
193
        public void ParseWeatherDayOne()
194
        {
195
            string path = "";
196
            List<WeatherInstance> data = new List<WeatherInstance>();
197
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast)/1000));
198
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 7, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast)/1000));
199
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 10, 3, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast)/1000));
200
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 12, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast)/1000));
201
202
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
203
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
204
205
            WeatherParser target = new WeatherParser(dl.Object);
206
            PrivateObject obj = new PrivateObject(target);
207
208
            List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1));
209
210
            Assert.AreEqual(1, retVal.Count);
211
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 8, 50, 1.25, 10_000, 18-7), retVal[0]);
212
        }
213
214
        [TestMethod]
215
        public void ParseWeatherDayOneFiltering()
216
        {
217
            string path = "";
218
            List<WeatherInstance> data = new List<WeatherInstance>();
219
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
220
221
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 7, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
222
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 10, 3, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
223
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 12, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
224
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 13, 0, 0), 12, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
225
            
226
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
227
228
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
229
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
230
231
            WeatherParser target = new WeatherParser(dl.Object);
232
            PrivateObject obj = new PrivateObject(target);
233
234
            List<ActivityInfo> jis = new List<ActivityInfo>();
235
            List<ActivityInfo> pc = new List<ActivityInfo>();
236
237
            List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsDays", path, new DateTime(2000, 1, 1, 9, 0, 0), new DateTime(2000, 1, 1, 15, 0, 0));
238
239
            Assert.AreEqual(1, retVal.Count);
240
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 9.75, 25, 1.75, 10_000, 18 - 7), retVal[0]);
241
        }
242
243
        [TestMethod]
244
        public void ParseWeatherDayTwo()
245
        {
246
            string path = "";
247
            List<WeatherInstance> data = new List<WeatherInstance>();
248
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
249
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
250
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 3, 3, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
251
252
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 12, 0, 0), 5, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
253
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
254
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
255
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
256
257
258
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
259
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
260
261
            WeatherParser target = new WeatherParser(dl.Object);
262
            PrivateObject obj = new PrivateObject(target);
263
264
            List<ActivityInfo> jis = new List<ActivityInfo>();
265
            List<ActivityInfo> pc = new List<ActivityInfo>();
266
267
            List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1));
268
269
            Assert.AreEqual(2, retVal.Count);
270
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 6, 100, 1, 10_000, 18-7), retVal[0]);
271
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 7, 0, 0), 10, 25, 2, 10_000, 18-7), retVal[1]);
272
        }
273
274
        [TestMethod]
275
        public void ParseWeatherDayTwoFiltering()
276
        {
277
            string path = "";
278
            List<WeatherInstance> data = new List<WeatherInstance>();
279
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
280
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
281
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 3, 3, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
282
283
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 12, 0, 0), 5, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
284
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
285
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
286
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
287
288
289
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
290
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
291
292
            WeatherParser target = new WeatherParser(dl.Object);
293
            PrivateObject obj = new PrivateObject(target);
294
295
            List<ActivityInfo> jis = new List<ActivityInfo>();
296
            List<ActivityInfo> pc = new List<ActivityInfo>();
297
298
            List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsDays", path, new DateTime(2000, 1, 1, 8, 0, 0), new DateTime(2000, 1, 1, 11, 0, 0));
299
300
            Assert.AreEqual(1, retVal.Count);
301
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 6, 100, 1, 10_000, 18 - 7), retVal[0]);
302
            //Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 7, 0, 0), 10, 25, 2, 10_000, 18 - 7), retVal[1]);
303
        }
304
        #endregion
305
306
        #region Parse hours
307
        [TestMethod]
308
        public void ParseWeatherHourOne()
309
        {
310
            string path = "";
311
            List<WeatherInstance> data = new List<WeatherInstance>();
312
            
313
            // day 1
314
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
315
316
317
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
318
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
319
320
            WeatherParser target = new WeatherParser(dl.Object);
321
            PrivateObject obj = new PrivateObject(target);
322
323
            List<ActivityInfo> jis = new List<ActivityInfo>();
324
            List<ActivityInfo> pc = new List<ActivityInfo>();
325
326
            List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsIntervals", path, 2, new DateTime(2000, 1, 1, 8, 0, 0), new DateTime(2001, 1, 1, 11, 0, 0));
327
328
            Assert.AreEqual(1, retVal.Count);
329
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0),  5, 100, 0, (double)0, 2), retVal[0]);
330
        }
331
332
        [TestMethod]
333
        public void ParseWeatherHourMultiple()
334
        {
335
            string path = "";
336
            List<WeatherInstance> data = new List<WeatherInstance>();
337
338
            // day 1
339
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
340
341
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
342
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 3, 3, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
343
344
            // day 2
345
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 12, 0, 0), 5, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Sunny) / 1000));
346
347
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
348
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
349
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 15, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
350
351
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
352
353
354
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
355
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
356
357
            WeatherParser target = new WeatherParser(dl.Object);
358
            PrivateObject obj = new PrivateObject(target);
359
360
            List<ActivityInfo> jis = new List<ActivityInfo>();
361
            List<ActivityInfo> pc = new List<ActivityInfo>();
362
363
            List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsIntervals", path, 2, new DateTime(2000, 1, 1, 8, 0, 0), new DateTime(2001, 1, 1, 11, 0, 0));
364
365
            Assert.AreEqual(5, retVal.Count);
366
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 5, 100, 0, (double)0, 2), retVal[0]);
367
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 9, 0, 0), 6.5, 100, 1.5, 10_000, 2), retVal[1]);
368
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 11, 0, 0), 5, 0, 2, 60_000, 2), retVal[2]);
369
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 13, 0, 0), 10, 25, 2, 10_000, 2), retVal[3]);
370
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 15, 0, 0), 15, 40, 2, 10_000, 2), retVal[4]);
371
        }
372
373
374
        [TestMethod]
375
        public void ParseWeatherHourFiltering()
376
        {
377
            string path = "";
378
            List<WeatherInstance> data = new List<WeatherInstance>();
379
380
            // day 1
381
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
382
383
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
384
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 3, 3, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
385
386
            // day 2
387
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 12, 0, 0), 5, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Sunny) / 1000));
388
389
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
390
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
391
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 15, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
392
393
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
394
395
396
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
397
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
398
399
            WeatherParser target = new WeatherParser(dl.Object);
400
            PrivateObject obj = new PrivateObject(target);
401
402
            List<ActivityInfo> jis = new List<ActivityInfo>();
403
            List<ActivityInfo> pc = new List<ActivityInfo>();
404
405
            List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsIntervals", path, 2, new DateTime(2000, 1, 1, 9, 0, 0), new DateTime(2000, 2, 1, 13, 0, 0));
406
407
            Assert.AreEqual(3, retVal.Count);
408
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 9, 0, 0), 6.5, 100, 1.5, 10_000, 2), retVal[0]);
409
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 11, 0, 0), 5, 0, 2, 60_000, 2), retVal[1]);
410
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 13, 0, 0), 10, 33, 2, 10_000, 2), retVal[2]);
411
        }
412
413
        [TestMethod]
414
        public void ParseWeatherHourNone()
415
        {
416
            string path = "";
417
            List<WeatherInstance> data = new List<WeatherInstance>();
418
            
419
            // day 1
420
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
421
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
422
423
            // day 2
424
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
425
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 17, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
426
427
428
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
429
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
430
431
            WeatherParser target = new WeatherParser(dl.Object);
432
            PrivateObject obj = new PrivateObject(target);
433
434
            List<ActivityInfo> jis = new List<ActivityInfo>();
435
            List<ActivityInfo> pc = new List<ActivityInfo>();
436
437
            List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsIntervals", path, 2, new DateTime(2000, 1, 1, 10, 0, 0), new DateTime(2000, 2, 1, 15, 0, 0));
438
439
            Assert.AreEqual(0, retVal.Count);
440
        }
441
        #endregion
442
443
        #endregion
444
445 4b847de5 A-Konig
        // -------------------------------- JIS PARSER -----------------------------------------
446
447 a53b1de8 A-Konig
        #region Jis parser
448
449
        #region Parse days
450
        [TestMethod]
451
        public void ParseJisDayOne()
452
        {
453
            TagInfo.CreateDictionaries();
454
455
            string path = "";
456
            List<JisInstance> data = new List<JisInstance>();
457
            data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2));
458
            data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 10, 0, 0), 3));
459
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 1));
460
            data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 15, 0, 0), 2));
461
462
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
463
            dl.Setup(m => m.LoadJisFile(path)).Returns(data);
464
465
            JisParser target = new JisParser(dl.Object);
466
            PrivateObject obj = new PrivateObject(target);
467
468
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1));
469
470
            Assert.AreEqual(2, retVal.Count);
471
            Assert.AreEqual(new ActivityInfo("MENZA", 3, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]);
472
            Assert.AreEqual(new ActivityInfo("KARMA", 5, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]);
473
        }
474
475
        [TestMethod]
476
        public void ParseJisDayOneFiltering()
477
        {
478
            TagInfo.CreateDictionaries();
479
480
            string path = "";
481
            List<JisInstance> data = new List<JisInstance>();
482
            data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 6, 0, 0), 2));
483
            data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2));
484
            data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 10, 0, 0), 3));
485
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 1));
486
            data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 15, 0, 0), 2));
487
            data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 17, 0, 0), 2));
488
489
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
490
            dl.Setup(m => m.LoadJisFile(path)).Returns(data);
491
492
            JisParser target = new JisParser(dl.Object);
493
            PrivateObject obj = new PrivateObject(target);
494
495
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 1, 1, 16, 0, 0));
496
497
            Assert.AreEqual(2, retVal.Count);
498
            Assert.AreEqual(new ActivityInfo("MENZA", 3, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]);
499
            Assert.AreEqual(new ActivityInfo("KARMA", 5, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]);
500
        }
501
502
        [TestMethod]
503
        public void ParseJisDayTwo()
504
        {
505
            TagInfo.CreateDictionaries();
506
507
            string path = "";
508
            List<JisInstance> data = new List<JisInstance>();
509
            data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2));
510
            data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 10, 0, 0), 3));
511
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 1));
512
            data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 15, 0, 0), 2));
513
            
514
            data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 2, 1, 8, 0, 0), 8));
515
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 2, 1, 12, 0, 0), 2));
516
            data.Add(new JisInstance("A2", new DateTime(2000, 2, 1, 16, 0, 0), 1));
517
518
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
519
            dl.Setup(m => m.LoadJisFile(path)).Returns(data);
520
521
            JisParser target = new JisParser(dl.Object);
522
            PrivateObject obj = new PrivateObject(target);
523
524
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 2, 1, 16, 0, 0));
525
526
            Assert.AreEqual(4, retVal.Count);
527
            Assert.AreEqual(new ActivityInfo("MENZA", 3, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]);
528
            Assert.AreEqual(new ActivityInfo("KARMA", 5, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]);
529
530
            Assert.AreEqual(new ActivityInfo("MENZA", 10, new DateTime(2000, 2, 1, 7, 0, 0), 18 - 7), retVal[2]);
531
            Assert.AreEqual(new ActivityInfo("KARMA", 1, new DateTime(2000, 2, 1, 7, 0, 0), 18 - 7), retVal[3]);
532
        }
533
534
        [TestMethod]
535
        public void ParseJisDayTwoFiltering()
536
        {
537
            TagInfo.CreateDictionaries();
538
539
            string path = "";
540
            List<JisInstance> data = new List<JisInstance>();
541
            data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 6, 0, 0), 2));
542
            data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2));
543
            data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 10, 0, 0), 3));
544
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 1));
545
            data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 15, 0, 0), 2));
546
547
            data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 2, 1, 8, 0, 0), 8));
548
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 2, 1, 12, 0, 0), 2));
549
            data.Add(new JisInstance("A2", new DateTime(2000, 2, 1, 16, 0, 0), 1));
550
            data.Add(new JisInstance("A2", new DateTime(2000, 2, 1, 17, 0, 0), 2));
551
552
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
553
            dl.Setup(m => m.LoadJisFile(path)).Returns(data);
554
555
            JisParser target = new JisParser(dl.Object);
556
            PrivateObject obj = new PrivateObject(target);
557
558
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 2, 1, 16, 0, 0));
559
560
            Assert.AreEqual(4, retVal.Count);
561
            Assert.AreEqual(new ActivityInfo("MENZA", 3, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]);
562
            Assert.AreEqual(new ActivityInfo("KARMA", 5, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]);
563
564
            Assert.AreEqual(new ActivityInfo("MENZA", 10, new DateTime(2000, 2, 1, 7, 0, 0), 18 - 7), retVal[2]);
565
            Assert.AreEqual(new ActivityInfo("KARMA", 1, new DateTime(2000, 2, 1, 7, 0, 0), 18 - 7), retVal[3]);
566
        }
567
568
569
        [TestMethod]
570
        public void ParseJisDayNone()
571
        {
572
            TagInfo.CreateDictionaries();
573
574
            string path = "";
575
            List<JisInstance> data = new List<JisInstance>();
576
            data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2));
577
            data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 10, 0, 0), 3));
578
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 1));
579
            data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 15, 0, 0), 2));
580
581
            data.Add(new JisInstance("A1", new DateTime(2000, 1, 2, 15, 0, 0), 2));
582
583
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
584
            dl.Setup(m => m.LoadJisFile(path)).Returns(data);
585
586
            JisParser target = new JisParser(dl.Object);
587
            PrivateObject obj = new PrivateObject(target);
588
589
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsDays", path, new DateTime(2000, 1, 3), new DateTime(2001, 1, 1));
590
591
            Assert.AreEqual(0, retVal.Count);
592
        }
593
        #endregion
594
595
        #region Parse hours
596
        [TestMethod]
597
        public void ParseJisHourlyOne()
598
        {
599
            TagInfo.CreateDictionaries();
600
601
            string path = "";
602
            List<JisInstance> data = new List<JisInstance>();
603
            data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2));
604
            data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 8, 0, 0), 3));
605
            data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 8, 15, 0), 3));
606
607
            /*
608
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 5));
609
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 1));
610
            data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 15, 0, 0), 2));
611
            */
612
613
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
614
            dl.Setup(m => m.LoadJisFile(path)).Returns(data);
615
616
            JisParser target = new JisParser(dl.Object);
617
            PrivateObject obj = new PrivateObject(target);
618
619
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1));
620
621
            Assert.AreEqual(2, retVal.Count);
622
            Assert.AreEqual(new ActivityInfo("MENZA", 2, new DateTime(2000, 1, 1, 7, 0, 0), 2), retVal[0]);
623
            Assert.AreEqual(new ActivityInfo("KARMA", 6, new DateTime(2000, 1, 1, 7, 0, 0), 2), retVal[1]);
624
        }
625
626
        [TestMethod]
627
        public void ParseJisDayHourlyMultiple()
628
        {
629
            TagInfo.CreateDictionaries();
630
631
            string path = "";
632
            List<JisInstance> data = new List<JisInstance>();
633
            data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2));
634
            data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 8, 0, 0), 3));
635
            data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 8, 15, 0), 3));
636
637
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 11, 0, 0), 5));
638
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 11, 10, 0), 1));
639
            data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 11, 20, 0), 2));
640
641
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
642
            dl.Setup(m => m.LoadJisFile(path)).Returns(data);
643
644
            JisParser target = new JisParser(dl.Object);
645
            PrivateObject obj = new PrivateObject(target);
646
647
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1));
648
649
            Assert.AreEqual(4, retVal.Count);
650
            Assert.AreEqual(new ActivityInfo("MENZA", 2, new DateTime(2000, 1, 1, 7, 0, 0), 2), retVal[0]);
651
            Assert.AreEqual(new ActivityInfo("KARMA", 6, new DateTime(2000, 1, 1, 7, 0, 0), 2), retVal[1]);
652
            Assert.AreEqual(new ActivityInfo("MENZA", 6, new DateTime(2000, 1, 1, 11, 0, 0), 2), retVal[2]);
653
            Assert.AreEqual(new ActivityInfo("KARMA", 2, new DateTime(2000, 1, 1, 11, 0, 0), 2), retVal[3]);
654
        }
655
656
        [TestMethod]
657
        public void ParseJisHourlyNone()
658
        {
659
            TagInfo.CreateDictionaries();
660
661
            string path = "";
662
            List<JisInstance> data = new List<JisInstance>();
663
            data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 3, 0, 0), 2));
664
            data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 4, 0, 0), 3));
665
            data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 5, 15, 0), 3));
666
667
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 19, 0, 0), 5));
668
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 19, 10, 0), 1));
669
            data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 19, 20, 0), 2));
670
671
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
672
            dl.Setup(m => m.LoadJisFile(path)).Returns(data);
673
674
            JisParser target = new JisParser(dl.Object);
675
            PrivateObject obj = new PrivateObject(target);
676
677
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1));
678
679
            Assert.AreEqual(0, retVal.Count);
680
        }
681
682
        [TestMethod]
683
        public void ParseJisHourlyFiltering()
684
        {
685
            TagInfo.CreateDictionaries();
686
687
            string path = "";
688
            List<JisInstance> data = new List<JisInstance>();
689
            data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 6, 0, 0), 2));
690
            data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 8, 0, 0), 3));
691
            data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 8, 15, 0), 3));
692
693
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 11, 0, 0), 5));
694
            data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 18, 10, 0), 1));
695
            data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 19, 20, 0), 2));
696
697
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
698
            dl.Setup(m => m.LoadJisFile(path)).Returns(data);
699
700
            JisParser target = new JisParser(dl.Object);
701
            PrivateObject obj = new PrivateObject(target);
702
703
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1));
704
705
            Assert.AreEqual(3, retVal.Count);
706
            Assert.AreEqual(new ActivityInfo("KARMA", 6, new DateTime(2000, 1, 1, 7, 0, 0), 2), retVal[0]);
707
            Assert.AreEqual(new ActivityInfo("MENZA", 5, new DateTime(2000, 1, 1, 11, 0, 0), 2), retVal[1]);
708
            Assert.AreEqual(new ActivityInfo("MENZA", 1, new DateTime(2000, 1, 1, 17, 0, 0), 2), retVal[2]);
709
        }
710 4b847de5 A-Konig
        #endregion
711
712
        #endregion
713
714
        // -------------------------------- LOGIN PARSER ----------------------------------------
715
716
        #region Login parser
717
718
        #region Parse days
719
        [TestMethod]
720
        public void ParseLoginDayOne()
721
        {
722
            TagInfo.CreateDictionaries();
723
724
            string path = "";
725
            List<LogInInstance> data = new List<LogInInstance>();
726
            // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu"
727
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
728
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "UC", "Učebna", "UC-108", "uc233p02-fav"));
729
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
730
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 16, 00, 0), new DateTime(2000, 1, 1, 10, 5, 0), "UC", "Učebna", "LS-108", "ls233p02-fdu"));
731
732
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
733
            dl.Setup(m => m.LoadLoginFile(path)).Returns(data);
734
735
            LogInParser target = new LogInParser(dl.Object);
736
            PrivateObject obj = new PrivateObject(target);
737
738
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLogInFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1));
739
740
            Assert.AreEqual(2, retVal.Count);
741
            Assert.AreEqual(new ActivityInfo("FDU", 4, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]);
742
            Assert.AreEqual(new ActivityInfo("FAV", 6, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]);
743
        }
744
745
        [TestMethod]
746
        public void ParseLoginDayOneFiltering()
747
        {
748
            TagInfo.CreateDictionaries();
749
750
            string path = "";
751
            List<LogInInstance> data = new List<LogInInstance>();
752
            // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu"
753
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 6, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
754
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
755
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "UC", "Učebna", "UC-108", "uc233p02-fav"));
756
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
757
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 16, 00, 0), new DateTime(2000, 1, 1, 16, 5, 0), "UC", "Učebna", "UC-108", "ls233p02-fdu"));
758
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 17, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "UC", "Učebna", "UC-108", "ls233p02-fdu"));
759
760
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
761
            dl.Setup(m => m.LoadLoginFile(path)).Returns(data);
762
763
            LogInParser target = new LogInParser(dl.Object);
764
            PrivateObject obj = new PrivateObject(target);
765
766
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLogInFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 1, 1, 16, 0, 0));
767
768
            Assert.AreEqual(2, retVal.Count);
769
            Assert.AreEqual(new ActivityInfo("FDU", 4, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]);
770
            Assert.AreEqual(new ActivityInfo("FAV", 6, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]);
771
        }
772
773
        [TestMethod]
774
        public void ParseLoginDayTwo()
775
        {
776
            TagInfo.CreateDictionaries();
777
778
            string path = "";
779
            List<LogInInstance> data = new List<LogInInstance>();
780
            // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu"
781
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
782
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "UC", "Učebna", "UC-108", "uc233p02-fav"));
783
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
784
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 16, 00, 0), new DateTime(2000, 1, 1, 16, 5, 0), "UC", "Učebna", "UC-108", "ls233p02-fdu"));
785
786
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
787
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 3, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EU", "Učebna", "EU-108", "uc233p02-fav"));
788
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
789
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 17, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu"));
790
791
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
792
            dl.Setup(m => m.LoadLoginFile(path)).Returns(data);
793
794
            LogInParser target = new LogInParser(dl.Object);
795
            PrivateObject obj = new PrivateObject(target);
796
797
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLogInFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 1, 3, 0, 0, 0));
798
799
            Assert.AreEqual(4, retVal.Count);
800
            Assert.AreEqual(new ActivityInfo("FDU", 4, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]);
801
            Assert.AreEqual(new ActivityInfo("FAV", 6, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]);
802
803
            Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 2, 7, 0, 0), 18 - 7), retVal[2]);
804
            Assert.AreEqual(new ActivityInfo("FEL", 5, new DateTime(2000, 1, 2, 7, 0, 0), 18 - 7), retVal[3]);
805
        }
806
807
        [TestMethod]
808
        public void ParseLoginDayTwoFiltering()
809
        {
810
            TagInfo.CreateDictionaries();
811
812
            string path = "";
813
            List<LogInInstance> data = new List<LogInInstance>();
814
            // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu"
815
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 5, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
816
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
817
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "UC", "Učebna", "UC-108", "uc233p02-fav"));
818
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
819
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 16, 00, 0), new DateTime(2000, 1, 1, 16, 5, 0), "UC", "Učebna", "UC-108", "ls233p02-fdu"));
820
821
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 6, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu"));
822
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
823
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 3, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EU", "Učebna", "EU-108", "uc233p02-fav"));
824
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
825
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 17, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu"));
826
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 19, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu"));
827
828
            data.Add(new LogInInstance(new DateTime(2000, 1, 3, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 17, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu"));
829
            data.Add(new LogInInstance(new DateTime(2000, 1, 3, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 17, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu"));
830
831
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
832
            dl.Setup(m => m.LoadLoginFile(path)).Returns(data);
833
834
            LogInParser target = new LogInParser(dl.Object);
835
            PrivateObject obj = new PrivateObject(target);
836
837
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLogInFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 1, 3, 0, 0, 0));
838
839
            Assert.AreEqual(4, retVal.Count);
840
            Assert.AreEqual(new ActivityInfo("FDU", 4, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]);
841
            Assert.AreEqual(new ActivityInfo("FAV", 6, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]);
842
843
            Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 2, 7, 0, 0), 18 - 7), retVal[2]);
844
            Assert.AreEqual(new ActivityInfo("FEL", 5, new DateTime(2000, 1, 2, 7, 0, 0), 18 - 7), retVal[3]);
845
        }
846
847
848
        [TestMethod]
849
        public void ParseLoginDayNone()
850
        {
851
            TagInfo.CreateDictionaries();
852 a53b1de8 A-Konig
853 4b847de5 A-Konig
            string path = "";
854
            List<LogInInstance> data = new List<LogInInstance>();
855
            // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu"
856
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 5, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
857
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "UC", "Učebna", "UC-108", "uc233p02-fav"));
858
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
859
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 16, 00, 0), new DateTime(2000, 1, 1, 16, 5, 0), "UC", "Učebna", "UC-108", "ls233p02-fdu"));
860
861
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
862
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 3, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EU", "Učebna", "EU-108", "uc233p02-fav"));
863
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
864
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 17, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu"));
865
866
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
867
            dl.Setup(m => m.LoadLoginFile(path)).Returns(data);
868
869
            LogInParser target = new LogInParser(dl.Object);
870
            PrivateObject obj = new PrivateObject(target);
871
872
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLogInFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 1, 1, 9, 0, 0));
873
            
874
            Assert.AreEqual(0, retVal.Count);
875
        }
876 a53b1de8 A-Konig
        #endregion
877
878 4b847de5 A-Konig
        #region Parse hours
879
        [TestMethod]
880
        public void ParseLoginHourlyOne()
881
        {
882
            TagInfo.CreateDictionaries();
883
884
            string path = "";
885
            List<LogInInstance> data = new List<LogInInstance>();
886
            // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu"
887
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
888
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EL", "Učebna", "UC-108", "uc233p02-fav"));
889
890
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 13, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
891
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 14, 00, 0), new DateTime(2000, 1, 1, 10, 5, 0), "UC", "Učebna", "LS-108", "ls233p02-fdu"));
892
893
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 18, 0, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
894
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 18, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
895
896
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
897
            dl.Setup(m => m.LoadLoginFile(path)).Returns(data);
898
899
            LogInParser target = new LogInParser(dl.Object);
900
            PrivateObject obj = new PrivateObject(target);
901
902
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLoginFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1));
903
904
            Assert.AreEqual(5, retVal.Count);
905
            Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[0]);
906
            Assert.AreEqual(new ActivityInfo("FEL", 1, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[1]);
907
            Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[2]);
908
            Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[3]);
909
            Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 1, 17, 0, 0), 2), retVal[4]);
910
        }
911
912
        [TestMethod]
913
        public void ParseLoginDayHourlyMultiple()
914
        {
915
            TagInfo.CreateDictionaries();
916
917
            string path = "";
918
            List<LogInInstance> data = new List<LogInInstance>();
919
            // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu"
920
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
921
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EL", "Učebna", "UC-108", "uc233p02-fav"));
922
923
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 13, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
924
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 14, 00, 0), new DateTime(2000, 1, 1, 10, 5, 0), "UC", "Učebna", "LS-108", "ls233p02-fdu"));
925
926
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 18, 0, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
927
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 18, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
928
929
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
930
            dl.Setup(m => m.LoadLoginFile(path)).Returns(data);
931
932
            LogInParser target = new LogInParser(dl.Object);
933
            PrivateObject obj = new PrivateObject(target);
934
935
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLoginFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1));
936
937
            Assert.AreEqual(5, retVal.Count);
938
            Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[0]);
939
            Assert.AreEqual(new ActivityInfo("FEL", 1, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[1]);
940
            Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[2]);
941
            Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[3]);
942
            Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 2, 17, 0, 0), 2), retVal[4]);
943
        }
944
945
        [TestMethod]
946
        public void ParseLoginHourlyFiltering()
947
        {
948
            TagInfo.CreateDictionaries();
949
950
            string path = "";
951
            List<LogInInstance> data = new List<LogInInstance>();
952
            // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu"
953
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 5, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
954
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
955
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EL", "Učebna", "UC-108", "uc233p02-fav"));
956
957
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 13, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
958
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 14, 00, 0), new DateTime(2000, 1, 1, 10, 5, 0), "UC", "Učebna", "LS-108", "ls233p02-fdu"));
959
960
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 18, 0, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
961
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 18, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
962
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 19, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
963
964
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
965
            dl.Setup(m => m.LoadLoginFile(path)).Returns(data);
966
967
            LogInParser target = new LogInParser(dl.Object);
968
            PrivateObject obj = new PrivateObject(target);
969
970
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLoginFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1));
971
972
            Assert.AreEqual(5, retVal.Count);
973
            Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[0]);
974
            Assert.AreEqual(new ActivityInfo("FEL", 1, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[1]);
975
            Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[2]);
976
            Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[3]);
977
            Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 2, 17, 0, 0), 2), retVal[4]);
978
        }
979
980
        [TestMethod]
981
        public void ParseLoginHourlyNone()
982
        {
983
            TagInfo.CreateDictionaries();
984
985
            string path = "";
986
            List<LogInInstance> data = new List<LogInInstance>();
987
            // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu"
988
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 5, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
989
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 9, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EL", "Učebna", "UC-108", "uc233p02-fav"));
990
991
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 19, 0, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
992
            data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 19, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "UC", "Učebna", "LS-108", "ls233p02-fdu"));
993
994
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 18, 0, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
995
            data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 18, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu"));
996
997
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
998
            dl.Setup(m => m.LoadLoginFile(path)).Returns(data);
999
1000
            LogInParser target = new LogInParser(dl.Object);
1001
            PrivateObject obj = new PrivateObject(target);
1002
1003
            List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLoginFileAsIntervals", path, 2, new DateTime(2000, 1, 1, 10, 0, 0), new DateTime(2000, 1, 2, 10, 0, 0));
1004
1005
            Assert.AreEqual(0, retVal.Count);
1006
        }
1007
        #endregion
1008
1009
        #endregion
1010
1011
        // -------------------------------- JSON PARSER -----------------------------------------
1012
1013
        #region Json parser
1014
1015
        [TestMethod]
1016
        public void JsonParser()
1017
        {
1018
            // TODO needs rewrite after DataDownloader has correct download method
1019
            TagInfo.CreateDictionaries();
1020
1021
            string data = "";
1022
1023
            Mock<DataDownloader> dl = new Mock<DataDownloader>();
1024
            dl.Setup(m => m.DownloadWeatherPrediction()).Returns(data);
1025
1026
            JsonParser target = new JsonParser(dl.Object);
1027
1028
            target.ParsePrediction();
1029
            WeatherInfo current = target.Current;
1030
            List<WeatherInfo> retVal = target.Predictions;
1031
1032
            Assert.AreEqual(8, retVal.Count);
1033
            Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[0]);
1034
            Assert.AreEqual(new ActivityInfo("FEL", 1, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[1]);
1035
            Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[2]);
1036
            Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[3]);
1037
            Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 1, 17, 0, 0), 2), retVal[4]);
1038
            Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 1, 17, 0, 0), 2), retVal[5]);
1039
            Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 1, 17, 0, 0), 2), retVal[6]);
1040
            Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 1, 17, 0, 0), 2), retVal[7]);
1041
        }
1042
1043 a53b1de8 A-Konig
        #endregion
1044
    }
1045
}