Пример #1
0
        public void ArtDmxPackageTestForCorrectHeader()
        {
            // Arrange
            var data = new byte[0];

            // Act
            var actual      = new ArtDmxPackage(data);
            var actualBytes = actual.GetBytes();

            // Assert
            Assert.AreEqual(65, actualBytes[0], "A");
            Assert.AreEqual(114, actualBytes[1], "r");
            Assert.AreEqual(116, actualBytes[2], "t");
            Assert.AreEqual(45, actualBytes[3], "-");
            Assert.AreEqual(78, actualBytes[4], "N");
            Assert.AreEqual(101, actualBytes[5], "e");
            Assert.AreEqual(116, actualBytes[6], "t");
            Assert.AreEqual(0, actualBytes[7], "\0");
            Assert.AreEqual(0, actualBytes[8], "OpCodeLo");
            Assert.AreEqual(80, actualBytes[9], "OpCodeHi");
            Assert.AreEqual(0, actualBytes[10], "ProtVerHi");
            Assert.AreEqual(14, actualBytes[11], "ProtVerLo");
            Assert.AreEqual(1, actualBytes[12], "Sequence");
            Assert.AreEqual(0, actualBytes[13], "Physical");
            Assert.AreEqual(0, actualBytes[14], "SubUni");
            Assert.AreEqual(0, actualBytes[15], "Net");
            Assert.AreEqual(2, actualBytes[16], "LengthHi");
            Assert.AreEqual(0, actualBytes[17], "Length");
        }
Пример #2
0
        public void ArtDmxPackageCtorPairs2Explicit()
        {
            // Arrange

            // Act
            var actual      = new ArtDmxPackage(1, 1, 2, 2);
            var actualBytes = actual.GetBytes();

            // Assert
            Assert.AreEqual(0, actual.Universe);
            Assert.AreEqual(1, actualBytes[18]);
            Assert.AreEqual(2, actualBytes[19]);
        }
Пример #3
0
        //private IDictionary<short, Fade> fades;

        public ArtNetFascade(short universe, string host)
        {
            persistence        = new Persistence();
            package            = persistence.Get(universe);
            sender             = new Sender(host);
            sendTimer          = new Timer(10);
            sendTimer.Elapsed += sendTimer_Elapsed;
            sendTimer.Start();
            saveTimer          = new Timer(2000);
            saveTimer.Elapsed += saveTimer_Elapsed;
            saveTimer.Start();
            //fades = new Dictionary<short, Fade>();
        }
Пример #4
0
        public void ArtDmxPackageCtorByteArray2Elements()
        {
            // Arrange
            var data = new byte[] { 1, 2 };

            // Act
            var actual      = new ArtDmxPackage(data);
            var actualBytes = actual.GetBytes();

            // Assert
            Assert.AreEqual(0, actual.Universe);
            Assert.AreEqual(1, actualBytes[18]);
            Assert.AreEqual(2, actualBytes[19]);
        }
Пример #5
0
        public void ArtDmxPackageCtorByteArrayEmpty()
        {
            // Arrange
            var data = new byte[0];

            // Act
            var actual      = new ArtDmxPackage(data);
            var actualBytes = actual.GetBytes();

            // Assert
            Assert.AreEqual(0, actual.Universe);
            Assert.AreEqual(0, actualBytes[18]);
            Assert.AreEqual(0, actualBytes[19]);
        }
Пример #6
0
        public void ArtDmxPackageCtorPairs0Elements()
        {
            // Arrange
            var pairs = new AddressValuePair[0];

            // Act
            var actual      = new ArtDmxPackage(pairs);
            var actualBytes = actual.GetBytes();

            // Assert
            Assert.AreEqual(0, actual.Universe);
            Assert.AreEqual(0, actualBytes[18]);
            Assert.AreEqual(0, actualBytes[19]);
        }
Пример #7
0
        public void ArtDmxPackageCtorPairs1Explicit()
        {
            // Arrange
            var data = new byte[0];

            // Act
            var actual      = new ArtDmxPackage(1, 1);
            var actualBytes = actual.GetBytes();

            // Assert
            Assert.AreEqual(0, actual.Universe);
            Assert.AreEqual(1, actualBytes[18]);
            Assert.AreEqual(0, actualBytes[19]);
        }
Пример #8
0
        public ArtDmxPackage Get(short universe)
        {
            var entity  = context.ArtDmxEntities.FirstOrDefault(e => e.Universe == universe);
            var data    = DataConverter.GetBytesFromEntity(entity);
            var package = new ArtDmxPackage(data);

            package.Universe = universe;
            if (entity != null)
            {
                package.Sequence = entity.Sequence;
            }

            return(package);
        }
