Beispiel #1
0
        /// <summary>
        /// Handles mapping some common state values to google acceptable state values.
        /// </summary>
        /// <param name="stateValue">State value.</param>
        /// <param name="googleType">Google type.</param>
        /// <returns>Remapped value.</returns>
        public object MapValueToGoogle(string stateValue, GoogleType googleType)
        {
            // Run any transforms first
            if (ValueMap != null && ValueMap.Count > 0)
            {
                foreach (var valueMap in ValueMap)
                {
                    if (valueMap.MatchesMqtt(stateValue))
                    {
                        // Do value comparison, break on first match
                        stateValue = valueMap.ConvertToGoogle(stateValue);
                        break;
                    }
                }
            }

            // Convert to Google type
            switch (googleType)
            {
            case GoogleType.Bool:
                if (bool.TryParse(stateValue, out bool boolValue))
                {
                    return(boolValue);
                }
                else
                {
                    return(default(bool));
                }

            case GoogleType.Numeric:
                if (int.TryParse(stateValue, out int intValue))
                {
                    return(intValue);
                }
                else if (decimal.TryParse(stateValue, out decimal decimalValue))
                {
                    return(decimalValue);
                }
                else
                {
                    return(default(int));
                }

            case GoogleType.String:
                return(stateValue);
            }

            return(null);
        }
Beispiel #2
0
        public void MapValueToGoogleConvertsTypes(GoogleType googleType, string value, object expected, Type expectedType)
        {
            // Arrange
            var deviceState = new DeviceState();

            // Hack for decimal constant values for InlineData
            if (expected is double)
            {
                expected = Convert.ToDecimal(expected);
            }

            // Act
            var result = deviceState.MapValueToGoogle(value, googleType);

            // Assert
            Assert.Equal(expected, result);
            Assert.Equal(expectedType, result.GetType());
        }
Beispiel #3
0
 /// <summary>
 /// Constructor; Defines the base uri format and Google type for the tile source.
 /// </summary>
 public GoogleSource(GoogleType type)
 {
     Label     = type.ToString();
     MapType   = type;
     UriFormat = @"http://mt{0}.google.com/vt/lyrs={1}&z={2}&x={3}&y={4}";
 }
        public void GetGoogleTypeForFlattenedPathReturns(TraitType traitType, string target, GoogleType googleType)
        {
            // Arrange
            var schemas = TraitSchemaProvider.GetTraitSchemas();
            var schema  = schemas.FirstOrDefault(x => x.Trait == traitType);

            // Act
            var result = schema.StateSchema.Validator.GetGoogleTypeForFlattenedPath(target);

            // Assert
            Assert.Equal(googleType, result);
        }