public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            Dictionary<string, object> filterDict = serializer.Deserialize<Dictionary<string, object>>(reader);
            Dictionary<string, object> fieldDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(filterDict.First().Value.ToString());

            EdgeNGramTokenFilter filter = new EdgeNGramTokenFilter(filterDict.First().Key);
            TokenFilterBase.Deserialize(filter, fieldDict);
            filter.MinimumSize = fieldDict.GetInt64(_MINIMUM_GRAM, EdgeNGramTokenFilter._MINIMUM_SIZE_DEFAULT);
            filter.MaximumSize = fieldDict.GetInt64(_MAXIMUM_GRAM, EdgeNGramTokenFilter._MAXIMUM_SIZE_DEFAULT);
            filter.Side = SideEnum.Find(fieldDict.GetString(_SIDE, EdgeNGramTokenFilter._SIDE_DEFAULT.ToString()));

            return filter;
        }
        public void PASS_Serialize()
        {
            EdgeNGramTokenFilter filter = new EdgeNGramTokenFilter("name")
            {
                MinimumSize = 2,
                MaximumSize = 5,
                Side = SideEnum.Back
            };

            string json = JsonConvert.SerializeObject(filter);
            Assert.IsNotNull(json);

            string expectedJson = "{\"name\":{\"type\":\"edgeNGram\",\"min_gram\":2,\"max_gram\":5,\"side\":\"back\"}}";
            Assert.AreEqual(expectedJson, json);
        }
        public void PASS_Create()
        {
            EdgeNGramTokenFilter filter = new EdgeNGramTokenFilter("name")
            {
                MinimumSize = 2,
                MaximumSize = 5,
                Side = SideEnum.Back
            };

            Assert.IsNotNull(filter);
            Assert.AreEqual("name", filter.Name);
            Assert.AreEqual((int)2, filter.MinimumSize);
            Assert.AreEqual((int)5, filter.MaximumSize);
            Assert.AreEqual(SideEnum.Back, filter.Side);
        }