public void ShouldParseUdpResponse()
        {
            Subject.Network.Command.Response.Parser subject = new Subject.Network.Command.Response.Parser(Builders);

            IEnumerable<Subject.Network.Command.IResponse> responses = subject.GetResponses(Resources.UdpResponse);
            Subject.Network.Command.Response.Udp response = responses.OfType<Subject.Network.Command.Response.Udp>().FirstOrDefault();

            Assert.IsNotNull(response);
            Assert.AreEqual(Subject.Network.Command.Status.Ok, response.Status);
            Assert.AreEqual(string.Empty, response.HostName);
            Assert.AreEqual(new IPEndPoint(IPAddress.Parse("192.168.1.27"), 13), response.Endpoint);
        }
        public void ShouldParseRostaResponse()
        {
            Subject.Network.Command.Response.Parser subject = new Subject.Network.Command.Response.Parser(Builders);

            IEnumerable<Subject.Network.Command.IResponse> responses = subject.GetResponses(Resources.RostaResponse);
            Subject.Network.Command.Response.Rosta response = responses.OfType<Subject.Network.Command.Response.Rosta>().FirstOrDefault();

            Assert.IsNotNull(response);
            Assert.AreEqual(Subject.Network.Command.Status.Ok, response.Status);
            Assert.IsNotNull(response.Devices);            
            Assert.AreEqual("0=CMR180|1=ROOM_STAT", string.Join("|", response.Devices.Select(tuple => string.Format("{0}={1}", tuple.Item1, tuple.Item2)).ToArray()));
        }
        public void ShouldParseVersionResponse()
        {
            Subject.Network.Command.Response.Parser subject = new Subject.Network.Command.Response.Parser(Builders);

            IEnumerable<Subject.Network.Command.IResponse> responses = subject.GetResponses(Resources.VersionResponse);
            Subject.Network.Command.Response.Version response = responses.OfType<Subject.Network.Command.Response.Version>().FirstOrDefault();

            Assert.IsNotNull(response);
            Assert.AreEqual(Subject.Network.Command.Status.Ok, response.Status);
            Assert.AreEqual("3", response.Firmware);
            Assert.AreEqual("1", response.Revision);
            Assert.AreEqual("4", response.Build);
        }
        public void ShouldParseDeviceResponse()
        {
            Subject.Network.Command.Response.Parser subject = new Subject.Network.Command.Response.Parser(Builders);

            IEnumerable<Subject.Network.Command.IResponse> responses = subject.GetResponses(Resources.DeviceResponse);
            Subject.Network.Command.Response.Device response = responses.OfType<Subject.Network.Command.Response.Device>().FirstOrDefault();

            Assert.IsNotNull(response);
            Assert.AreEqual(Subject.Network.Command.Status.Ok, response.Status);
            Assert.AreEqual(0, response.Index);
            Assert.AreEqual("F2", response.DeviceAddress);
            Assert.AreEqual("CMR180", response.DeviceType);
            Assert.AreEqual("0", response.DeviceState);
            Assert.AreEqual(Values.SignalStrength.Parse("-53"), response.SignalStrength);
            Assert.AreEqual(Values.LinkQuality.Parse("20"), response.LinkQuality);
            Assert.AreEqual(Values.BatteryState.Parse("1"), response.BatteryState);
            Assert.AreEqual(TimeSpan.FromSeconds(1), response.TimeSinceLastPacketReceived);
            Assert.AreEqual(178, response.ReceivedPackets);
            Assert.AreEqual(0, response.SentPackets);
        }
        public void ShouldParseSaveResponse()
        {
            Subject.Network.Command.Response.Parser subject = new Subject.Network.Command.Response.Parser(Builders);

            IEnumerable<Subject.Network.Command.IResponse> responses = subject.GetResponses(Resources.SaveResponse);
            Subject.Network.Command.Response.Save response = responses.OfType<Subject.Network.Command.Response.Save>().FirstOrDefault();

            Assert.IsNotNull(response);
            Assert.AreEqual(Subject.Network.Command.Status.Ok, response.Status);
        }