Projekt

Obecné

Profil

Stáhnout (18.2 KB) Statistiky
| Větev: | Tag: | Revize:
1 8a243ab2 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
9 847434c6 Roman Kalivoda
namespace ServerAppFunctionalTests.ParserTests
10 8a243ab2 A-Konig
{
11
    /// <summary>
12 23e8ae04 A-Konig
    /// Testing class for WeatherParser
13 8a243ab2 A-Konig
    /// </summary>
14
    [TestClass]
15
    public class WeatherParserTesting
16
    {
17
18
        #region Weather parser
19
20
        #region Parse days
21
        [TestMethod]
22
        public void ParseWeatherDayOne()
23
        {
24
            string path = "";
25
            List<WeatherInstance> data = new List<WeatherInstance>();
26
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
27
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 7, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
28
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 10, 3, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
29
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 12, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
30
31
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
32
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
33
34
            WeatherParser target = new WeatherParser(dl.Object);
35
            PrivateObject obj = new PrivateObject(target);
36
37
            List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1));
38
39
            Assert.AreEqual(1, retVal.Count);
40
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 8, 50, 1.25, 10_000, 18 - 7), retVal[0]);
41
        }
42
43
        [TestMethod]
44
        public void ParseWeatherDayOneFiltering()
45
        {
46
            string path = "";
47
            List<WeatherInstance> data = new List<WeatherInstance>();
48
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
49
50
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 7, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
51
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 10, 3, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
52
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 12, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
53
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 13, 0, 0), 12, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
54
55
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
56
57
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
58
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
59
60
            WeatherParser target = new WeatherParser(dl.Object);
61
            PrivateObject obj = new PrivateObject(target);
62
63
            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));
64
65
            Assert.AreEqual(1, retVal.Count);
66
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 9.75, 25, 1.75, 10_000, 18 - 7), retVal[0]);
67
        }
68
69
        [TestMethod]
70
        public void ParseWeatherDayTwo()
71
        {
72
            string path = "";
73
            List<WeatherInstance> data = new List<WeatherInstance>();
74
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
75
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
76
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 3, 3, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
77
78
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 12, 0, 0), 5, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
79
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
80
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
81
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
82
83
84
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
85
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
86
87
            WeatherParser target = new WeatherParser(dl.Object);
88
            PrivateObject obj = new PrivateObject(target);
89
90
            List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1));
91
92
            Assert.AreEqual(2, retVal.Count);
93
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 6, 100, 1, 10_000, 18 - 7), retVal[0]);
94
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 7, 0, 0), 10, 25, 2, 10_000, 18 - 7), retVal[1]);
95
        }
96
97
        [TestMethod]
98
        public void ParseWeatherDayTwoFiltering()
99
        {
100
            string path = "";
101
            List<WeatherInstance> data = new List<WeatherInstance>();
102
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
103
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
104
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 3, 3, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
105
106
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 12, 0, 0), 5, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
107
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
108
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
109
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
110
111
112
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
113
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
114
115
            WeatherParser target = new WeatherParser(dl.Object);
116
            PrivateObject obj = new PrivateObject(target);
117
118
            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));
119
120
            Assert.AreEqual(1, retVal.Count);
121
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 6, 100, 1, 10_000, 18 - 7), retVal[0]);
122
            //Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 7, 0, 0), 10, 25, 2, 10_000, 18 - 7), retVal[1]);
123
        }
124 3729dcae A-Konig
125
        [TestMethod]
126
        public void ParseWeatherDayEmpty()
127
        {
128
            string path = "";
129
            List<WeatherInstance> data = new List<WeatherInstance>();
130
131
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
132
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
133
134
            WeatherParser target = new WeatherParser(dl.Object);
135
            PrivateObject obj = new PrivateObject(target);
136
137
            List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsDays", path, new DateTime(2000, 1, 1, 8, 0, 0), new DateTime(2001, 1, 1, 11, 0, 0));
138
139
            Assert.AreEqual(0, retVal.Count);
140
        }
141
142
        [TestMethod]
143
        public void ParseWeatherDayNull()
144
        {
145
            string path = "";
146
            List<WeatherInstance> data = null;
147
148
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
149
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
150
151
            WeatherParser target = new WeatherParser(dl.Object);
152
            PrivateObject obj = new PrivateObject(target);
153
154
            List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsDays", path, new DateTime(2000, 1, 1, 8, 0, 0), new DateTime(2001, 1, 1, 11, 0, 0));
155
156
            Assert.AreEqual(0, retVal.Count);
157
        }
158 8a243ab2 A-Konig
        #endregion
159
160
        #region Parse hours
161
        [TestMethod]
162
        public void ParseWeatherHourOne()
163
        {
164
            string path = "";
165
            List<WeatherInstance> data = new List<WeatherInstance>();
166
167
            // day 1
168
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
169
170
171
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
172
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
173
174
            WeatherParser target = new WeatherParser(dl.Object);
175
            PrivateObject obj = new PrivateObject(target);
176
177
            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));
