Fix some of the old tests

- add new examples
- fix struct builder
- complete array interfaces
This commit is contained in:
Felix Weiß
2023-07-20 23:28:58 +02:00
parent 3a7b787949
commit 9bcffad77b
59 changed files with 2190 additions and 2101 deletions

View File

@@ -14,124 +14,6 @@ namespace MewtocolTests {
this.output = output;
}
private void Test(IRegisterInternal reg, uint expectAddr, string expectPlcName) {
Assert.NotNull(reg);
Assert.StartsWith("auto_prop_register_", reg.Name);
Assert.Null(reg.Value);
Assert.Equal(expectAddr, reg.MemoryAddress);
Assert.Equal(expectPlcName, reg.GetMewName());
output.WriteLine(reg.ToString());
}
//actual tests
[Fact(DisplayName = "Boolean generation")]
public void BooleanGen() {
var interf = Mewtocol.Ethernet("192.168.0.1")
.WithRegisterCollections(x =>
x.AddCollection(new TestBoolRegisters())
).Build();
output.WriteLine(((MewtocolInterface)interf).memoryManager.ExplainLayout());
var register1 = interf.GetRegister("auto_prop_register_1");
var register2 = interf.GetRegister("auto_prop_register_2");
var register3 = interf.GetRegister("auto_prop_register_3");
Test((IRegisterInternal)register1, 0, "XD");
Test((IRegisterInternal)register2, 85, "R85A");
Test((IRegisterInternal)register3, 85, "R85B");
}
[Fact(DisplayName = "Number 16 bit generation")]
public void N16BitGen () {
var interf = Mewtocol.Ethernet("192.168.0.1")
.WithRegisterCollections(x =>
x.AddCollection(new Nums16Bit())
).Build();
var register1 = interf.GetRegister("auto_prop_register_1");
var register2 = interf.GetRegister("auto_prop_register_2");
var register3 = interf.GetRegister("auto_prop_register_3");
//test generic properties
Test((IRegisterInternal)register1, 50, "DT50");
Test((IRegisterInternal)register2, 342, "DT342");
Test((IRegisterInternal)register3, 899, "DT899");
}
[Fact(DisplayName = "Number 32 bit generation")]
public void N32BitGen () {
var interf = Mewtocol.Ethernet("192.168.0.1")
.WithRegisterCollections(x => x
.AddCollection(new Nums32Bit())
).Build();
output.WriteLine(((MewtocolInterface)interf).memoryManager.ExplainLayout());
var register1 = interf.GetRegister("auto_prop_register_1");
var register2 = interf.GetRegister("auto_prop_register_2");
var register3 = interf.GetRegister("auto_prop_register_3");
//only one generated because same type
var register4 = interf.GetRegister("auto_prop_register_4");
var register6 = interf.GetRegister("auto_prop_register_5");
var register7 = interf.GetRegister("auto_prop_register_6");
//test generic properties
Test((IRegisterInternal)register1, 7000, "DDT7000");
Test((IRegisterInternal)register2, 7002, "DDT7002");
Test((IRegisterInternal)register3, 7004, "DDT7004");
Test((IRegisterInternal)register4, 7006, "DDT7006");
Test((IRegisterInternal)register6, 7008, "DDT7008");
Test((IRegisterInternal)register7, 7010, "DDT7010");
}
[Fact(DisplayName = "String generation")]
public void StringGen() {
var interf = Mewtocol.Ethernet("192.168.0.1")
.WithRegisterCollections(x =>
x.AddCollection(new TestStringRegisters())
).Build();
var register1 = interf.GetRegister("auto_prop_register_1");
//test generic properties
Test((IRegisterInternal)register1, 7005, "DT7005");
}
[Fact(DisplayName = "Byte Array generation")]
public void ByteArrGen() {
var interf = Mewtocol.Ethernet("192.168.0.1")
.WithRegisterCollections(x =>
x.AddCollection(new TestBitwiseRegisters())
).Build();
var register1 = interf.GetRegister("auto_prop_register_1");
//var register2 = interf.GetRegister("auto_prop_register_2");
//test generic properties
Test((IRegisterInternal)register1, 7000, "DT7000");
//Test((IRegisterInternal)register2, 7001, "DT7001");
}
}
}

View File

@@ -1,22 +0,0 @@
using MewtocolNet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MewtocolTests.EncapsulatedTests;
internal class RegisterReadWriteTest {
public IRegister TargetRegister { get; set; }
public object IntialValue { get; set; }
public object IntermediateValue { get; set; }
public object AfterWriteValue { get; set; }
public string RegisterPlcAddressName { get; set; }
}

