/// <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); }
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()); }
/// <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); }