blob: cd7c79416e4f3a0cafb056fdcb8d222ef432fd37 [file] [log] [blame]
/*
* 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.carbondata.core.writer.sortindex;
import org.apache.carbondata.core.metadata.datatype.DataTypes;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* This class tests the Dictionary sort model class that holds the member byte value and corresponding key value.
*/
public class CarbonDictionarySortModelTest {
private CarbonDictionarySortModel carbonDictionarySortModel = null;
@Test public void testCompareToForDataTypeDoubleCase() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.DOUBLE, "7234");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(2, DataTypes.DOUBLE, "5678");
int expectedResult = 1;
int actualResult = carbonDictionarySortModel.compareTo(testCarbonDictionarySortModel);
assertEquals(actualResult, expectedResult);
}
@Test public void testCompareToForDataTypeDoubleExceptionCase() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.DOUBLE, "double");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(2, DataTypes.DOUBLE, "@NU#LL$!");
int expectedResult = -1;
int actualResult = carbonDictionarySortModel.compareTo(testCarbonDictionarySortModel);
assertEquals(actualResult, expectedResult);
}
@Test public void testCompareToForDataTypeDoubleExceptionCaseForOtherObject() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.DOUBLE, "1234");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(2, DataTypes.DOUBLE, "@NU#LL$!");
int expectedResult = -1;
int actualResult = carbonDictionarySortModel.compareTo(testCarbonDictionarySortModel);
assertEquals(actualResult, expectedResult);
}
@Test public void testCompareToForDataTypeBooleanCase() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.BOOLEAN, "memberValue");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(2, DataTypes.DOUBLE, "value");
int expectedResult = -9;
int actualResult = carbonDictionarySortModel.compareTo(testCarbonDictionarySortModel);
assertEquals(actualResult, expectedResult);
}
@Test public void testCompareToForDataTypeDecimalCase() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.createDefaultDecimalType(), "72.34");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(2, DataTypes.createDefaultDecimalType(), "56.78");
int expectedResult = 1;
int actualResult = carbonDictionarySortModel.compareTo(testCarbonDictionarySortModel);
assertEquals(actualResult, expectedResult);
}
@Test public void testCompareToForDataTypeDecimalExceptionCase() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.createDefaultDecimalType(), "decimal");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(2, DataTypes.createDefaultDecimalType(), "@NU#LL$!");
int expectedResult = -1;
int actualResult = carbonDictionarySortModel.compareTo(testCarbonDictionarySortModel);
assertEquals(actualResult, expectedResult);
}
@Test public void testCompareToForDataTypeDecimalExceptionCaseForOtherObject() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.createDefaultDecimalType(), "15.24");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(2, DataTypes.createDefaultDecimalType(), "@NU#LL$!");
int expectedResult = -1;
int actualResult = carbonDictionarySortModel.compareTo(testCarbonDictionarySortModel);
assertEquals(actualResult, expectedResult);
}
@Test public void testCompareToForDataTypeTimestampCase() {
carbonDictionarySortModel =
new CarbonDictionarySortModel(1, DataTypes.TIMESTAMP, "2014-09-22 12:00:00");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(2, DataTypes.TIMESTAMP, "2015-09-22 12:08:49");
int expectedResult = -1;
int actualResult = carbonDictionarySortModel.compareTo(testCarbonDictionarySortModel);
assertEquals(actualResult, expectedResult);
}
@Test public void testCompareToForDataTypeTimestampExceptionCase() {
carbonDictionarySortModel =
new CarbonDictionarySortModel(1, DataTypes.TIMESTAMP, "2014-09 12:00:00");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(2, DataTypes.TIMESTAMP, "@NU#LL$!");
int expectedResult = -1;
int actualResult = carbonDictionarySortModel.compareTo(testCarbonDictionarySortModel);
assertEquals(actualResult, expectedResult);
}
@Test public void testCompareToForDataTypeTimestampExceptionCaseForOtherObject() {
carbonDictionarySortModel =
new CarbonDictionarySortModel(1, DataTypes.TIMESTAMP, "2014-09-22 12:00:00");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(2, DataTypes.TIMESTAMP, "2014-09-22 12");
int expectedResult = -1;
int actualResult = carbonDictionarySortModel.compareTo(testCarbonDictionarySortModel);
assertEquals(actualResult, expectedResult);
}
@Test public void testHashCode() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.createDefaultDecimalType(), "15.24");
int actualResult = carbonDictionarySortModel.hashCode();
int expectedResult = 46877260;
assertTrue(actualResult == expectedResult);
}
@Test public void testHashCodeNullCaseForMemberValue() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.createDefaultDecimalType(), null);
int actualResult = carbonDictionarySortModel.hashCode();
int expectedResult = 0;
assertEquals(actualResult, expectedResult);
}
@Test public void testEquals() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.createDefaultDecimalType(), "15.24");
CarbonDictionarySortModel testCarbonDictionarySortModel = carbonDictionarySortModel;
boolean result = carbonDictionarySortModel.equals(testCarbonDictionarySortModel);
assertTrue(result);
}
@Test public void testEqualsMemberValueNullCase() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.createDefaultDecimalType(), null);
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(1, DataTypes.BOOLEAN, "false");
boolean result = carbonDictionarySortModel.equals(testCarbonDictionarySortModel);
assertFalse(result);
}
@Test public void testEqualsWhenMemberValueDiffers() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.createDefaultDecimalType(), "12.45");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(1, DataTypes.BOOLEAN, "false");
boolean result = carbonDictionarySortModel.equals(testCarbonDictionarySortModel);
assertFalse(result);
}
@Test public void testEqualsWhenMemberValueIsSame() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.createDefaultDecimalType(), "12.45");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(1, DataTypes.createDefaultDecimalType(), "12.45");
boolean result = carbonDictionarySortModel.equals(testCarbonDictionarySortModel);
assertTrue(result);
}
@Test public void testEqualsForDifferentObjects() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.createDefaultDecimalType(), "12.45");
Object testCarbonDictionarySortModel = new Object();
boolean result = carbonDictionarySortModel.equals(testCarbonDictionarySortModel);
assertFalse(result);
}
@Test public void testCompareToForDataTypeDoubleExceptionCaseForDifferentObject() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.DOUBLE, "double");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(2, DataTypes.DOUBLE, "1234");
int expectedResult = 1;
int actualResult = carbonDictionarySortModel.compareTo(testCarbonDictionarySortModel);
assertEquals(actualResult, expectedResult);
}
@Test public void testCompareToForDataTypeDecimalExceptionCaseForDifferentObject() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.createDefaultDecimalType(), "12.il");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(2, DataTypes.createDefaultDecimalType(), "12.89");
int expectedResult = 1;
int actualResult = carbonDictionarySortModel.compareTo(testCarbonDictionarySortModel);
assertEquals(actualResult, expectedResult);
}
@Test public void testCompareToForDataTypeTimestampExceptionCaseForDifferentObject() {
carbonDictionarySortModel = new CarbonDictionarySortModel(1, DataTypes.TIMESTAMP, "2014-09");
CarbonDictionarySortModel testCarbonDictionarySortModel =
new CarbonDictionarySortModel(2, DataTypes.TIMESTAMP, "2014-09-22 12:00:00");
int expectedResult = 1;
int actualResult = carbonDictionarySortModel.compareTo(testCarbonDictionarySortModel);
assertEquals(actualResult, expectedResult);
}
}