View File

@@ -4,7 +4,7 @@ using System.Collections;
namespace MewtocolTests.EncapsulatedTests {
public enum CurrentState : short {
public enum CurrentState16 : short {
Undefined = 0,
State1 = 1,
State2 = 2,
@@ -51,7 +51,7 @@ namespace MewtocolTests.EncapsulatedTests {
public ushort UInt16Type { get; set; }
[Register("DT50")]
public CurrentState Enum16Type { get; set; }
public CurrentState16 Enum16Type { get; set; }
}
@@ -95,8 +95,6 @@ namespace MewtocolTests.EncapsulatedTests {
public class TestBitwiseRegisters : RegisterCollection {
[Register("DT7000")]
public BitArray BitArr16 { get; set; }
//[Register("DT7001")]
//public BitArray BitArr32 { get; set; }

View File

@@ -1,36 +0,0 @@
using MewtocolNet;
using MewtocolNet.DocAttributes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit;
using Xunit.Abstractions;
namespace MewtocolTests;
public class SkippedChecks {
private readonly ITestOutputHelper output;
public SkippedChecks(ITestOutputHelper output) {
this.output = output;
}
[Fact]
public void BuildBCCFrameGeneration() {
var toSuccess = new List<Type> {
typeof(PlcCodeTestedAttribute),
typeof(PlcEXRTAttribute),
typeof(PlcLegacyAttribute),
};
Assert.NotNull(toSuccess);
}
}

View File

@@ -66,18 +66,18 @@ namespace MewtocolTests {
}
[Fact(DisplayName = nameof(MewtocolHelpers.ParseDTByteString))]
[Fact(DisplayName = nameof(MewtocolHelpers.ParseDTRawStringAsBytes))]
public void ParseDTByteStringGeneration() {
var testList = new List<string>() {
"1112",
"1C2C",
"FFFF",
var testList = new List<byte[]>() {
new byte[] {0x11, 0x12},
new byte[] {0x1C, 0x2C},
new byte[] {0xFF, 0xFF},
};
foreach (var item in testList) {
Assert.Equal(item, $"%01$RD{item}".BCC_Mew().ParseDTByteString());
Assert.Equal(item, $"%01$RD{item.ToHexString()}".BCC_Mew().ParseDTRawStringAsBytes());
}

View File

@@ -37,59 +37,6 @@ namespace MewtocolTests
};
private List<RegisterReadWriteTest> testRegisterRW = new() {
new RegisterReadWriteTest {
TargetRegister = new BoolRegister(IOType.R, 0xA, 10),
RegisterPlcAddressName = "R10A",
IntermediateValue = false,
AfterWriteValue = true,
},
new RegisterReadWriteTest {
TargetRegister = new NumberRegister<short>(3000),
RegisterPlcAddressName = "DT3000",
IntermediateValue = (short)0,
AfterWriteValue = (short)-513,
},
new RegisterReadWriteTest {
TargetRegister = new NumberRegister<CurrentState>(3001),
RegisterPlcAddressName = "DT3001",
IntermediateValue = CurrentState.Undefined,
AfterWriteValue = CurrentState.State4,
},
new RegisterReadWriteTest {
TargetRegister = new NumberRegister<CurrentState32>(3002),
RegisterPlcAddressName = "DDT3002",
IntermediateValue = CurrentState32.Undefined,
AfterWriteValue = CurrentState32.StateBetween,
},
new RegisterReadWriteTest {
TargetRegister = new NumberRegister<TimeSpan>(3004),
RegisterPlcAddressName = "DDT3004",
IntermediateValue = TimeSpan.Zero,
AfterWriteValue = TimeSpan.FromSeconds(11),
},
new RegisterReadWriteTest {
TargetRegister = new NumberRegister<TimeSpan>(3006),
RegisterPlcAddressName = "DDT3006",
IntermediateValue = TimeSpan.Zero,
AfterWriteValue = PlcFormat.ParsePlcTime("T#50m"),
},
new RegisterReadWriteTest {
TargetRegister = new StringRegister(40),
RegisterPlcAddressName = "DT40",
IntermediateValue = "Hello",
AfterWriteValue = "TestV",
},
new RegisterReadWriteTest {
TargetRegister = RegBuilder.Factory.FromPlcRegName("DT3008").AsBits(5).Build(),
RegisterPlcAddressName = "DT3008",
IntermediateValue = new BitArray(new bool[] { false, false, false, false, false }),
AfterWriteValue = new BitArray(new bool[] { false, true, false, false, false }),
},
};
public TestLivePLC(ITestOutputHelper output) {
this.output = output;
@@ -141,58 +88,6 @@ namespace MewtocolTests
}
[Fact(DisplayName = "Reading / Writing registers from PLC (Ethernet)")]
public async void TestRegisterReadWriteAsync() {
Logger.LogLevel = LogLevel.Verbose;
Logger.OnNewLogMessage((d, l, m) => {
output.WriteLine($"{d:HH:mm:ss:fff} {m}");
});
var plc = testPlcInformationData[0];
output.WriteLine($"\n\n --- Testing: {plc.PLCName} ---\n");
var client = Mewtocol.Ethernet(plc.PLCIP, plc.PLCPort).Build();
foreach (var testRW in testRegisterRW) {
client.AddRegister(testRW.TargetRegister);
}
await client.ConnectAsync();
Assert.True(client.IsConnected);
//cycle run mode to reset registers to inital
await client.SetOperationModeAsync(false);
await client.SetOperationModeAsync(true);
foreach (var testRW in testRegisterRW) {
var testRegister = client.Registers.First(x => x.PLCAddressName == testRW.RegisterPlcAddressName);
//test inital val
Assert.Null(testRegister.Value);
await testRegister.ReadAsync();
Assert.Equal(testRW.IntermediateValue, testRegister.Value);
await testRegister.WriteAsync(testRW.AfterWriteValue);
await testRegister.ReadAsync();
//test after write val
Assert.Equal(testRW.AfterWriteValue, testRegister.Value);
}
client.Disconnect();
}
}
}

View File

@@ -0,0 +1,89 @@
using MewtocolNet;
using MewtocolNet.RegisterBuilding;
using MewtocolNet.RegisterBuilding.BuilderPatterns;
using MewtocolNet.Registers;
using MewtocolTests.EncapsulatedTests;
using System.Collections;
using Xunit;
using Xunit.Abstractions;
namespace MewtocolTests;
public class TestPublicBuilderPattern {
private readonly ITestOutputHelper output;
public TestPublicBuilderPattern(ITestOutputHelper output) => this.output = output;
private void TestStruct<T> (string buildAddr, uint expectAddr, uint expectByteSize) where T : struct {
using var interf = (MewtocolInterface)Mewtocol.Ethernet("192.168.115.210").Build();
var builder = new RBuild(interf);
var comparer = new StructRegister<T>(expectAddr, expectByteSize) {
attachedInterface = interf,
pollLevel = 1,
};
//test building to the internal list
builder.Struct<T>(buildAddr).Build();
var generated = builder.assembler.assembled.First();
Assert.Equivalent(comparer, generated);
builder.assembler.assembled.Clear();
output.WriteLine(generated.Explain());
//test building with direct out
builder.Struct<T>(buildAddr).Build(out var testRef);
Assert.Equivalent(comparer, testRef);
builder.assembler.assembled.Clear();
output.WriteLine(((Register)testRef).Explain());
comparer.pollLevel++;
//test building to the internal list with poll level
builder.Struct<T>(buildAddr).PollLevel(2).Build();
var generated2 = builder.assembler.assembled.First();
Assert.Equivalent(comparer, generated2);
builder.assembler.assembled.Clear();
output.WriteLine(generated2.Explain());
//test building direct out with poll level
builder.Struct<T>(buildAddr).PollLevel(2).Build(out var testRef2);
Assert.Equivalent(comparer, testRef2);
builder.assembler.assembled.Clear();
output.WriteLine(((Register)testRef2).Explain());
}
//16 bit structs
[Fact(DisplayName = "[16 Bit] short")]
public void TestStruct_1() => TestStruct<short>("DT100", 100, 2);
[Fact(DisplayName = "[16 Bit] ushort")]
public void TestStruct_2() => TestStruct<ushort>("DT101", 101, 2);
[Fact(DisplayName = "[16 Bit] Word")]
public void TestStruct_3() => TestStruct<Word>("DT102", 102, 2);
[Fact(DisplayName = "[16 Bit] Enum")]
public void TestStruct_4() => TestStruct<CurrentState16>("DT103", 103, 2);
//32 bit structs
[Fact(DisplayName = "[32 Bit] int")]
public void TestStruct_5() => TestStruct<int>("DT104", 104, 4);
[Fact(DisplayName = "[32 Bit] uint")]
public void TestStruct_6() => TestStruct<uint>("DT105", 105, 4);
[Fact(DisplayName = "[32 Bit] DWord")]
public void TestStruct_7() => TestStruct<DWord>("DT106", 106, 4);
[Fact(DisplayName = "[32 Bit] Enum")]
public void TestStruct_8() => TestStruct<CurrentState32>("DT107", 107, 4);
[Fact(DisplayName = "[32 Bit] TimeSpan")]
public void TestStruct_9() => TestStruct<TimeSpan>("DT108", 108, 4);
}

View File

@@ -0,0 +1,63 @@
using MewtocolNet;
using MewtocolNet.RegisterBuilding;
using MewtocolNet.RegisterBuilding.BuilderPatterns;
using MewtocolNet.Registers;
using MewtocolTests.EncapsulatedTests;
using System.Collections;
using System.Collections.Generic;
using Xunit;
using Xunit.Abstractions;
namespace MewtocolTests;
public class TestPublicBuilderPatternArray {
private readonly ITestOutputHelper output;
public TestPublicBuilderPatternArray(ITestOutputHelper output) => this.output = output;
private void TestArray1D<T> (string buildAddr, int indices1, uint expectAddr, uint expectByteSize) where T : struct {
using var interf = (MewtocolInterface)Mewtocol.Ethernet("192.168.115.210").Build();
var builder = new RBuild(interf);
var comparer = new ArrayRegister<T>(expectAddr, expectByteSize, new int[] { indices1 }) {
attachedInterface = interf,
pollLevel = 1
};
//test building to the internal list
builder.Struct<T>(buildAddr).AsArray(indices1).Build();
var generated = builder.assembler.assembled.First();
Assert.Equivalent(comparer, generated);
builder.assembler.assembled.Clear();
output.WriteLine(generated.Explain());
////test building with direct out
//builder.Struct<T>(buildAddr).AsArray(indices1).Build(out var testRef);
//Assert.Equivalent(comparer, testRef);
//builder.assembler.assembled.Clear();
//output.WriteLine(((Register)testRef).Explain());
//comparer.pollLevel++;
////test building to the internal list with poll level
//builder.Struct<T>(buildAddr).AsArray(indices1).PollLevel(2).Build();
//var generated2 = builder.assembler.assembled.First();
//Assert.Equivalent(comparer, generated2);
//builder.assembler.assembled.Clear();
//output.WriteLine(generated2.Explain());
////test building direct out with poll level
//builder.Struct<T>(buildAddr).AsArray(indices1).PollLevel(2).Build(out var testRef2);
//Assert.Equivalent(comparer, testRef2);
//builder.assembler.assembled.Clear();
//output.WriteLine(((Register)testRef2).Explain());
}
//16 bit structs
}

View File

@@ -1,5 +1,6 @@
using MewtocolNet;
using MewtocolNet.RegisterBuilding;
using MewtocolNet.RegisterBuilding.BuilderPatterns;
using MewtocolNet.Registers;
using MewtocolTests.EncapsulatedTests;
using System.Collections;
@@ -123,137 +124,9 @@ public class TestRegisterBuilder {
foreach (var item in dict) {
output.WriteLine($"Expected: {item.Key}");
var built = RegBuilder.Factory.FromPlcRegName(item.Key).AsPlcType(PlcVarType.BOOL).Build();
output.WriteLine($"{(built?.ToString(true) ?? "null")}\n");
Assert.Equivalent(item.Value, built);
}
}
[Fact(DisplayName = "Parsing as Bool Register (Casted)")]
public void TestRegisterBuildingBoolCasted () {
var expect = new BoolRegister(IOType.R, 0x1, 0);
var expect2 = new BoolRegister(IOType.Y, 0xA, 103);
Assert.Equivalent(expect, RegBuilder.Factory.FromPlcRegName("R1").AsPlcType(PlcVarType.BOOL).Build());
Assert.Equivalent(expect, RegBuilder.Factory.FromPlcRegName("R1").AsType<bool>().Build());
Assert.Equivalent(expect2, RegBuilder.Factory.FromPlcRegName("Y103A").AsPlcType(PlcVarType.BOOL).Build());
Assert.Equivalent(expect2, RegBuilder.Factory.FromPlcRegName("Y103A").AsType<bool>().Build());
}
[Fact(DisplayName = "Parsing as Bool Register (Auto)")]
public void TestRegisterBuildingBoolAuto () {
var expect = new BoolRegister(IOType.R, 0x1, 0);
var expect2 = new BoolRegister(IOType.Y, 0xA, 103);
Assert.Equivalent(expect, RegBuilder.Factory.FromPlcRegName("R1").Build());
Assert.Equivalent(expect, RegBuilder.Factory.FromPlcRegName("R1").Build());
Assert.Equivalent(expect2, RegBuilder.Factory.FromPlcRegName("Y103A").Build());
Assert.Equivalent(expect2, RegBuilder.Factory.FromPlcRegName("Y103A").Build());
}
[Fact(DisplayName = "Parsing as Number Register (Casted)")]
public void TestRegisterBuildingNumericCasted () {
var expect = new NumberRegister<short>(303);
var expect2 = new NumberRegister<int>(10002);
var expect3 = new NumberRegister<float>(404);
var expect4 = new NumberRegister<TimeSpan>(400);
var expect5 = new NumberRegister<CurrentState>(203);
var expect6 = new NumberRegister<CurrentState32>(204);
Assert.Equivalent(expect, RegBuilder.Factory.FromPlcRegName("DT303").AsPlcType(PlcVarType.INT).Build());
Assert.Equivalent(expect, RegBuilder.Factory.FromPlcRegName("DT303").AsType<short>().Build());
Assert.Equivalent(expect2, RegBuilder.Factory.FromPlcRegName("DDT10002").AsPlcType(PlcVarType.DINT).Build());
Assert.Equivalent(expect2, RegBuilder.Factory.FromPlcRegName("DDT10002").AsType<int>().Build());
Assert.Equivalent(expect3, RegBuilder.Factory.FromPlcRegName("DDT404").AsPlcType(PlcVarType.REAL).Build());
Assert.Equivalent(expect3, RegBuilder.Factory.FromPlcRegName("DDT404").AsType<float>().Build());
Assert.Equivalent(expect4, RegBuilder.Factory.FromPlcRegName("DDT400").AsPlcType(PlcVarType.TIME).Build());
Assert.Equivalent(expect4, RegBuilder.Factory.FromPlcRegName("DDT400").AsType<TimeSpan>().Build());
Assert.Equivalent(expect5, RegBuilder.Factory.FromPlcRegName("DT203").AsType<CurrentState>().Build());
Assert.Equivalent(expect6, RegBuilder.Factory.FromPlcRegName("DT204").AsType<CurrentState32>().Build());
}
[Fact(DisplayName = "Parsing as Number Register (Auto)")]
public void TestRegisterBuildingNumericAuto () {
var expect = new NumberRegister<short>(201);
var expect2 = new NumberRegister<int>(10002);
Assert.Equivalent(expect, RegBuilder.Factory.FromPlcRegName("DT201").Build());
Assert.Equivalent(expect2, RegBuilder.Factory.FromPlcRegName("DDT10002").Build());
}
[Fact(DisplayName = "Parsing as Bytes Register (Casted)")]
public void TestRegisterBuildingByteRangeCasted () {
var expect = new BytesRegister(305, (uint)35);
Assert.Equal((uint)18, expect.AddressLength);
Assert.Equivalent(expect, RegBuilder.Factory.FromPlcRegName("DT305").AsBytes(35).Build());
}
[Fact(DisplayName = "Parsing as Bytes Register (Auto)")]
public void TestRegisterBuildingByteRangeAuto () {
var expect = new BytesRegister(300, (uint)20 * 2);
var actual = (BytesRegister)RegBuilder.Factory.FromPlcRegName("DT300-DT319").Build();
Assert.Equal((uint)20, expect.AddressLength);
Assert.Equivalent(expect, actual);
}
[Fact(DisplayName = "Parsing as Bit Array")]
public void TestRegisterBuildingBitArray () {
var expect1 = new BytesRegister(311, (ushort)5);
var expect2 = new BytesRegister(312, (ushort)16);
var expect3 = new BytesRegister(313, (ushort)32);
var actual1 = (BytesRegister)RegBuilder.Factory.FromPlcRegName("DT311").AsBits(5).Build();
var actual2 = (BytesRegister)RegBuilder.Factory.FromPlcRegName("DT312").AsBits(16).Build();
var actual3 = (BytesRegister)RegBuilder.Factory.FromPlcRegName("DT313").AsBits(32).Build();
Assert.Equivalent(expect1, actual1);
Assert.Equivalent(expect2, actual2);
Assert.Equivalent(expect3, actual3);
Assert.Equal((uint)1, actual1.AddressLength);
Assert.Equal((uint)1, actual2.AddressLength);
Assert.Equal((uint)2, actual3.AddressLength);
}
[Fact(DisplayName = "Parsing as String Register")]
public void TestRegisterBuildingString () {
var expect1 = new StringRegister(314);
var actual1 = (StringRegister)RegBuilder.Factory.FromPlcRegName("DT314").AsType<string>().Build();
Assert.Equivalent(expect1, actual1);
Assert.Equal((uint)0, actual1.WordsSize);
}
}

View File

@@ -13,113 +13,22 @@ namespace MewtocolTests {
this.output = output;
}
[Fact(DisplayName = "Numeric mewtocol query building")]
public void NumericRegisterMewtocolIdentifiers() {
List<IRegisterInternal> registers = new List<IRegisterInternal> {
new NumberRegister<short>(50),
new NumberRegister<ushort>(50),
new NumberRegister<int>(50),
new NumberRegister<uint>(50),
new NumberRegister<float>(50),
new NumberRegister<TimeSpan>(50),
new BytesRegister(50, (uint)30),
new BytesRegister(50, (uint)31),
};
List<string> expectedIdents = new List<string> {
"D0005000050", //single word register
"D0005000050", //single word register
"D0005000051", //double word register
"D0005000051", //double word register
"D0005000051", //double word register
"D0005000051", //double word register
"D0005000064", //variable len register even bytes
"D0005000065", //variable len register odd bytes
};
//test mewtocol idents
for (int i = 0; i < registers.Count; i++) {
IRegisterInternal? reg = registers[i];
string expect = expectedIdents[i];
Assert.Equal(expect, reg.BuildMewtocolQuery());
}
}
[Fact(DisplayName = "PLC register naming convention test")]
public void PLCRegisterIdentifiers() {
List<IRegisterInternal> registers = new List<IRegisterInternal> {
//numeric ones
new NumberRegister<short>(50, _name: null),
new NumberRegister<ushort>(60, _name : null),
new NumberRegister<int>(70, _name : null),
new NumberRegister<uint>(80, _name : null),
new NumberRegister<float>(90, _name : null),
new NumberRegister<TimeSpan>(100, _name : null),
//boolean
new BoolRegister(IOType.R, 0, 100),
new BoolRegister(IOType.R, 0, 0),
new BoolRegister(IOType.X, 5),
new BoolRegister(IOType.X, 0xA),
new BoolRegister(IOType.X, 0xF, 109),
new BoolRegister(IOType.Y, 0xC, 75),
//string
new BytesRegister(999, 5),
};
List<string> expcectedIdents = new List<string> {
//numeric ones
"DT50",
"DT60",
"DDT70",
"DDT80",
"DDT90",
"DDT100",
//boolean
"R100",
"R0",
"X5",
"XA",
"X109F",
"Y75C",
//string
"DT999"
};
//test mewtocol idents
for (int i = 0; i < registers.Count; i++) {
IRegisterInternal? reg = registers[i];
string expect = expcectedIdents[i];
Assert.Equal(expect, reg.GetMewName());
}
}
[Fact(DisplayName = "Non allowed (Overflow address)")]
public void OverFlowRegisterAddress() {
[Fact(DisplayName = "Non allowed Struct Address (Overflow address)")]
public void OverFlowStructRegister() {
var ex = Assert.Throws<NotSupportedException>(() => {
new NumberRegister<short>(100000, _name: null);
new StructRegister<short>(100000, 2);
});
output.WriteLine(ex.Message.ToString());
}
[Fact(DisplayName = "Non allowed Boolean Address (Overflow address )")]
public void OverFlowBoolRegister() {
var ex1 = Assert.Throws<NotSupportedException>(() => {
new BoolRegister(IOType.R, _areaAdress: 512);
@@ -136,27 +45,6 @@ namespace MewtocolTests {
output.WriteLine(ex2.Message.ToString());
var ex3 = Assert.Throws<NotSupportedException>(() => {
new BytesRegister(100000, 5);
});
output.WriteLine(ex3.Message.ToString());
}
[Fact(DisplayName = "Non allowed (Wrong data type)")]
public void WrongDataTypeRegister() {
var ex = Assert.Throws<NotSupportedException>(() => {
new NumberRegister<double>(100, _name: null);
});
output.WriteLine(ex.Message.ToString());
}
}