| /** |
| * 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.datum; |
| |
| import org.junit.Test; |
| import org.apache.tajo.common.TajoDataTypes.Type; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertTrue; |
| |
| public class TestDatum { |
| |
| @Test |
| public final void testPlusDatumDatum() { |
| Datum x; |
| Datum y; |
| Datum z; |
| |
| x = DatumFactory.createInt4(1); |
| y = DatumFactory.createInt4(2); |
| z = x.plus(y); |
| assertEquals(z.type(), Type.INT4); |
| assertEquals(z.asInt4(),3); |
| z = y.plus(x); |
| assertEquals(z.type(),Type.INT4); |
| assertEquals(z.asInt4(),3); |
| |
| x = DatumFactory.createInt4(1); |
| y = DatumFactory.createInt8(2l); |
| z = x.plus(y); |
| assertEquals(z.type(),Type.INT8); |
| assertEquals(z.asInt8(),3l); |
| z = y.plus(x); |
| assertEquals(z.type(),Type.INT8); |
| assertEquals(z.asInt8(),3l); |
| |
| y = DatumFactory.createFloat4(2.5f); |
| z = x.plus(y); |
| assertEquals(z.type(),Type.FLOAT4); |
| assertTrue(z.asFloat4() == 3.5f); |
| z = y.plus(x); |
| assertEquals(z.type(),Type.FLOAT4); |
| assertEquals(z.asInt4(),3); |
| |
| y = DatumFactory.createFloat8(4.5d); |
| z = x.plus(y); |
| assertEquals(z.type(),Type.FLOAT8); |
| assertTrue(z.asFloat8() == 5.5d); |
| z = y.plus(x); |
| assertEquals(z.type(),Type.FLOAT8); |
| assertTrue(z.asFloat8() == 5.5d); |
| } |
| |
| @Test |
| public final void testMinusDatumDatum() { |
| Datum x; |
| Datum y; |
| Datum z; |
| |
| x = DatumFactory.createInt4(5); |
| y = DatumFactory.createInt4(2); |
| z = x.minus(y); |
| assertEquals(z.type(),Type.INT4); |
| assertEquals(z.asInt4(),3); |
| z = y.minus(x); |
| assertEquals(z.type(),Type.INT4); |
| assertEquals(z.asInt4(),-3); |
| |
| y = DatumFactory.createInt8(2l); |
| z = x.minus(y); |
| assertEquals(z.type(),Type.INT8); |
| assertEquals(z.asInt8(),3l); |
| z = y.minus(x); |
| assertEquals(z.type(),Type.INT8); |
| assertEquals(z.asInt8(),-3l); |
| |
| y = DatumFactory.createFloat4(2.5f); |
| z = x.minus(y); |
| assertEquals(z.type(),Type.FLOAT4); |
| assertTrue(z.asFloat4() == 2.5f); |
| z = y.minus(x); |
| assertEquals(z.type(),Type.FLOAT4); |
| assertTrue(z.asFloat4() == -2.5f); |
| |
| y = DatumFactory.createFloat8(4.5d); |
| z = x.minus(y); |
| assertEquals(z.type(),Type.FLOAT8); |
| assertTrue(z.asFloat8() == 0.5d); |
| z = y.minus(x); |
| assertEquals(z.type(),Type.FLOAT8); |
| assertTrue(z.asFloat8() == -0.5d); |
| } |
| |
| @Test |
| public final void testMultiplyDatumDatum() { |
| Datum x; |
| Datum y; |
| Datum z; |
| |
| x = DatumFactory.createInt4(5); |
| y = DatumFactory.createInt4(2); |
| z = x.multiply(y); |
| assertEquals(z.type(),Type.INT4); |
| assertEquals(z.asInt4(),10); |
| z = y.multiply(x); |
| assertEquals(z.type(),Type.INT4); |
| assertEquals(z.asInt4(),10); |
| |
| y = DatumFactory.createInt8(2l); |
| z = x.multiply(y); |
| assertEquals(z.type(),Type.INT8); |
| assertEquals(z.asInt8(),10l); |
| z = y.multiply(x); |
| assertEquals(z.type(),Type.INT8); |
| assertEquals(z.asInt8(),10l); |
| |
| y = DatumFactory.createFloat4(2.5f); |
| z = x.multiply(y); |
| assertEquals(z.type(),Type.FLOAT4); |
| assertTrue(z.asFloat4() == 12.5f); |
| z = y.multiply(x); |
| assertEquals(z.type(),Type.FLOAT4); |
| assertTrue(z.asFloat4() == 12.5f); |
| |
| y = DatumFactory.createFloat8(4.5d); |
| z = x.multiply(y); |
| assertEquals(z.type(),Type.FLOAT8); |
| assertTrue(z.asFloat8() == 22.5d); |
| z = y.multiply(x); |
| assertEquals(z.type(),Type.FLOAT8); |
| assertTrue(z.asFloat8() == 22.5d); |
| } |
| |
| @Test |
| public final void testDivideDatumDatum() { |
| Datum x; |
| Datum y; |
| Datum z; |
| |
| x = DatumFactory.createInt4(6); |
| y = DatumFactory.createInt4(3); |
| z = x.divide(y); |
| assertEquals(z.type(), Type.INT4); |
| assertEquals(z.asInt4(),2); |
| z = y.divide(x); |
| assertEquals(z.type(),Type.INT4); |
| assertTrue(z.asInt4() == 0); |
| |
| y = DatumFactory.createInt8(3l); |
| z = x.divide(y); |
| assertEquals(z.type(),Type.INT8); |
| assertEquals(z.asInt8(),2l); |
| z = y.divide(x); |
| assertEquals(z.type(),Type.INT8); |
| assertEquals(z.asInt8(),0l); |
| |
| y = DatumFactory.createFloat4(3f); |
| z = x.divide(y); |
| assertEquals(z.type(),Type.FLOAT4); |
| assertTrue(z.asFloat4() == 2.0f); |
| z = y.divide(x); |
| assertEquals(z.type(),Type.FLOAT4); |
| assertTrue(z.asFloat4() == 0.5f); |
| |
| y = DatumFactory.createFloat8(3d); |
| z = x.divide(y); |
| assertEquals(z.type(),Type.FLOAT8); |
| assertTrue(z.asFloat8() == 2.0d); |
| z = y.divide(x); |
| assertEquals(z.type(),Type.FLOAT8); |
| assertTrue(z.asFloat8() == 0.5d); |
| } |
| |
| @Test |
| public final void testEqualToDatum() { |
| Datum x; |
| Datum y; |
| Datum z; |
| |
| x = DatumFactory.createInt4(6); |
| y = DatumFactory.createInt4(3); |
| z = x.equalsTo(y); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(),false); |
| z = y.equalsTo(x); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(), false); |
| |
| x = DatumFactory.createFloat4(3.27f); |
| y = DatumFactory.createFloat4(3.27f); |
| z = x.equalsTo(y); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(),true); |
| z = y.equalsTo(x); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(), true); |
| |
| x = DatumFactory.createInt8(123456789012345l); |
| y = DatumFactory.createInt8(123456789012345l); |
| z = x.equalsTo(y); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(),true); |
| z = y.equalsTo(x); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(), true); |
| } |
| |
| @Test |
| public final void testLessThanDatum() { |
| Datum x; |
| Datum y; |
| Datum z; |
| |
| x = DatumFactory.createInt4(6); |
| y = DatumFactory.createInt4(3); |
| z = x.lessThan(y); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(),false); |
| z = y.lessThan(x); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(), true); |
| } |
| |
| @Test |
| public final void testLessThanEqualsDatum() { |
| Datum x; |
| Datum y; |
| Datum z; |
| |
| x = DatumFactory.createInt4(6); |
| y = DatumFactory.createInt4(3); |
| z = x.lessThanEqual(y); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(),false); |
| z = y.lessThanEqual(x); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(), true); |
| |
| x = DatumFactory.createInt4(6); |
| y = DatumFactory.createInt4(6); |
| z = x.lessThanEqual(y); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(),true); |
| z = y.lessThanEqual(x); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(), true); |
| } |
| |
| @Test |
| public final void testgreaterThanDatum() { |
| Datum x; |
| Datum y; |
| Datum z; |
| |
| x = DatumFactory.createInt4(6); |
| y = DatumFactory.createInt4(3); |
| z = x.greaterThan(y); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(),true); |
| z = y.greaterThan(x); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(), false); |
| |
| x = DatumFactory.createInt4(6); |
| y = DatumFactory.createInt4(6); |
| z = x.greaterThan(y); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(),false); |
| z = y.greaterThan(x); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(), false); |
| } |
| |
| @Test |
| public final void testgreaterThanEqualsDatum() { |
| Datum x; |
| Datum y; |
| Datum z; |
| |
| x = DatumFactory.createInt4(6); |
| y = DatumFactory.createInt4(3); |
| z = x.greaterThanEqual(y); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(),true); |
| z = y.greaterThanEqual(x); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(), false); |
| |
| x = DatumFactory.createInt4(6); |
| y = DatumFactory.createInt4(6); |
| z = x.greaterThanEqual(y); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(),true); |
| z = y.greaterThanEqual(x); |
| assertEquals(z.type(),Type.BOOLEAN); |
| assertEquals(z.asBool(), true); |
| } |
| } |