public void PASS_Serialize()
        {
            GeoShapeQuery query = new GeoShapeQuery("field", new Point(new CoordinatePoint(1.1, 2.2)));
            string json = JsonConvert.SerializeObject(query);
            Assert.IsNotNull(json);

            string expectedJson = "{\"geo_shape\":{\"field\":{\"shape\":{\"type\":\"point\",\"coordinates\":[2.2,1.1]}}}}";
            Assert.AreEqual(expectedJson, json);
        }
 public void PASS_CreateQuery()
 {
     GeoShapeQuery query = new GeoShapeQuery("field", new Point(new CoordinatePoint(1.1, 2.2)));
     Assert.IsNotNull(query);
     Assert.AreEqual("field", query.Field);
     Assert.IsTrue(query.GeoShape is Point);
     Assert.AreEqual(1.1, (query.GeoShape as Point).Coordinate.Latitude);
     Assert.AreEqual(2.2, (query.GeoShape as Point).Coordinate.Longitude);
 }
 public void FAIL_CreateQuery_GeoShape()
 {
     try
     {
         GeoShapeQuery query = new GeoShapeQuery("field", null);
         Assert.Fail();
     }
     catch (ArgumentNullException argEx)
     {
         Assert.AreEqual("geoShape", argEx.ParamName);
     }
 }
 public void FAIL_CreateQuery_Field()
 {
     try
     {
         GeoShapeQuery query = new GeoShapeQuery(null, new Point(new CoordinatePoint(1.1, 2.2)));
         Assert.Fail();
     }
     catch(ArgumentNullException argEx)
     {
         Assert.AreEqual("field", argEx.ParamName);
     }
 }
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            Dictionary<string, object> shapeDict = serializer.Deserialize<Dictionary<string, object>>(reader);
            if (shapeDict.ContainsKey(_GEO_SHAPE))
                shapeDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(shapeDict.First().Value.ToString());

            string fieldName = shapeDict.First().Key;
            GeoShapeBase shape = JsonConvert.DeserializeObject<GeoShapeBase>(shapeDict.First().Value.ToString());
            
            GeoShapeQuery query = new GeoShapeQuery(fieldName, shape); 
            query.QueryName = shapeDict.GetStringOrDefault(QuerySerializer._QUERY_NAME);
            return query;
        }