| /** |
| * 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.tajo.type; |
| |
| import org.junit.Test; |
| |
| import static org.apache.tajo.common.TajoDataTypes.Type.*; |
| import static org.apache.tajo.schema.Field.Field; |
| import static org.apache.tajo.schema.QualifiedIdentifier.$; |
| import static org.apache.tajo.type.Type.Array; |
| import static org.apache.tajo.type.Type.Blob; |
| import static org.apache.tajo.type.Type.Bool; |
| import static org.apache.tajo.type.Type.Char; |
| import static org.apache.tajo.type.Type.Date; |
| import static org.apache.tajo.type.Type.Float4; |
| import static org.apache.tajo.type.Type.Float8; |
| import static org.apache.tajo.type.Type.Int1; |
| import static org.apache.tajo.type.Type.Int2; |
| import static org.apache.tajo.type.Type.Int4; |
| import static org.apache.tajo.type.Type.Int8; |
| import static org.apache.tajo.type.Type.Map; |
| import static org.apache.tajo.type.Type.Numeric; |
| import static org.apache.tajo.type.Type.Time; |
| import static org.apache.tajo.type.Type.Timestamp; |
| import static org.apache.tajo.type.Type.Varchar; |
| import static org.junit.Assert.assertEquals; |
| |
| public class TestType { |
| @Test |
| public final void testPrimitiveTypes() { |
| assertEquals(Bool.kind(), BOOLEAN); |
| assertEquals(Int1.kind(), INT1); |
| assertEquals(Int2.kind(), INT2); |
| assertEquals(Int4.kind(), INT4); |
| assertEquals(Int8.kind(), INT8); |
| assertEquals(Float4.kind(), FLOAT4); |
| assertEquals(Float8.kind(), FLOAT8); |
| assertEquals(Date.kind(), DATE); |
| assertEquals(Time.kind(), TIME); |
| assertEquals(Timestamp.kind(), TIMESTAMP); |
| |
| Numeric n = Numeric(4, 2); |
| assertEquals(n.kind(), NUMERIC); |
| assertEquals(n.precision(), 4); |
| assertEquals(n.scale(), 2); |
| |
| assertEquals(Blob.kind(), BLOB); |
| |
| Char c = Char(2); |
| assertEquals(c.kind(), CHAR); |
| assertEquals(c.length(), 2); |
| |
| Varchar varchar = Varchar(2); |
| assertEquals(varchar.kind(), VARCHAR); |
| assertEquals(varchar.length(), 2); |
| |
| Record record = Type.Record(Field("x", Int8), Field("y", Array(Float8))); |
| assertEquals(record.kind(), RECORD); |
| assertEquals(record.field(0).baseType(), INT8); |
| assertEquals(record.field(0).name(), $("x")); |
| assertEquals(record.field(1).baseType(), ARRAY); |
| assertEquals(record.field(1).name(), $("y")); |
| |
| Map map = Map(Int8, Array(Timestamp)); |
| assertEquals(map.kind(), MAP); |
| assertEquals(map.keyType().kind(), INT8); |
| assertEquals(map.valueType().kind(), ARRAY); |
| |
| Array array = Array(Int8); |
| assertEquals(array.kind(), ARRAY); |
| assertEquals(array.elementType().kind(), INT8); |
| } |
| |
| @Test |
| public final void testToString() { |
| assertEquals("BOOLEAN", Bool.toString()); |
| assertEquals("INT1", Int1.toString()); |
| assertEquals("INT2", Int2.toString()); |
| assertEquals("INT4", Int4.toString()); |
| assertEquals("INT8", Int8.toString()); |
| assertEquals("FLOAT4", Float4.toString()); |
| assertEquals("FLOAT8", Float8.toString()); |
| assertEquals("DATE", Date.toString()); |
| assertEquals("TIME", Time.toString()); |
| assertEquals("TIMESTAMP", Timestamp.toString()); |
| |
| Numeric n = Numeric(4, 2); |
| assertEquals("NUMERIC(4,2)", n.toString()); |
| |
| assertEquals("BLOB", Blob.toString()); |
| |
| Char c = Char(2); |
| assertEquals("CHAR(2)", c.toString()); |
| |
| Varchar varchar = Varchar(2); |
| assertEquals("VARCHAR(2)", varchar.toString()); |
| |
| Record record = Type.Record(Field("x", Int8), Field("y", Array(Float8))); |
| assertEquals("RECORD(x (INT8), y (ARRAY<FLOAT8>))", record.toString()); |
| |
| Map map = Map(Int8, Array(Timestamp)); |
| assertEquals("MAP<INT8,ARRAY<TIMESTAMP>>", map.toString()); |
| |
| Array array = Array(Int8); |
| assertEquals("ARRAY<INT8>", array.toString()); |
| } |
| } |