178
179
            Assert.AreEqual(1, retVal.Count);
180
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 5, 100, 0, (double)0, 2), retVal[0]);
181
        }
182
183
        [TestMethod]
184
        public void ParseWeatherHourMultiple()
185
        {
186
            string path = "";
187
            List<WeatherInstance> data = new List<WeatherInstance>();
188
189
            // day 1
190
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
191
192
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
193
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 3, 3, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
194
195
            // day 2
196
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 12, 0, 0), 5, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Sunny) / 1000));
197
198
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
199
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
200
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 15, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
201
202
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
203
204
205
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
206
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
207
208
            WeatherParser target = new WeatherParser(dl.Object);
209
            PrivateObject obj = new PrivateObject(target);
210
211
            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));
212
213
            Assert.AreEqual(5, retVal.Count);
214
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 5, 100, 0, (double)0, 2), retVal[0]);
215
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 9, 0, 0), 6.5, 100, 1.5, 10_000, 2), retVal[1]);
216
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 11, 0, 0), 5, 0, 2, 60_000, 2), retVal[2]);
217
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 13, 0, 0), 10, 25, 2, 10_000, 2), retVal[3]);
218
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 15, 0, 0), 15, 40, 2, 10_000, 2), retVal[4]);
219 27aa66b5 A-Konig
220
            retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsIntervals", path, 3, new DateTime(2000, 1, 1, 8, 0, 0), new DateTime(2001, 1, 1, 11, 0, 0));
221
222
            Assert.AreEqual(5, retVal.Count);
223
            Assert.AreEqual(new DateTime(2000, 1, 1, 7, 0, 0), retVal[0].startTime);
224
            Assert.AreEqual(new DateTime(2000, 1, 1, 10, 0, 0), retVal[1].startTime);
225
            Assert.AreEqual(new DateTime(2000, 2, 1, 10, 0, 0), retVal[2].startTime);
226
            Assert.AreEqual(new DateTime(2000, 2, 1, 13, 0, 0), retVal[3].startTime);
227
            Assert.AreEqual(new DateTime(2000, 2, 1, 16, 0, 0), retVal[4].startTime);
228 8a243ab2 A-Konig
        }
229
230 3729dcae A-Konig
        [TestMethod]
231
        public void ParseWeatherEmpty()
232
        {
233
            string path = "";
234
            List<WeatherInstance> data = new List<WeatherInstance>();
235
236
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
237
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
238
239
            WeatherParser target = new WeatherParser(dl.Object);
240
            PrivateObject obj = new PrivateObject(target);
241
242
            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));
243
244
            Assert.AreEqual(0, retVal.Count);
245
        }
246
247
248
        [TestMethod]
249
        public void ParseWeatherNull()
250
        {
251
            string path = "";
252
            List<WeatherInstance> data = null;
253
254
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
255
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
256
257
            WeatherParser target = new WeatherParser(dl.Object);
258
            PrivateObject obj = new PrivateObject(target);
259
260
            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));
261
262
            Assert.AreEqual(0, retVal.Count);
263
        }
264 8a243ab2 A-Konig
265
        [TestMethod]
266
        public void ParseWeatherHourFiltering()
267
        {
268
            string path = "";
269
            List<WeatherInstance> data = new List<WeatherInstance>();
270
271
            // day 1
272
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
273
274
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
275
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 3, 3, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
276
277
            // day 2
278
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 12, 0, 0), 5, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Sunny) / 1000));
279
280
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
281
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
282
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 15, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
283
284
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
285
286
287
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
288
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
289
290
            WeatherParser target = new WeatherParser(dl.Object);
291
            PrivateObject obj = new PrivateObject(target);
292
293
            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));
294
295
            Assert.AreEqual(3, retVal.Count);
296
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 9, 0, 0), 6.5, 100, 1.5, 10_000, 2), retVal[0]);
297
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 11, 0, 0), 5, 0, 2, 60_000, 2), retVal[1]);
298
            Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 13, 0, 0), 10, 33, 2, 10_000, 2), retVal[2]);
299
        }
300
301
        [TestMethod]
302
        public void ParseWeatherHourNone()
303
        {
304
            string path = "";
305
            List<WeatherInstance> data = new List<WeatherInstance>();
306
307
            // day 1
308
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
309
            data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000));
310
311
            // day 2
312
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
313
            data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 17, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000));
314
315
316
            Mock<IDataLoader> dl = new Mock<IDataLoader>();
317
            dl.Setup(m => m.LoadWeatherFile(path)).Returns(data);
318
319
            WeatherParser target = new WeatherParser(dl.Object);
320
            PrivateObject obj = new PrivateObject(target);
321
322
            List<ActivityInfo> jis = new List<ActivityInfo>();
323
            List<ActivityInfo> pc = new List<ActivityInfo>();
324
325
            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));
326
327
            Assert.AreEqual(0, retVal.Count);
328
        }
329
        #endregion
330
331
        #endregion
332
    }
333
}