using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Modbus.Net.Tests { public sealed class TestAddresses { private Dictionary[]> Addresses { get; } public Tuple[] this[string index] { get { return Addresses[index]; } set { if (!Addresses.ContainsKey(index)) { Addresses.Add(index, value); } else { Addresses[index] = value; } } } public TestAddresses(Dictionary[]> addresses) { Addresses = addresses.ToDictionary(address=>address.Key, address=>address.Value); } public IEnumerable Keys => Addresses.Keys.AsEnumerable(); public IEnumerable[]> Values => Addresses.Values.AsEnumerable(); } public sealed class TestAreas { private Dictionary Areas { get; } public string[] this[string index] { get { return Areas[index]; } set { if (!Areas.ContainsKey(index)) { Areas.Add(index, value); } else { Areas[index] = value; } } } public TestAreas(Dictionary addresses) { Areas = addresses.ToDictionary(address => address.Key, address => address.Value); } public IEnumerable Keys => Areas.Keys.AsEnumerable(); public IEnumerable Values => Areas.Values.AsEnumerable(); } public sealed class BaseTest { public static TestAreas TestAreasModbus => new TestAreas(new Dictionary { { "Coil",new []{"0X", "1X"} }, { "Register", new [] {"3X", "4X"} } }); public static TestAddresses TestAddresses => new TestAddresses(new Dictionary[]> { { "Coil.Single.Min", new [] { new Tuple(0, 1, typeof(bool)) } }, { "Coil.Single.Normal", new[] { new Tuple(100, 1, typeof(bool)) } }, { "Coil.Single.MaxOverFlow", new[] { new Tuple(100000, 1, typeof(bool)) } }, { "Coil.Multi.Normal", new[] { new Tuple(0, 30, typeof(bool)) } }, { "Register.Single.Short", new[] { new Tuple(0, 1, typeof(ushort)) } }, { "Register.Continus.Short", new[] { new Tuple(0, 10, typeof(ushort)) } }, { "Register.Continus.Byte", new[] { new Tuple(0, 10, typeof(byte)) } }, { "Register.Continus.Int", new[] { new Tuple(0, 10, typeof(uint)) } }, { "Register.Continus.Bit", new [] { new Tuple(0.5, 8, typeof(bool)) } }, { "Register.Duplicate.Short", new [] { new Tuple(0, 10, typeof(ushort)), new Tuple(15, 25, typeof(ushort)), new Tuple(50, 20, typeof(ushort)) } }, { "Register.Cross.Short", new [] { new Tuple(0, 10, typeof(ushort)), new Tuple(5, 10, typeof(ushort)), new Tuple(10, 10, typeof(ushort)) } }, { "Register.Duplicate.Multi", new [] { new Tuple(0, 10, typeof(byte)), new Tuple(20, 10, typeof(byte)), new Tuple(30, 16, typeof(bool)) } }, }); } }