public void PASS_CreateQuery()
        {
            SpanNearQuery query = new SpanNearQuery(new List<SpanQueryBase>(){
                    new SpanTermQuery("field", "value")
                });

            Assert.IsNotNull(query);
            Assert.AreEqual(1, query.Clauses.Count());
        }
        public void PASS_Serialize()
        {
            SpanNearQuery query = new SpanNearQuery(new List<SpanQueryBase>(){
                    new SpanTermQuery("field", "value")
                });
            string json = JsonConvert.SerializeObject(query);
            Assert.IsNotNull(json);

            string expectedJson = "{\"span_near\":{\"clauses\":[{\"span_term\":{\"field\":\"value\"}}],\"in_order\":false,\"collect_payloads\":false}}";

            Assert.AreEqual(expectedJson, json);
        }
 public void FAIL_CreateQuery()
 {
     try
     {
         SpanNearQuery query = new SpanNearQuery(new List<SpanQueryBase>() { null });
         Assert.Fail();
     }
     catch(ArgumentNullException ex)
     {
         Assert.AreEqual("clauses", ex.ParamName);
     }
 }
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            Dictionary<string, object> fieldDict = serializer.Deserialize<Dictionary<string, object>>(reader);
            if (fieldDict.ContainsKey(SpanQueryTypeEnum.Near.ToString()))
                fieldDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(fieldDict.First().Value.ToString());

            SpanNearQuery query = new SpanNearQuery(JsonConvert.DeserializeObject<IEnumerable<SpanQueryBase>>(fieldDict.GetString(_CLAUSES)));

            query.Slop = fieldDict.GetInt32OrNull(_SLOP);
            query.RequireMatchesInOrder = fieldDict.GetBoolOrDefault(_IN_ORDER);
            query.CollectPayloads = fieldDict.GetBoolOrDefault(_COLLECT_PAYLOADS);
            query.QueryName = fieldDict.GetStringOrDefault(QuerySerializer._QUERY_NAME);

            return query;
        }