com.wizecommerce.hecuba.hector.HectorResultSetTest.java Source code

Java tutorial

Introduction

Here is the source code for com.wizecommerce.hecuba.hector.HectorResultSetTest.java

Source

/*
 * 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.
 */

package com.wizecommerce.hecuba.hector;

import com.wizecommerce.hecuba.HecubaConstants;

import me.prettyprint.cassandra.service.CassandraHost;
import me.prettyprint.cassandra.service.template.ColumnFamilyResult;

import org.apache.commons.collections.CollectionUtils;
import org.junit.Before;
import org.junit.Test;

import java.util.Arrays;
import java.util.Date;
import java.util.GregorianCalendar;

import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertNull;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

/**
 * User: Eran C. Withana (eran.withana@wizecommerce.com) Date: 11/29/12
 */
public class HectorResultSetTest {

    private ColumnFamilyResult<Long, String> resultsSet;
    private HectorResultSet<Long, String> hectorResultSet;

    @SuppressWarnings("unchecked")
    @Before
    public void setup() {
        resultsSet = mock(ColumnFamilyResult.class);
        hectorResultSet = new HectorResultSet<Long, String>(resultsSet);
    }

    @Test
    public void testGetString() throws Exception {

        final String fieldName = "AwesomeColumn";
        final String stringFieldValue = "AwesomeValue";
        final String defaultStringFieldValue = "AwesomeDefaultValue";

        // this column has a value.
        when(resultsSet.getString(fieldName)).thenReturn(stringFieldValue);
        assertEquals(stringFieldValue, hectorResultSet.getString(fieldName));

        // this column doesn't have a value.
        when(resultsSet.getString(fieldName + "NotThere")).thenReturn("null");
        assertEquals(defaultStringFieldValue,
                hectorResultSet.getString(fieldName + "NotThere", defaultStringFieldValue));
        assertNull(hectorResultSet.getString(fieldName + "NotThere"));

    }

    @Test
    public void testGetBoolean() throws Exception {
        final String fieldName = "AwesomeBooleanColumn";

        // this column has a value.
        when(resultsSet.getString(fieldName)).thenReturn("true");
        assertTrue(hectorResultSet.getBoolean(fieldName));

        when(resultsSet.getString(fieldName)).thenReturn("1");
        assertTrue(hectorResultSet.getBoolean(fieldName));

        when(resultsSet.getString(fieldName)).thenReturn("false");
        assertFalse(hectorResultSet.getBoolean(fieldName));

        // this column doesn't have a value.
        when(resultsSet.getString(fieldName + "NotThere")).thenReturn("null");
        assertFalse(hectorResultSet.getBoolean(fieldName + "NotThere", false));
        assertTrue(hectorResultSet.getBoolean(fieldName + "NotThere", true));
        assertFalse(hectorResultSet.getBoolean(fieldName + "NotThere"));

        // let this blow up.
        when(resultsSet.getString(fieldName)).thenReturn("ThisIsNotABoolean");
        assertEquals(false, hectorResultSet.getBoolean(fieldName));
    }

    @Test
    public void testGetDate() throws Exception {
        final String fieldName = "AwesomeDateColumn";

        // this column has a value.
        final Date actualDate = new GregorianCalendar(2012, 11, 29).getTime();
        when(resultsSet.getString(fieldName))
                .thenReturn(HecubaConstants.DATE_FORMATTER.print(actualDate.getTime()));
        assertEquals(actualDate.getTime(), hectorResultSet.getDate(fieldName).getTime());

        // this column doesn't have a value.
        when(resultsSet.getString(fieldName + "NotThere")).thenReturn("null");
        assertNull(hectorResultSet.getDate(fieldName + "NotThere"));

        final Date time = new GregorianCalendar(1978, 04, 16).getTime();
        assertEquals(time.getTime(), hectorResultSet.getDate(fieldName + "NotThere", time).getTime());

        // let this blow up.
        when(resultsSet.getString(fieldName)).thenReturn("ThisIsNotADate");
        assertNull(hectorResultSet.getDate(fieldName));
    }

    @Test
    public void testGetInteger() throws Exception {

        final String fieldName = "AwesomeIntegerColumn";

        // this column has a value.
        when(resultsSet.getString(fieldName)).thenReturn("1");
        assertEquals(1, (int) hectorResultSet.getInteger(fieldName));

        when(resultsSet.getString(fieldName)).thenReturn("100");
        assertEquals(100, (int) hectorResultSet.getInteger(fieldName));

        when(resultsSet.getString(fieldName)).thenReturn("-15");
        assertEquals(-15, (int) hectorResultSet.getInteger(fieldName));

        // this column doesn't have a value.
        when(resultsSet.getString(fieldName + "NotThere")).thenReturn("null");
        assertEquals(0, (int) hectorResultSet.getInteger(fieldName + "NotThere"));
        assertEquals(199, (int) hectorResultSet.getInteger(fieldName + "NotThere", 199));

        // let this blow up.
        when(resultsSet.getString(fieldName)).thenReturn("ThisIsNotAnInteger");
        assertEquals(0, (int) hectorResultSet.getInteger(fieldName));
        assertEquals(2211, (int) hectorResultSet.getInteger(fieldName, 2211));

    }

