package act.util; /*- * #%L * ACT Framework * %% * Copyright (C) 2014 - 2017 ActFramework * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ import act.TestBase; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.parser.Feature; import com.alibaba.fastjson.parser.ParserConfig; import com.alibaba.fastjson.serializer.SerializeConfig; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.osgl.util.KV; import org.osgl.util.KVStore; public class FastJsonKvCodecTest extends TestBase { private KV kv; @Before public void prepareData() { kv = new KVStore(); } private void addInt() { kv.putValue("int", 3); } private void addIntAndStr() { addInt(); kv.putValue("str", "foo"); } private void addNestedKV() { addIntAndStr(); KV kv0 = new KVStore(); kv0.putValue("x", 6.6); kv.putValue("n1", kv0); } @BeforeClass public static void prepare() { SerializeConfig config = SerializeConfig.getGlobalInstance(); config.put(KV.class, FastJsonKvCodec.INSTANCE); config.put(KVStore.class, FastJsonKvCodec.INSTANCE); ParserConfig parserConfig = ParserConfig.getGlobalInstance(); parserConfig.putDeserializer(KV.class, FastJsonKvCodec.INSTANCE); parserConfig.putDeserializer(KVStore.class, FastJsonKvCodec.INSTANCE); JSON.DEFAULT_PARSER_FEATURE = Feature.config(JSON.DEFAULT_PARSER_FEATURE, Feature.UseBigDecimal, false); } @Test public void testSingleIntValue() { addInt(); verify(); } @Test public void testIntAndString() { addIntAndStr(); verify(); } @Test public void testNestedStructure() { addNestedKV(); verify(); } private void verify() { String s = JSON.toJSONString(kv); KV kv2 = JSON.parseObject(s, KV.class); eq(kv2, kv); } }