public async Task ReadWriteSingles() { await PlcTestServer.ExecuteClientAsync(async (client) => { var originWriteTags = new Dictionary <string, object> { { $"DB2.10014,r", (float)0.0 } }; var writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); var results = (await client.ReadAsync(originWriteTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.Single(results); Assert.Equal(typeof(float), results[0].Type); Assert.Equal((float)0.0, (float)results[0].Value); var writeTags = new Dictionary <string, object> { { $"DB2.10014,r", (float)0.5 } }; writeResults = (await client.WriteAsync(writeTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); results = (await client.ReadAsync(writeTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.Single(results); Assert.Equal(typeof(float), results[0].Type); Assert.Equal((float)0.5, (float)results[0].Value); writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); }); }
public async Task ReadWriteBigDBData() { await PlcTestServer.ExecuteClientAsync(async (client) => { var data = Enumerable.Repeat((byte)0x00, 1000).ToArray(); var originWriteTags = new Dictionary <string, object> { { $"DB2.2500,b,1000", data } }; var writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); var results = (await client.ReadAsync(originWriteTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.True(results.FirstOrDefault().Data.ToArray().SequenceEqual(data)); var data2 = Enumerable.Repeat((byte)0x25, 1000).ToArray(); var writeTags = new Dictionary <string, object> { { $"DB2.2500,b,1000", data2 } }; writeResults = (await client.WriteAsync(writeTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); results = (await client.ReadAsync(writeTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.True(results.FirstOrDefault().Data.ToArray().SequenceEqual(data2)); writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); }); }
public void TestWriteItemInvalidStringsThrowsException() { Assert.Throws <InvalidCastException>(() => WriteItem.CreateFromTag("DB2.10046,s,20", new[] { "", "" })); Assert.Throws <ArgumentOutOfRangeException>(() => WriteItem.CreateFromTag("DB2.10046,s,5", " ")); Assert.Throws <ArgumentOutOfRangeException>(() => WriteItem.CreateFromTag("DB2.10046,s", "123456")); Assert.Throws <Dacs7TypeNotSupportedException>(() => WriteItem.Create <string[]>("DB1", 0, 2, new[] { "", "" })); }
public void TestWriteItemInvalidNumberOfBitsThrowsException() { Assert.Throws <Dacs7TypeNotSupportedException>(() => WriteItem.CreateFromTag("DB3.10000,x0,2", new[] { false, false })); Assert.Throws <Dacs7TypeNotSupportedException>(() => WriteItem.CreateFromTag("DB3.10000,x0", new[] { false, false })); Assert.Throws <Dacs7TypeNotSupportedException>(() => WriteItem.CreateFromTag("DB3.10000,x0", new[] { false, false })); Assert.Throws <Dacs7TypeNotSupportedException>(() => WriteItem.CreateFromTag("DB3.10000,x0,2", false)); Assert.Throws <Dacs7TypeNotSupportedException>(() => WriteItem.Create("DB1", 0, 2, false)); Assert.Throws <Dacs7TypeNotSupportedException>(() => WriteItem.Create("DB1", 0, new[] { false, false })); Assert.Throws <Dacs7TypeNotSupportedException>(() => WriteItem.Create("DB1", 0, 2, new[] { false, false })); }
public async Task ReadWriteSingleDWords() { await PlcTestServer.ExecuteClientAsync(async (client) => { var originWriteTags = new Dictionary <string, object> { { $"DB2.10006,dw", (uint)0 }, { $"DB2.10010,di", 0 } }; var writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); var results = (await client.ReadAsync(originWriteTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.Equal(2, results.Count()); Assert.Equal(typeof(uint), results[0].Type); Assert.Equal((uint)0, (uint)results[0].Value); Assert.Equal(typeof(int), results[1].Type); Assert.Equal(0, (int)results[1].Value); var writeTags = new Dictionary <string, object> { { $"DB2.10006,dw", (uint)15 }, { $"DB2.10010,di", 25 } }; writeResults = (await client.WriteAsync(writeTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); results = (await client.ReadAsync(writeTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.Equal(2, results.Count()); Assert.Equal(typeof(uint), results[0].Type); Assert.Equal((ushort)15, (uint)results[0].Value); Assert.Equal(typeof(int), results[1].Type); Assert.Equal(25, (int)results[1].Value); writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); }); }
public async Task ReadWriteSingleBits() { await PlcTestServer.ExecuteClientAsync(async (client) => { var originWriteTags = new Dictionary <string, object> { { $"DB2.10000,x0", false }, { $"DB2.10000,x5", false } }; var writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); var results = (await client.ReadAsync(originWriteTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.Equal(2, results.Count()); Assert.Equal(typeof(bool), results[0].Type); Assert.False((bool)results[0].Value); Assert.Equal(typeof(bool), results[1].Type); Assert.False((bool)results[1].Value); var writeTags = new Dictionary <string, object> { { $"DB2.10000,x0", true }, { $"DB2.10000,x5", true } }; writeResults = (await client.WriteAsync(writeTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); results = (await client.ReadAsync(writeTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.Equal(2, results.Count()); Assert.Equal(typeof(bool), results[0].Type); Assert.True((bool)results[0].Value); Assert.Equal(typeof(bool), results[1].Type); Assert.True((bool)results[1].Value); writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); }); }
public async Task ReadWriteMultibleDWords() { await PlcTestServer.ExecuteClientAsync(async (client) => { var originWriteTags = new Dictionary <string, object> { { $"DB2.10034,dw,2", new uint[] { 0, 0 } } }; var writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); var results = (await client.ReadAsync(originWriteTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.Single(results); Assert.Equal(typeof(uint[]), results[0].Type); var resultValueDefault = results[0].Value as uint[]; Assert.True(resultValueDefault.SequenceEqual(originWriteTags.FirstOrDefault().Value as uint[])); var writeData = new uint[] { 22, 21 }; var writeTags = new Dictionary <string, object> { { $"DB2.10034,dw,2", writeData } }; writeResults = (await client.WriteAsync(writeTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); results = (await client.ReadAsync(writeTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.Single(results); Assert.Equal(typeof(uint[]), results[0].Type); var resultValue = results[0].Value as uint[]; Assert.True(resultValue.SequenceEqual(writeData)); writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); }); }
public async Task ReadWriteSingleStrings2() { await PlcTestServer.ExecuteClientAsync(async (client) => { var originWriteTags = new Dictionary <string, object> { { $"DB2.10090,s,20", "" }, { $"DB2.10112,s,20", " " } }; var writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); var results = (await client.ReadAsync(originWriteTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.Equal(2, results.Count()); Assert.Equal(typeof(string), results[0].Type); Assert.Equal("", (string)results[0].Value); Assert.Equal(typeof(string), results[1].Type); Assert.Equal(" ", (string)results[1].Value); var writeTags = new Dictionary <string, object> { { $"DB2.10046,s,20", "A PARTIAL STRING".PadLeft(20).Substring(0, 18) }, { $"DB2.10068,s,20", "A FULLY STRING IT IS".PadLeft(20) } }; writeResults = (await client.WriteAsync(writeTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); results = (await client.ReadAsync(writeTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.Equal(2, results.Count()); Assert.Equal(typeof(string), results[0].Type); Assert.Equal("A PARTIAL STRING".PadLeft(20).Substring(0, 18), (string)results[0].Value); Assert.Equal(typeof(string), results[1].Type); Assert.Equal("A FULLY STRING IT IS".PadLeft(20), (string)results[1].Value); writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); }); }
public async Task ReadWriteSingleStrings() { await PlcTestServer.ExecuteClientAsync(async (client) => { var originWriteTags = new Dictionary <string, object> { { $"DB2.10046,s,20", "" }, { $"DB2.10068,s,20", " " } }; var writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); var results = (await client.ReadAsync(originWriteTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.Equal(2, results.Count()); Assert.Equal(typeof(string), results[0].Type); Assert.Equal("", (string)results[0].Value); Assert.Equal(typeof(string), results[1].Type); Assert.Equal(" ", (string)results[1].Value); var writeTags = new Dictionary <string, object> { { $"DB2.10046,s,20", "Test1" }, { $"DB2.10068,s,20", "Test2 " } }; writeResults = (await client.WriteAsync(writeTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); results = (await client.ReadAsync(writeTags.Select(w => ReadItem.CreateFromTag(w.Key)))).ToArray(); Assert.Equal(2, results.Count()); Assert.Equal(typeof(string), results[0].Type); Assert.Equal("Test1", (string)results[0].Value); Assert.Equal(typeof(string), results[1].Type); Assert.Equal("Test2 ", (string)results[1].Value); writeResults = (await client.WriteAsync(originWriteTags.Select(w => WriteItem.CreateFromTag(w.Key, w.Value)))).ToArray(); }); }