Exemple #1
0
        public static ReadOnlyThermostatState FromXElement(XElement element)
        {
            IThermostatCoreState coreState = null;
            var coreStateNode = element.Element("ThermostatCoreState");

            if (coreStateNode != null)
            {
                coreState = coreStateNode.ToThermostatCoreState();
            }

            IThermostatFanState fanState = null;
            var fanStateNode             = element.Element("ThermostatFanState");

            if (fanStateNode != null)
            {
                fanState = fanStateNode.ToThermostatFanState();
            }

            IThermostatSetpointCollectionState setpoints = null;
            var setpointsNode = element.Element("Setpoints");

            if (setpointsNode != null)
            {
                setpoints = setpointsNode.ToSetpoints();
            }

            var result = new ReadOnlyThermostatState
            {
                CoreState      = coreState,
                FanState       = fanState,
                SetpointStates = setpoints
            };

            return(result);
        }
        public static ReadOnlyThermostatSetpointCollection CopyFrom(IThermostatSetpointCollectionState source)
        {
            var result = new ReadOnlyThermostatSetpointCollection
            {
                _setpoints = source.AvailableSetpoints.ToDictionary(setpoint => setpoint, setpoint => source[setpoint])
            };

            return result;
        }
Exemple #3
0
        public static ReadOnlyThermostatSetpointCollection CopyFrom(IThermostatSetpointCollectionState source)
        {
            var result = new ReadOnlyThermostatSetpointCollection
            {
                _setpoints = source.AvailableSetpoints.ToDictionary(setpoint => setpoint, setpoint => source[setpoint])
            };

            return(result);
        }
Exemple #4
0
        public static void AssertThermostatSetpointsAreEqual(IThermostatSetpointCollectionState one, IThermostatSetpointCollectionState two)
        {
            if (one == null && two == null)
            {
                return;
            }

            AssertHelperHelper(one, two);

            CollectionAssert.AreEquivalent(one.AvailableSetpoints, two.AvailableSetpoints);

            foreach (var setpoint in one.AvailableSetpoints)
            {
                CollectionAssert.Contains(two.AvailableSetpoints, setpoint);
                Assert.That(one[setpoint], Is.EqualTo(two[setpoint]));
            }
        }
        public static Dictionary <ThermostatSetpointType, ITemperature> ToDictionary(this IThermostatSetpointCollectionState state)
        {
            if (state == null)
            {
                return(null);
            }

            var availableSetpoints = state.AvailableSetpoints;

            if (availableSetpoints == null)
            {
                return(null);
            }

            var result = availableSetpoints.ToDictionary(x => x, type => state[type]);

            return(result);
        }
        public static XElement ToXElement(this IThermostatSetpointCollectionState state, string nodeName = "Setpoints")
        {
            var result = new XElement(nodeName);

            if (state != null)
            {
                var setpoints = state.ToDictionary();

                if (setpoints != null && setpoints.Count > 0)
                {
                    foreach (var setpoint in setpoints.Keys)
                    {
                        var temperature = setpoints[setpoint];
                        result.Add(new XElement(setpoint.ToString(), temperature));
                    }
                }
            }

            return(result);
        }
        public static string Describe(this IThermostatSetpointCollectionState state)
        {
            var result = new StringBuilder();

            if (state == null)
            {
                return(result.ToString());
            }

            var setpointTypes = state.AvailableSetpoints.ToList();

            if (setpointTypes.Count == 0)
            {
                return(result.ToString());
            }

            foreach (var setpointType in setpointTypes)
            {
                if (result.Length > 0)
                {
                    result.Append(", ");
                }

                result.Append(setpointType);

                var temperature = state[setpointType];

                result.Append(" at ");

                if (temperature == null)
                {
                    result.Append("?");
                }
                else
                {
                    result.Append(temperature);
                }
            }

            return(result.ToString());
        }
Exemple #8
0
        public void Update(IThermostatSetpointCollectionState state)
        {
            var originalKeys = Keys.ToList();

            foreach (var key in state.AvailableSetpoints)
            {
                var value = state[key];

                if (originalKeys.Contains(key))
                {
                    this[key] = value;
                    originalKeys.Remove(key);
                }
                else
                {
                    Add(key, value);
                }
            }

            foreach (var key in originalKeys)
            {
                Remove(key);
            }
        }
 public ReadOnlyThermostatState(IThermostatCoreState coreState, IThermostatFanState fanState, IThermostatSetpointCollectionState setpointStates)
 {
     CoreState = coreState;
     FanState = fanState;
     SetpointStates = setpointStates;
 }
        public static bool HasData(this IThermostatSetpointCollectionState state)
        {
            var result = state.AvailableSetpoints != null && state.AvailableSetpoints.Any();

            return(result);
        }
 public static ReadOnlyThermostatSetpointCollection Copy(this IThermostatSetpointCollectionState source)
 {
     return(ReadOnlyThermostatSetpointCollection.CopyFrom(source));
 }
Exemple #12
0
 public ReadOnlyThermostatState(IThermostatCoreState coreState, IThermostatFanState fanState, IThermostatSetpointCollectionState setpointStates)
 {
     CoreState      = coreState;
     FanState       = fanState;
     SetpointStates = setpointStates;
 }