Skip to content

Commit acdee86

Browse files
committed
add .editorconfig, unit-tests, timers for RGBWWCW
1 parent db1d7b0 commit acdee86

File tree

10 files changed

+904
-552
lines changed

10 files changed

+904
-552
lines changed

src/.editorconfig

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[*]
2+
indent_style = space
3+
indent_size = 4
4+
5+
[*.{cs,vb}]
6+
dotnet_naming_rule.private_members_with_underscore.symbols = private_fields
7+
dotnet_naming_rule.private_members_with_underscore.style = prefix_underscore
8+
dotnet_naming_rule.private_members_with_underscore.severity = suggestion
9+
10+
dotnet_naming_symbols.private_fields.applicable_kinds = field
11+
dotnet_naming_symbols.private_fields.applicable_accessibilities = private
12+
13+
dotnet_naming_style.prefix_underscore.capitalization = camel_case
14+
dotnet_naming_style.prefix_underscore.required_prefix = _
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netcoreapp2.1</TargetFramework>
5+
6+
<IsPackable>false</IsPackable>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<PackageReference Include="Moq" Version="4.10.1" />
11+
<PackageReference Include="nunit" Version="3.10.1" />
12+
<PackageReference Include="NUnit3TestAdapter" Version="3.10.0" />
13+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
14+
</ItemGroup>
15+
16+
<ItemGroup>
17+
<ProjectReference Include="..\MagicHomeController\MagicHomeController.csproj" />
18+
</ItemGroup>
19+
20+
</Project>
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
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+
}

src/MagicHomeController.sln

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 14
4-
VisualStudioVersion = 14.0.24720.0
3+
# Visual Studio 15
4+
VisualStudioVersion = 15.0.28307.271
55
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagicHomeController", "MagicHomeController\MagicHomeController.csproj", "{46588B17-AE16-49DF-BB96-56A179A243A6}"
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MagicHomeController", "MagicHomeController\MagicHomeController.csproj", "{46588B17-AE16-49DF-BB96-56A179A243A6}"
77
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagicHomeController.Demo", "MagicHomeController.Demo\MagicHomeController.Demo.csproj", "{8172B7EE-2012-41C1-817D-E8BEFDD405A3}"
8+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MagicHomeController.Demo", "MagicHomeController.Demo\MagicHomeController.Demo.csproj", "{8172B7EE-2012-41C1-817D-E8BEFDD405A3}"
9+
EndProject
10+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagicHomeController.Tests", "MagicHomeController.Tests\MagicHomeController.Tests.csproj", "{88012130-0C92-491B-B37C-B6ADE8CA9EC8}"
911
EndProject
1012
Global
1113
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -21,8 +23,15 @@ Global
2123
{8172B7EE-2012-41C1-817D-E8BEFDD405A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
2224
{8172B7EE-2012-41C1-817D-E8BEFDD405A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
2325
{8172B7EE-2012-41C1-817D-E8BEFDD405A3}.Release|Any CPU.Build.0 = Release|Any CPU
26+
{88012130-0C92-491B-B37C-B6ADE8CA9EC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27+
{88012130-0C92-491B-B37C-B6ADE8CA9EC8}.Debug|Any CPU.Build.0 = Debug|Any CPU
28+
{88012130-0C92-491B-B37C-B6ADE8CA9EC8}.Release|Any CPU.ActiveCfg = Release|Any CPU
29+
{88012130-0C92-491B-B37C-B6ADE8CA9EC8}.Release|Any CPU.Build.0 = Release|Any CPU
2430
EndGlobalSection
2531
GlobalSection(SolutionProperties) = preSolution
2632
HideSolutionNode = FALSE
2733
EndGlobalSection
34+
GlobalSection(ExtensibilityGlobals) = postSolution
35+
SolutionGuid = {873CAF5B-B5B4-4262-9B7F-46C2227BB8D6}
36+
EndGlobalSection
2837
EndGlobal

0 commit comments

Comments
 (0)