Projekt

Obecné

Profil

Stáhnout (18.2 KB) Statistiky
| Větev: | Tag: | Revize:
1
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
namespace ServerAppFunctionalTests.ParserTests
10
{
11
    /// <summary>
12
    /// Testing class for WeatherParser
13
    /// </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

    
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
        #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

    
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
        }
229

    
230
        [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

    
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
}
(5-5/5)