    @Test
    public void testGetLong() throws Exception {
        final String fieldName = "AwesomeLongColumn";

        // this column has a value.
        when(resultsSet.getString(fieldName)).thenReturn("1");
        assertEquals(1, (long) hectorResultSet.getLong(fieldName));

        when(resultsSet.getString(fieldName)).thenReturn("1000000000000000000");
        assertEquals(1000000000000000000L, (long) hectorResultSet.getLong(fieldName));

        when(resultsSet.getString(fieldName)).thenReturn("-15");
        assertEquals(-15L, (long) hectorResultSet.getLong(fieldName));

        // this column doesn't have a value.
        when(resultsSet.getString(fieldName + "NotThere")).thenReturn("null");
        assertEquals(0L, (long) hectorResultSet.getLong(fieldName + "NotThere"));
        assertEquals(2345L, (long) hectorResultSet.getLong(fieldName + "NotThere", 2345L));

        // let this blow up.
        when(resultsSet.getString(fieldName)).thenReturn("ThisIsNotAnInteger");
        assertEquals(0L, (long) hectorResultSet.getLong(fieldName));
        assertEquals(2211L, (long) hectorResultSet.getLong(fieldName, 2211L));
    }

    @Test
    public void testGetDouble() throws Exception {
        final String fieldName = "AwesomeDoubleColumn";

        // this column has a value.
        when(resultsSet.getString(fieldName)).thenReturn("0.33");
        assertEquals(0.33, hectorResultSet.getDouble(fieldName), 0.001);

        when(resultsSet.getString(fieldName)).thenReturn("12345.1234");
        assertEquals(12345.1234, hectorResultSet.getDouble(fieldName), 0.001);

        when(resultsSet.getString(fieldName)).thenReturn("-15.0");
        assertEquals(-15.0, hectorResultSet.getDouble(fieldName), 0.001);

        // this column doesn't have a value.
        when(resultsSet.getString(fieldName + "NotThere")).thenReturn("null");
        assertEquals(0.0, hectorResultSet.getDouble(fieldName + "NotThere"), 0.0);
        assertEquals(1.111, hectorResultSet.getDouble(fieldName + "NotThere", 1.111), 0.0);

        // let this blow up.
        when(resultsSet.getString(fieldName)).thenReturn("ThisIsNotADouble");
        assertEquals(0.0, hectorResultSet.getDouble(fieldName), 0.0);
        assertEquals(2211.0, hectorResultSet.getDouble(fieldName, 2211.0), 0.01);
    }

    @Test
    public void testGetFloat() throws Exception {
        final String fieldName = "AwesomeFloatColumn";

        // this column has a value.
        when(resultsSet.getString(fieldName)).thenReturn("0.33");
        assertEquals(0.33, hectorResultSet.getFloat(fieldName), 0.001);

        when(resultsSet.getString(fieldName)).thenReturn("12345.1234");
        assertEquals(12345.1234, hectorResultSet.getFloat(fieldName), 0.001);

        when(resultsSet.getString(fieldName)).thenReturn("-15.0");
        assertEquals(-15.0, hectorResultSet.getFloat(fieldName), 0.001);

        // this column doesn't have a value.
        when(resultsSet.getString(fieldName + "NotThere")).thenReturn("null");
        assertEquals(0.0, hectorResultSet.getFloat(fieldName + "NotThere"), 0.0);
        assertEquals(1.111, hectorResultSet.getFloat(fieldName + "NotThere", 1.111f), 0.001);

        // let this blow up.
        when(resultsSet.getString(fieldName)).thenReturn("ThisIsNotAFloat");
        assertEquals(0.0, hectorResultSet.getFloat(fieldName), 0.0);
        assertEquals(2211.0, hectorResultSet.getFloat(fieldName, 2211.0f), 0.01);
    }

    @Test
    public void testGetExecutionTimeMicro() throws Exception {
        when(resultsSet.getExecutionTimeMicro()).thenReturn(5555L);
        assertEquals(5555L, hectorResultSet.getExecutionTimeMicro());
    }

    @Test
    public void testGetExecutionTimeNano() throws Exception {
        when(resultsSet.getExecutionTimeNano()).thenReturn(1234567890L);
        assertEquals(1234567890L, hectorResultSet.getExecutionTimeNano());
    }

    @Test
    public void testGetHostUsed() throws Exception {
        when(resultsSet.getHostUsed()).thenReturn(new CassandraHost("cass1", 9160));
        final CassandraHost hostUsed = hectorResultSet.getHostUsed();
        assertEquals("cass1", hostUsed.getHost());
        assertEquals(9160, hostUsed.getPort());
    }

    @Test
    public void testGetColumnNames() throws Exception {
        String[] columnNames = new String[] { "Column1", "Column2", "Column3", "Column4" };

        when(resultsSet.getColumnNames()).thenReturn(Arrays.asList(columnNames));
        assertTrue(CollectionUtils.isEqualCollection(Arrays.asList(columnNames), hectorResultSet.getColumnNames()));
    }

    @Test
    public void testHasColumn() throws Exception {
        String[] columnNames = new String[] { "Column1", "Column2", "Column3", "Column4" };

        when(resultsSet.getColumnNames()).thenReturn(Arrays.asList(columnNames));
        for (String columnName : columnNames) {
            assertTrue(hectorResultSet.hasColumn(columnName));
        }
    }
}