1
+ using MagicHomeController ;
2
+ using MagicHomeController . Timers ;
3
+ using NUnit . Framework ;
4
+ using System ;
5
+ using System . Collections . Generic ;
6
+ using System . Linq ;
7
+
8
+ namespace Tests
9
+ {
10
+ public class TimerSerializerTests
11
+ {
12
+ [ SetUp ]
13
+ public void Setup ( )
14
+ {
15
+ }
16
+
17
+ [ Test ]
18
+ public void Test_RgbWwCw_Deserialize ( )
19
+ {
20
+ var hexString = "0f22f0000000150000fe000000000000f0f0000000150100fe61ff00ff0000f0f0000000150100fe61000000ff00f0f0000000150100fe6100000000fff0f0000000150100fe2c1000000000f00f0000000000000000000000000000005e" ;
21
+ var responseBytes = StringToByteArray ( hexString ) ;
22
+
23
+ var timers = TimerSerializer . Deserialize ( responseBytes , DeviceType . RgbWarmwhiteColdwhite ) . ToList ( ) ;
24
+
25
+ Assert . AreEqual ( 5 , timers . Count ) ;
26
+
27
+ Assert . AreEqual ( PresetMode . None , timers [ 0 ] . Status . Mode ) ;
28
+ Assert . AreEqual ( PowerState . PowerOn , timers [ 0 ] . Status . PowerState ) ;
29
+
30
+ Assert . AreEqual ( PresetMode . NormalRgb , timers [ 1 ] . Status . Mode ) ;
31
+ Assert . AreEqual ( 255 , timers [ 1 ] . Status . Red ) ;
32
+ Assert . AreEqual ( 0 , timers [ 1 ] . Status . Green ) ;
33
+ Assert . AreEqual ( 255 , timers [ 1 ] . Status . Blue ) ;
34
+
35
+ Assert . AreEqual ( PresetMode . NormalRgb , timers [ 2 ] . Status . Mode ) ;
36
+ Assert . AreEqual ( 255 , timers [ 2 ] . Status . White1 ) ;
37
+
38
+ Assert . AreEqual ( PresetMode . NormalRgb , timers [ 3 ] . Status . Mode ) ;
39
+ Assert . AreEqual ( 255 , timers [ 3 ] . Status . White2 ) ;
40
+
41
+ Assert . AreEqual ( PresetMode . WhitePulse , timers [ 4 ] . Status . Mode ) ;
42
+ Assert . AreEqual ( 16 , timers [ 4 ] . Status . PresetDelay ) ;
43
+ }
44
+
45
+ [ Test ]
46
+ public void Test_RgbWwCw_Serialize ( )
47
+ {
48
+ var hexString = "21f0000000150000fe000000000000f0f0000000150100fe61ff00ff0000f0f0000000150100fe61000000ff00f0f0000000150100fe6100000000fff0f0000000150100fe2c1000000000f00f000000000000000000000000000000f0" ;
49
+ var expected = StringToByteArray ( hexString ) ;
50
+
51
+ var timers = new List < Timer >
52
+ {
53
+ new Timer
54
+ {
55
+ Active = true ,
56
+ Status =
57
+ {
58
+ Mode = PresetMode . None ,
59
+ PowerState = PowerState . PowerOn
60
+ } ,
61
+ Date = new DateTime ( 1 , 1 , 1 , 21 , 00 , 00 ) ,
62
+ RepeatDays = TimerDays . Everyday
63
+ } ,
64
+ new Timer
65
+ {
66
+ Active = true ,
67
+ Status =
68
+ {
69
+ Mode = PresetMode . NormalRgb ,
70
+ PowerState = PowerState . PowerOn ,
71
+ Red = 255 ,
72
+ Green = 0 ,
73
+ Blue = 255
74
+ } ,
75
+ Date = new DateTime ( 1 , 1 , 1 , 21 , 01 , 00 ) ,
76
+ RepeatDays = TimerDays . Everyday
77
+ } ,
78
+ new Timer
79
+ {
80
+ Active = true ,
81
+ Status =
82
+ {
83
+ Mode = PresetMode . NormalRgb ,
84
+ PowerState = PowerState . PowerOn ,
85
+ White1 = 255
86
+ } ,
87
+ Date = new DateTime ( 1 , 1 , 1 , 21 , 01 , 00 ) ,
88
+ RepeatDays = TimerDays . Everyday
89
+ } ,
90
+ new Timer
91
+ {
92
+ Active = true ,
93
+ Status =
94
+ {
95
+ Mode = PresetMode . NormalRgb ,
96
+ PowerState = PowerState . PowerOn ,
97
+ White2 = 255
98
+ } ,
99
+ Date = new DateTime ( 1 , 1 , 1 , 21 , 01 , 00 ) ,
100
+ RepeatDays = TimerDays . Everyday
101
+ } ,
102
+ new Timer
103
+ {
104
+ Active = true ,
105
+ Status =
106
+ {
107
+ Mode = PresetMode . WhitePulse ,
108
+ PresetDelay = 16 ,
109
+ PowerState = PowerState . PowerOn
110
+ } ,
111
+ Date = new DateTime ( 1 , 1 , 1 , 21 , 01 , 00 ) ,
112
+ RepeatDays = TimerDays . Everyday
113
+ }
114
+ } ;
115
+
116
+ var returnedBytes = TimerSerializer . Serialize ( timers , DeviceType . RgbWarmwhiteColdwhite ) ;
117
+
118
+ CollectionAssert . AreEqual ( expected , returnedBytes ) ;
119
+ }
120
+
121
+ private byte [ ] StringToByteArray ( string hex )
122
+ {
123
+ return Enumerable . Range ( 0 , hex . Length )
124
+ . Where ( x => x % 2 == 0 )
125
+ . Select ( x => Convert . ToByte ( hex . Substring ( x , 2 ) , 16 ) )
126
+ . ToArray ( ) ;
127
+ }
128
+ }
129
+ }
0 commit comments