示例#1
0
 public void WhenAttemptingToCreateAGeoLocationParameterFromEmptyString()
 {
     Assert.Throws <ArgumentNullException>(() =>
     {
         GeoLocationParameter point = "";
     });
 }
示例#2
0
            public void WhenSerialisingAGeoLocationParameterToString()
            {
                GeoLocationParameter point = "1.1,1.22";

                var result   = JsonConvert.SerializeObject(point, Formatting.None);
                var expected = "{\"lat\":1.1,\"lon\":1.22}";

                result.Should().Be(expected);
            }
示例#3
0
            public void WhenAttemptingToCreateAGeoLocationParameterWithInvalidLongitude(double longitude)
            {
                Action a = () =>
                {
                    var point = new GeoLocationParameter(0, longitude);
                };

                a.Should().Throw <ArgumentOutOfRangeException>().And.Message.Should().Contain("longitude");
            }
示例#4
0
            public void WhenAttemptingToCreateAGeoLocationParameterFromInvalidString(string input)
            {
                Action a = () =>
                {
                    GeoLocationParameter point = input;
                };

                a.Should().Throw <ArgumentException>();
            }
示例#5
0
            public void WhenDeserialisingAGeoLocationParameterFromString()
            {
                var input  = "{\"lat\":1.1,\"lon\":1.22}";
                var result = JsonConvert.DeserializeObject <GeoLocationParameter>(input);

                GeoLocationParameter expected = "1.1,1.22";

                result.Should().Be(expected);
            }
示例#6
0
        public void WhenCalculatingDistanceBetweenTwoPoints(string from, string to, double distance)
        {
            GeoLocationParameter fromPoint = from;
            GeoLocationParameter toPoint   = to;

            var result = GeoMath.Distance(fromPoint.Latitude, fromPoint.Longitude, toPoint.Latitude, toPoint.Longitude,
                                          GeoMath.MeasureUnits.Miles);

            result.Should().Be(distance);
        }
示例#7
0
            public void WhenDeserialisingAGeoLocationParameterFromString()
            {
                var input = "{\"lat\":1.1,\"lon\":1.22}";
                var connectionSettings = new ConnectionSettings(new SingleNodeConnectionPool(new Uri("http://localhost:9200")));
                var client             = new ElasticClient(connectionSettings);
                var strm   = new MemoryStream(Encoding.UTF8.GetBytes(input));
                var result = client.SourceSerializer.Deserialize <GeoLocationParameter>(strm);

                GeoLocationParameter expected = "1.1,1.22";

                result.Should().Be(expected);
            }
        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
        {
            var s = value as string;

            if (s == null)
            {
                return(base.ConvertFrom(context, culture, value));
            }
            GeoLocationParameter point = s;

            return(point);
        }
示例#9
0
            public void WhenSerialisingAGeoLocationParameterToString()
            {
                GeoLocationParameter point = "1.1,1.22";

                var stream             = new MemoryStream();
                var connectionSettings = new ConnectionSettings(new SingleNodeConnectionPool(new Uri("http://localhost:9200")));
                var client             = new ElasticClient(connectionSettings);

                client.SourceSerializer.Serialize(point, stream, SerializationFormatting.None);
                stream.Seek(0, SeekOrigin.Begin);
                using (var r = new StreamReader(stream))
                {
                    var result   = r.ReadToEnd();
                    var expected = "{\"lat\":1.1,\"lon\":1.22}";
                    result.Should().Be(expected);
                }
            }
 public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
 {
     if (reader.TokenType == JsonToken.StartObject)
     {
         var geoLocationJObject = JObject.Load(reader);
         var lat   = geoLocationJObject.Value <double>("lat");
         var lon   = geoLocationJObject.Value <double>("lon");
         var point = GeoLocation.TryCreate(lat, lon);
         if (objectType == typeof(string))
         {
             return(point.ToString());
         }
         return(point);
     }
     if (reader.TokenType == JsonToken.String)
     {
         GeoLocationParameter point = (string)reader.Value;
         return(point);
     }
     return(null);
 }