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

            string expectedJson = "{\"span_multi\":{\"match\":{\"prefix\":{\"field\":\"value\"}}}}";
            Assert.AreEqual(expectedJson, json);
        }
 public void PASS_CreateQuery()
 {
     SpanMultiTermQuery query = new SpanMultiTermQuery(new PrefixQuery("field", "value"));
     Assert.IsNotNull(query);
     Assert.IsTrue(query.Match is PrefixQuery);
     PrefixQuery prefixQuery = query.Match as PrefixQuery;
     Assert.AreEqual("field", prefixQuery.Field);
     Assert.AreEqual("value", prefixQuery.Value);
 }
        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.MultiTerm.ToString()))
                fieldDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(fieldDict.First().Value.ToString());

            SpanMultiTermQuery query = new SpanMultiTermQuery(JsonConvert.DeserializeObject<IQuery>(fieldDict.GetString(_MATCH)));
            query.QueryName = fieldDict.GetStringOrDefault(QuerySerializer._QUERY_NAME);

            return query;
        }
 public void FAIL_CreateQuery_TermQuery()
 {
     try
     {
         SpanMultiTermQuery query = new SpanMultiTermQuery(new TermQuery("field", "value"));
         Assert.Fail();
     }
     catch (ArgumentException ex)
     {
         Assert.AreEqual("match", ex.ParamName);
     }
 }
 public void FAIL_CreateQuery_Null()
 {
     try
     {
         SpanMultiTermQuery query = new SpanMultiTermQuery((IQuery)null);
         Assert.Fail();
     }
     catch (ArgumentNullException ex)
     {
         Assert.AreEqual("match", ex.ParamName);
     }
 }