public void PASS_CreateQuery()
 {
     PrefixQuery query = new PrefixQuery("field", "value");
     Assert.IsNotNull(query);
     Assert.AreEqual("field", query.Field);
     Assert.AreEqual("value", query.Value);
 }
        public void PASS_Serialize_Boost()
        {
            PrefixQuery query = new PrefixQuery("field", "value") { Boost = 1.2 };
            string json = JsonConvert.SerializeObject(query);

            Assert.IsNotNull(json);
            string expectedJson = "{\"prefix\":{\"field\":{\"value\":\"value\",\"boost\":1.2}}}";

            Assert.AreEqual(expectedJson, json);
        }
 public void FAIL_CreateQuery_Query()
 {
     try
     {
         PrefixQuery query = new PrefixQuery("field", null);
         Assert.Fail();
     }
     catch (ArgumentNullException ex)
     {
         Assert.AreEqual("value", 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(QueryTypeEnum.Prefix.ToString()))
                fieldDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(fieldDict.First().Value.ToString());

            Dictionary<string, object> internalDict = null;
            string field = null;
            string value = null;
            double boost = QuerySerializer._BOOST_DEFAULT;
            try
            {
                internalDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(fieldDict.First().Value.ToString());
            }
            catch 
            {
                internalDict = fieldDict;
            }

            if (internalDict.ContainsKey(_VALUE))
            {
                field = fieldDict.First().Key;
                value = internalDict.GetString(_VALUE);
                boost = internalDict.GetDouble(QuerySerializer._BOOST, QuerySerializer._BOOST_DEFAULT);
            }               
            else
            {
                field = internalDict.First().Key;
                value = internalDict.First().Value.ToString();
            }

            PrefixQuery query = new PrefixQuery(field, value) { Boost = boost };
            query.QueryName = internalDict.GetStringOrDefault(QuerySerializer._QUERY_NAME);

            return query;
        }