Package org.kitesdk.data.spi

Source Code of org.kitesdk.data.spi.TestMarkerComparator

/*
* Copyright 2013 Cloudera.
*
* 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 org.kitesdk.data.spi;

import org.kitesdk.data.PartitionStrategy;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

public class TestMarkerComparator {

  // Left-inclusive comparison is implemented by leftCompare
  // this is used when you want to use the comparison for the lower-bound of a range.

  private static Marker OCT;
  private static Marker OCT_12;
  private static Marker SEPT;
  private static Marker SEPT_30;
  private static Marker NOV;
  private static Marker NOV_1;
  private static MarkerComparator comparator;

  @BeforeClass
  public static void setup() {
    OCT = new Marker.Builder()
        .add("year", 2013)
        .add("month", 10)
        .build();
    OCT_12 = new Marker.Builder()
        .add("year", 2013)
        .add("month", 10)
        .add("day", 12)
        .build();
    SEPT = new Marker.Builder()
        .add("year", 2013)
        .add("month", 9)
        .build();
    SEPT_30 = new Marker.Builder()
        .add("year", 2013)
        .add("month", 9)
        .add("day", 30)
        .build();
    NOV = new Marker.Builder()
        .add("year", 2013)
        .add("month", 11)
        .build();
    NOV_1 = new Marker.Builder()
        .add("year", 2013)
        .add("month", 11)
        .add("day", 1)
        .build();
    PartitionStrategy strategy = new PartitionStrategy.Builder()
        .year("timestamp")
        .month("timestamp")
        .day("timestamp")
        .build();
    comparator = new MarkerComparator(strategy);
  }

  @Test(expected=IllegalStateException.class)
  public void testContainedStateException() {
    comparator.compare(OCT, OCT_12);
  }

  @Test
  public void testLeftInclusiveContained() {
    // left-inclusive comparison is for range lower bounds, so contained
    // should be greater than and therefore included above the lower bound.
    Assert.assertEquals(-1, comparator.leftCompare(OCT, OCT_12));
    Assert.assertEquals(1, comparator.leftCompare(OCT_12, OCT));
  }

  @Test
  public void testRightInclusiveContained() {
    // right-inclusive comparison is for range upper bounds, so contained
    // should be less than and therefore included below the upper bound.
    Assert.assertEquals(1, comparator.rightCompare(OCT, OCT_12));
    Assert.assertEquals(-1, comparator.rightCompare(OCT_12, OCT));
  }

  @Test
  public void testLessThan() {
    // lessThan should always be less
    Assert.assertEquals(-1, comparator.compare(SEPT_30, OCT));
    Assert.assertEquals(-1, comparator.leftCompare(SEPT_30, OCT));
    Assert.assertEquals(-1, comparator.rightCompare(SEPT_30, OCT));
    Assert.assertEquals(1, comparator.compare(OCT, SEPT_30));
    Assert.assertEquals(1, comparator.leftCompare(OCT, SEPT_30));
    Assert.assertEquals(1, comparator.rightCompare(OCT, SEPT_30));
  }

  @Test
  public void testGreaterThan() {
    // greaterThan should always be greater
    Assert.assertEquals(1, comparator.compare(NOV_1, OCT));
    Assert.assertEquals(1, comparator.leftCompare(NOV_1, OCT));
    Assert.assertEquals(1, comparator.rightCompare(NOV_1, OCT));
    Assert.assertEquals(-1, comparator.compare(OCT, NOV_1));
    Assert.assertEquals(-1, comparator.leftCompare(OCT, NOV_1));
    Assert.assertEquals(-1, comparator.rightCompare(OCT, NOV_1));
  }

  @Test
  public void testEquals() {
    Assert.assertEquals(0, comparator.compare(OCT, OCT));
    Assert.assertEquals(0, comparator.compare(SEPT_30, SEPT_30));
    Assert.assertEquals(0, comparator.compare(OCT_12, OCT_12));
    Assert.assertEquals(0, comparator.compare(NOV_1, NOV_1));
    Assert.assertEquals(0, comparator.leftCompare(OCT, OCT));
    Assert.assertEquals(0, comparator.leftCompare(SEPT_30, SEPT_30));
    Assert.assertEquals(0, comparator.leftCompare(OCT_12, OCT_12));
    Assert.assertEquals(0, comparator.leftCompare(NOV_1, NOV_1));
    Assert.assertEquals(0, comparator.rightCompare(OCT, OCT));
    Assert.assertEquals(0, comparator.rightCompare(SEPT_30, SEPT_30));
    Assert.assertEquals(0, comparator.rightCompare(OCT_12, OCT_12));
    Assert.assertEquals(0, comparator.rightCompare(NOV_1, NOV_1));
  }

  @Test
  public void testContains() {
    Assert.assertTrue(comparator.contains(OCT, OCT_12));
    Assert.assertTrue(comparator.contains(OCT, OCT));
    Assert.assertFalse(comparator.contains(OCT_12, OCT));
    Assert.assertFalse(comparator.contains(OCT, SEPT));
    Assert.assertFalse(comparator.contains(OCT, SEPT_30));
    Assert.assertFalse(comparator.contains(OCT, NOV));
    Assert.assertFalse(comparator.contains(OCT, NOV_1));
  }
}
TOP

Related Classes of org.kitesdk.data.spi.TestMarkerComparator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.