public void PASS_Serialize()
        {
            SpanFirstQuery query = new SpanFirstQuery(new SpanTermQuery("field", "value"), 3);
            string json = JsonConvert.SerializeObject(query);
            Assert.IsNotNull(json);

            string expectedJson = "{\"span_first\":{\"match\":{\"span_term\":{\"field\":\"value\"}},\"end\":3}}";
            Assert.AreEqual(expectedJson, json);
        }
 public void PASS_CreateQuery()
 {
     SpanFirstQuery query = new SpanFirstQuery(new SpanTermQuery("field", "value"), 3);
     Assert.IsNotNull(query);
     Assert.AreEqual(3, query.End);
     Assert.IsTrue(query.Match is SpanTermQuery);
     SpanTermQuery termQuery = query.Match as SpanTermQuery;
     Assert.AreEqual("field", termQuery.Field);
     Assert.AreEqual("value", termQuery.Value);
 }
 public void FAIL_CreateQuery_End()
 {
     try
     {
         SpanFirstQuery query = new SpanFirstQuery(new SpanTermQuery("field", "value"), -1);
         Assert.Fail();
     }
     catch (ArgumentOutOfRangeException ex)
     {
         Assert.AreEqual("end", ex.ParamName);
     }
 }
 public void FAIL_CreateQuery_MatchFirst()
 {
     try
     {
         SpanFirstQuery query = new SpanFirstQuery(new SpanFirstQuery(new SpanTermQuery("field", "value"), 3), 3);
         Assert.Fail();
     }
     catch(ArgumentException ex)
     {
         Assert.AreEqual("match", ex.ParamName);
     }
 }
 public void FAIL_CreateQuery_MatchNull()
 {
     try
     {
         SpanFirstQuery query = new SpanFirstQuery(null, 3);
         Assert.Fail();
     }
     catch(ArgumentNullException ex)
     {
         Assert.AreEqual("match", 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.First.ToString()))
                fieldDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(fieldDict.First().Value.ToString());

            SpanFirstQuery query = new SpanFirstQuery(
                JsonConvert.DeserializeObject<SpanQueryBase>(fieldDict.GetString(_MATCH)),
                fieldDict.GetInt64(_END));

            query.QueryName = fieldDict.GetStringOrDefault(QuerySerializer._QUERY_NAME);

            return query;
        }