Пример #9
0
        public void ArtDmxPackageCtorByteArray513Elements()
        {
            // Arrange
            var data = Enumerable.Range(0, 513).Select(i => (byte)i).ToArray();

            // Act
            var actual      = new ArtDmxPackage(data);
            var actualBytes = actual.GetBytes();

            // Assert
            Assert.AreEqual(0, actual.Universe);
            for (int i = 18; i < 530; i++)
            {
                Assert.AreEqual(data[i - 18], actualBytes[i], "i = " + i);
            }
        }
Пример #10
0
        //private IDictionary<short, Fade> fades;

        /// <summary>
        /// Initializes a new instance of the <see cref="ArtNetFascade"/> class.
        /// </summary>
        /// <param name="universe">The universe.</param>
        /// <param name="hosts">The hosts.</param>
        public ArtNetFascade(short universe, ISet <string> hosts)
        {
            persistence        = new Persistence();
            package            = persistence.GetAsync(universe).Result;
            targetPackage      = persistence.GetAsync(universe).Result;
            sender             = new Sender(hosts);
            sendTimer          = new Timer(10);
            sendTimer.Elapsed += sendTimer_Elapsed;
            sendTimer.Start();
            saveTimer          = new Timer(2000);
            saveTimer.Elapsed += saveTimer_Elapsed;
            saveTimer.Start();
            fadeTimer          = new Timer(100);
            fadeTimer.Elapsed += FadeTimer_Elapsed;
            fadeTimer.Start();
            //fades = new Dictionary<short, Fade>();
        }
Пример #11
0
        public void ArtDmxPackageCtorPairs513Elements()
        {
            // Arrange
            var data  = Enumerable.Range(1, 513).Select(i => (byte)i).ToArray();
            var pairs = Enumerable.Range(1, 514).Select(i => new AddressValuePair((short)i, (byte)i)).ToArray();

            // Act
            var actual      = new ArtDmxPackage(pairs);
            var actualBytes = actual.GetBytes();

            // Assert
            Assert.AreEqual(512, actual.Length);
            Assert.AreEqual(0, actual.Universe);
            Assert.AreEqual(530, actualBytes.Length);
            for (int i = 18; i < 530; i++)
            {
                Assert.AreEqual(data[i - 18], actualBytes[i], "i = " + i);
            }
        }
Пример #12
0
        public void ArtDmxPackageCtorPairs1ExplicitMaxValue()
        {
            // Arrange
            var data = new byte[0];

            // Act
            var actual      = new ArtDmxPackage(512, 1);
            var actualBytes = actual.GetBytes();

            // Assert
            Assert.AreEqual(512, actual.Length);
            Assert.AreEqual(0, actual.Universe);
            Assert.AreEqual(530, actualBytes.Length);
            for (int i = 18; i < 529; i++)
            {
                Assert.AreEqual(0, actualBytes[i], "i = " + i);
            }

            Assert.AreEqual(1, actualBytes[529]);
        }
Пример #13
0
        public async Task UpdateAsync(ArtDmxPackage package)
        {
            if (package == null)
            {
                throw new ArgumentNullException("package");
            }

            var entity = context.ArtDmxEntities.FirstOrDefault(r => r.Universe == package.Universe);

            if (entity == null)
            {
                entity          = context.ArtDmxEntities.Add(context.ArtDmxEntities.Create());
                entity.Universe = package.Universe;
            }

            DataConverter.SetBytesToEntity(entity, package.data);
            entity.Sequence = package.Sequence;

            await context.SaveChangesAsync();
        }
Пример #14
0
        public async Task UpdateAsync(ArtDmxPackage package)
        {
            if (package == null)
            {
                throw new ArgumentNullException(nameof(package));
            }

            if (!Directory.Exists(DataFolder))
            {
                Directory.CreateDirectory(DataFolder);
            }

            var fileContent = JsonConvert.SerializeObject(package, Formatting.Indented);
            var fullPath    = GeneratFullPath(package.Universe);

            using (var writer = File.CreateText(fullPath))
            {
                await writer.WriteAsync(fileContent);
            }
        }
Пример #15
0
        public async Task SendTest()
        {
            // Arrange
            var package  = new ArtDmxPackage(new byte[] { 1, 2 });
            var expected = package.GetBytes();

            expected[12] = 2;
            var receiver = new UdpClient(Sender.ArtNetDefaultPort);
            var sender   = new Sender("127.0.0.1");

            // Act
            var t = receiver.ReceiveAsync();
            await sender.SendAsync(package);

            var actual = (await t).Buffer;

            // Assert
            Assert.IsNotNull(actual);
            CollectionAssert.AreEqual(expected, actual);
        }