private void AssertDatapointType(EtsDatapoint dp, string dpt) { List <string> dpts = dpt.Any() ? dpt.Split(' ').ToList() : new List <string>(); Assert.Equal(dpts.Count, dp.DatapointTypes.Count()); dpts.ForEach(i => Assert.Contains(i, dp.DatapointTypes)); }
private static NodeInstance CreateNodeTemplateFromEtsDatapoint(EtsDatapoint datapoint, INodeTemplateFactory factory) { if (!datapoint.DatapointTypesSplitted.Any()) { return(null); } var mainDpt = datapoint.DatapointTypesSplitted.First().Item1; var subDpt = datapoint.DatapointTypesSplitted.First().Item2; NodeInstance nodeInstance = null; switch (mainDpt) { case 1: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt1"); nodeInstance.SetProperty("knx-dpt", mainDpt); break; case 2: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt2"); nodeInstance.SetProperty("knx-dpt", mainDpt); break; case 3: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt3"); nodeInstance.SetProperty("knx-dpt", mainDpt); break; case 5: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt5"); nodeInstance.SetProperty("knx-dpt", subDpt); break; case 6: if (subDpt == 20) { nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt6"); nodeInstance.SetProperty("knx-dpt", subDpt); } else { nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt6.020"); nodeInstance.SetProperty("knx-dpt", mainDpt); } break; case 7: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt7"); nodeInstance.SetProperty("knx-dpt", subDpt); break; case 8: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt8"); nodeInstance.SetProperty("knx-dpt", subDpt); break; case 9: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt9"); nodeInstance.SetProperty("knx-dpt", subDpt); break; case 10: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt10"); nodeInstance.SetProperty("knx-dpt", subDpt); break; case 11: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt11"); nodeInstance.SetProperty("knx-dpt", subDpt); break; } if (nodeInstance != null) { nodeInstance.Name = datapoint.Name; nodeInstance.Description = datapoint.Description; nodeInstance.SetProperty("knx-address", datapoint.GetAddress()); } return(nodeInstance); }
public void TestSimpleThreeLevel() { EtsProject p = new EtsProjectParser().ParseEtsFile(GetFile("ETS5_Simple_ThreeLevel")); Assert.Equal("ETS5_Simple_ThreeLevel", p.Name); Assert.Equal(GroupAddressStyle.ThreeLevel, p.GroupAddressStyle); Assert.Equal(4, p.Children.Count); EtsGroup g0 = p.Children[0] as EtsGroup; Assert.Equal("Main Group 0", g0.Name); Assert.Equal(0, g0.GroupIndex); Assert.Equal(2, g0.Children.Count); Assert.Equal("Description main group\r\n0", g0.Description); EtsGroup g0_0 = g0.Children[0] as EtsGroup; Assert.Equal("Middle Group 0.0", g0_0.Name); Assert.Equal(0, g0_0.GroupIndex); Assert.Equal(5, g0_0.Children.Count); Assert.Equal("Description middle group\r\n0", g0_0.Description); EtsDatapoint dp0_0_1 = g0_0.Children[0] as EtsDatapoint; Assert.Equal("Group Address 0.0.1 LED 1 Switch", dp0_0_1.Name); Assert.Equal(1, dp0_0_1.GroupIndex); AssertDatapointType(dp0_0_1, "DPST-1-1"); Assert.Equal("Description group address\r\n1 'test'", dp0_0_1.Description); Assert.True(dp0_0_1.HasDeviceLinked); EtsDatapoint dp0_0_2 = g0_0.Children[1] as EtsDatapoint; Assert.Equal("Group Address 0.0.2 Temperature", dp0_0_2.Name); Assert.Equal(2, dp0_0_2.GroupIndex); AssertDatapointType(dp0_0_2, "DPST-9-1"); Assert.Equal("", dp0_0_2.Description); Assert.True(dp0_0_2.HasDeviceLinked); EtsDatapoint dp0_0_3 = g0_0.Children[2] as EtsDatapoint; Assert.Equal("Group Address 0.0.3 Min/Max Temperature-State", dp0_0_3.Name); Assert.Equal(3, dp0_0_3.GroupIndex); AssertDatapointType(dp0_0_3, "DPST-1-1"); Assert.Equal("", dp0_0_3.Description); Assert.True(dp0_0_3.HasDeviceLinked); EtsDatapoint dp0_0_4 = g0_0.Children[3] as EtsDatapoint; Assert.Equal("Group Address 0.0.4 Boolean Control", dp0_0_4.Name); Assert.Equal(4, dp0_0_4.GroupIndex); AssertDatapointType(dp0_0_4, "DPST-2-2"); Assert.Equal("", dp0_0_4.Description); Assert.False(dp0_0_4.HasDeviceLinked); EtsDatapoint dp0_0_5 = g0_0.Children[4] as EtsDatapoint; Assert.Equal("Group Address 0.0.5 No Datatype", dp0_0_5.Name); Assert.Equal(5, dp0_0_5.GroupIndex); AssertDatapointType(dp0_0_5, ""); Assert.Equal("", dp0_0_5.Description); Assert.False(dp0_0_5.HasDeviceLinked); EtsGroup g1 = p.Children[1] as EtsGroup; Assert.Equal("Main Group 1", g1.Name); Assert.Equal(1, g1.GroupIndex); Assert.True(g1.Children.Count == 0); Assert.Equal("", g1.Description); EtsGroup g2 = p.Children[2] as EtsGroup; Assert.Equal("Main Group 2", g2.Name); Assert.Equal(2, g2.GroupIndex); Assert.Equal(2, g2.Children.Count); Assert.Equal("", g2.Description); EtsGroup g2_0 = g2.Children[0] as EtsGroup; Assert.Equal("Middle Group 2.0", g2_0.Name); Assert.Equal(0, g2_0.GroupIndex); Assert.True(g2_0.Children.Count == 0); Assert.Equal("", g2_0.Description); EtsGroup g2_1 = g2.Children[1] as EtsGroup; Assert.Equal("Middle Group 2.1", g2_1.Name); Assert.Equal(1, g2_1.GroupIndex); Assert.True(g2_1.Children.Count == 0); Assert.Equal("", g2_1.Description); EtsGroup g31 = p.Children[3] as EtsGroup; Assert.Equal(31, g31.GroupIndex); Assert.True(g31.Children.Count == 1); Assert.Equal("", g31.Description); EtsGroup g31_7 = g31.Children[0] as EtsGroup; Assert.Equal("Middle Group 31.7 Filled Up", g31_7.Name); Assert.Equal(7, g31_7.GroupIndex); Assert.Equal(256, g31_7.Children.Count); Assert.Equal("", g31_7.Description); for (int i = 0; i < g31_7.Children.Count; i++) { Assert.Equal(i, (g31_7.Children[i] as EtsDatapoint).GroupIndex); Assert.False((g31_7.Children[i] as EtsDatapoint).HasDeviceLinked); } }