http://git-wip-us.apache.org/repos/asf/cassandra/blob/48ffad89/test/unit/org/apache/cassandra/db/marshal/JsonConversionTest.java ---------------------------------------------------------------------- diff --cc test/unit/org/apache/cassandra/db/marshal/JsonConversionTest.java index 0000000,f7795c7..0cebd9e mode 000000,100644..100644 --- a/test/unit/org/apache/cassandra/db/marshal/JsonConversionTest.java +++ b/test/unit/org/apache/cassandra/db/marshal/JsonConversionTest.java @@@ -1,0 -1,320 +1,320 @@@ + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + package org.apache.cassandra.db.marshal; + + import static org.junit.Assert.assertEquals; + + import java.nio.ByteBuffer; + import org.apache.cassandra.cql3.QueryOptions; -import org.apache.cassandra.transport.Server; ++import org.apache.cassandra.transport.ProtocolVersion; + import org.apache.cassandra.utils.UUIDGen; + import org.codehaus.jackson.map.ObjectMapper; + import org.junit.Test; + + public class JsonConversionTest + { + private static final ObjectMapper JSON_OBJECT_MAPPER = new ObjectMapper(); + + @Test + public void testMap() throws Exception + { + String type = "FrozenType(MapType(TupleType(ListType(Int32Type), ListType(Int32Type)), ListType(Int32Type)))"; + String json = "{" + + "\"[[1, 2, 3], [1, 2, 3]]\": [1, 2, 3], " + + "\"[[1, 2, 3, 4], [1, 2, 3, 4]]\": [1, 2, 3, 4], " + + "\"[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]\": [1, 2, 3, 4, 5]" + + "}"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testUDT() throws Exception + { + // 6161-> aa + // 78 -> x + String type = "UserType(ks,6161,78:TupleType(ListType(Int32Type), ListType(Int32Type)))"; + String json = "{" + + "\"x\": [[1, 2, 3], [1, 2, 3]]" + + "}"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testSimpleDate() throws Exception + { + String type = "SimpleDateType"; + String json = "\"1991-06-20\""; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testDate() throws Exception + { + String type = "DateType"; + String json = "\"1991-06-20 18:00:00.000Z\""; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testCounterColumn() throws Exception + { + Long value = 1L; + String json = "1"; + assertBytebufferPositionAndOutput(json, value, CounterColumnType.instance); + } + + @Test + public void testTimestamp() throws Exception + { + String type = "TimestampType"; + String json = "\"1991-06-20 18:00:00.000Z\""; + assertBytebufferPositionAndOutput(json, type); + } + + @Test(expected = UnsupportedOperationException.class) + public void testDynamicCompositeType() throws Exception + { + String type = "DynamicCompositeType(a=>Int32Type, b=>Int32Type)"; + // not supported + String json = "{" + + "\"a\":1," + + "\"b\":2" + + "}"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test(expected = UnsupportedOperationException.class) + public void testCompositeType() throws Exception + { + String type = "CompositeType(Int32Type, Int32Type)"; + // not supported + String json = "{" + + "\"a\":1," + + "\"b\":2" + + "}"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testList() throws Exception + { + String type = "FrozenType(ListType(TupleType(ListType(Int32Type), ListType(Int32Type))))"; + String json = "[" + + "[[1, 2, 3], [1, 2, 3]], " + + "[[1, 2, 3, 4], [1, 2, 3, 4]], " + + "[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]" + + "]"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testSet() throws Exception + { + String type = "FrozenType(SetType(TupleType(Int32Type, Int32Type)))"; + String json = "[[1, 2], [1, 3], [2, 3]]"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testTuple() throws Exception + { + String type = "FrozenType(TupleType(TupleType(ListType(Int32Type), ListType(Int32Type))))"; + String json = "[" + + "[[1, 2, 3], [1, 2, 3]]" + + "]"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testInt32() throws Exception + { + String type = "Int32Type"; + String json = "10000000"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testReversed() throws Exception + { + String type = "ReversedType(Int32Type)"; + String json = "10000000"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testInteger() throws Exception + { + String type = "IntegerType"; + String json = "10000000"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testDecimal() throws Exception + { + String type = "DecimalType"; + String json = "100000.01"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testEmpty() throws Exception + { + String type = "EmptyType"; + String json = "\"\""; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testDouble() throws Exception + { + String type = "DoubleType"; + String json = "100000.01"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testFloat() throws Exception + { + String type = "FloatType"; + String json = "100000.01"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testShort() throws Exception + { + String type = "ShortType"; + String json = "100"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testByte() throws Exception + { + String type = "ByteType"; + String json = "0"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testTime() throws Exception + { + String type = "TimeType"; + String json = "\"00:00:00.000001991\""; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testInetAddress() throws Exception + { + String type = "InetAddressType"; + String json = "\"127.0.0.1\""; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testBoolean() throws Exception + { + String type = "BooleanType"; + String json = "false"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testLong() throws Exception + { + String type = "LongType"; + String json = "10000000000"; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testAscii() throws Exception + { + String type = "AsciiType"; + String json = "\"aaa\""; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testBytes() throws Exception + { + String type = "BytesType"; + String json = "\"0x00000001\""; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testUUID() throws Exception + { + String type = "UUIDType"; + String json = "\"6bddc89a-5644-11e4-97fc-56847afe9799\""; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testLexicalUUID() throws Exception + { + String type = "LexicalUUIDType"; + String json = "\"6bddc89a-5644-11e4-97fc-56847afe9799\""; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testTimeUUID() throws Exception + { + String type = "TimeUUIDType"; + String json = "\"" + UUIDGen.getTimeUUID() + "\""; + assertBytebufferPositionAndOutput(json, type); + } + + @Test + public void testUtf8() throws Exception + { + String type = "UTF8Type"; + String json = "\"abc\""; + assertBytebufferPositionAndOutput(json, type); + } + + // for those only supports toJson, eg. Counter + private static <T> void assertBytebufferPositionAndOutput(String json, T value, AbstractType<T> type) + throws Exception + { + ByteBuffer bb = type.getSerializer().serialize(value); + int position = bb.position(); + - String output = type.toJSONString(bb, Server.CURRENT_VERSION); ++ String output = type.toJSONString(bb, ProtocolVersion.CURRENT); + assertEquals(position, bb.position()); + assertEquals(json, output); + } + + // test fromJSONObject and toJSONString + private static void assertBytebufferPositionAndOutput(String json, String typeString) throws Exception + { + AbstractType<?> type = TypeParser.parse(typeString); + Object jsonObject = JSON_OBJECT_MAPPER.readValue(json, Object.class); + ByteBuffer bb = type.fromJSONObject(jsonObject).bindAndGet(QueryOptions.DEFAULT); + int position = bb.position(); + - String output = type.toJSONString(bb, Server.CURRENT_VERSION); ++ String output = type.toJSONString(bb, ProtocolVersion.CURRENT); + assertEquals(position, bb.position()); + assertEquals(json, output); + } + }
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
