/* * Copyright (c) 2016 Yrineu Rodrigues and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.nic.graph.impl; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.modules.junit4.PowerMockRunner; import java.util.List; /** * Created by yrineu on 10/08/16. */ @RunWith(PowerMockRunner.class) public class IntervalImplTest { @Test public void testCreateIntervalImplWithStartGreaterThanEnd() { final IntervalImpl interval = IntervalImpl.getInstance(4, 2); final boolean isNull = interval.isNull(); Assert.assertEquals(Integer.MIN_VALUE, interval.start()); Assert.assertTrue(isNull); } @Test public void testCreateIntervalImplWithJustOneParameterShouldReturnTheSameValueForStartAndEnd() { final int expected = 5; final IntervalImpl interval = IntervalImpl.getInstance(expected); Assert.assertEquals(expected, interval.start()); Assert.assertEquals(expected, interval.end()); } @Test public void testNotEqualsShouldReturnFalseWhenCreateTwoInstancesWithSameValue() { final boolean shouldBeNotEqual = IntervalImpl.getInstance(5).notEquals(IntervalImpl.getInstance(2)); final boolean shouldBeEqual = IntervalImpl.getInstance(5).notEquals(IntervalImpl.getInstance(5)); Assert.assertTrue(shouldBeNotEqual); Assert.assertFalse(shouldBeEqual); final boolean shouldBeTrue = IntervalImpl.getInstance(5, 3).notEquals(IntervalImpl.getInstance(2, 6)); final boolean shouldBeFalse = IntervalImpl.getInstance(5, 3).notEquals(IntervalImpl.getInstance(5, 3)); Assert.assertTrue(shouldBeTrue); Assert.assertFalse(shouldBeFalse); } @Test public void testGreaterThanShouldReturnTrueWhenStartOrEndAreGreaterThanAnotherIntervalInstance() { final boolean shouldBeGreaterThan = IntervalImpl.getInstance(5).greaterThan(IntervalImpl.getInstance(2)); final boolean shouldNotBeGreaterThanToo = IntervalImpl.getInstance(5).greaterThan(IntervalImpl.getInstance(7)); Assert.assertFalse(shouldBeGreaterThan); Assert.assertFalse(shouldNotBeGreaterThanToo); final boolean shouldBeTrue = IntervalImpl.getInstance(2, 6).greaterThan(IntervalImpl.getInstance(4, 5)); final boolean shouldBeFalse = IntervalImpl.getInstance(2, 1).notEquals(IntervalImpl.getInstance(5, 3)); Assert.assertTrue(shouldBeTrue); Assert.assertFalse(shouldBeFalse); final boolean isFalse = IntervalImpl.getInstance(7, 6).greaterThan(IntervalImpl.getInstance(4, 5)); Assert.assertFalse(isFalse); } @Test public void testLessThanShouldReturnTrueWhenStartOrEndAreLessThanAnotherIntervalInstance() { final boolean shouldBeGreaterThan = IntervalImpl.getInstance(5).lessThan(IntervalImpl.getInstance(2)); final boolean shouldBeLessThan = IntervalImpl.getInstance(5).lessThan(IntervalImpl.getInstance(7)); Assert.assertFalse(shouldBeGreaterThan); Assert.assertFalse(shouldBeLessThan); final boolean shouldBeTrue = IntervalImpl.getInstance(4, 5).lessThan(IntervalImpl.getInstance(2, 6)); final boolean shouldBeFalse = IntervalImpl.getInstance(2, 1).lessThan(IntervalImpl.getInstance(5, 3)); Assert.assertTrue(shouldBeTrue); Assert.assertFalse(shouldBeFalse); final boolean isFalse = IntervalImpl.getInstance(7, 6).lessThan(IntervalImpl.getInstance(4, 5)); Assert.assertFalse(isFalse); } @Test public void testGreaterThanOrEqual() { final boolean shouldBeGreaterThan = IntervalImpl.getInstance(1, 6).greaterThanOrEqual(IntervalImpl.getInstance(2, 4)); final boolean shouldBeEqual = IntervalImpl.getInstance(5).greaterThanOrEqual(IntervalImpl.getInstance(5)); Assert.assertTrue(shouldBeGreaterThan); Assert.assertTrue(shouldBeEqual); final boolean shouldNotBeGreaterThan = IntervalImpl.getInstance(2, 4).greaterThanOrEqual(IntervalImpl.getInstance(1, 6)); Assert.assertFalse(shouldNotBeGreaterThan); } @Test public void testLessThanOrEqual() { final boolean shouldBeLessThan = IntervalImpl.getInstance(2, 4).lessThanOrEqual(IntervalImpl.getInstance(1,6)); final boolean shouldBeEqual = IntervalImpl.getInstance(5).lessThanOrEqual(IntervalImpl.getInstance(5)); Assert.assertTrue(shouldBeLessThan); Assert.assertTrue(shouldBeEqual); final boolean shouldNotBeLessThan = IntervalImpl.getInstance(1, 6).lessThanOrEqual(IntervalImpl.getInstance(2, 4)); Assert.assertFalse(shouldNotBeLessThan); } @Test public void testAnd() { final IntervalImpl expectedIntervalOverlap = IntervalImpl.getInstance(2, 3); final IntervalImpl shouldBeIntervalOverlap = IntervalImpl.getInstance(2, 6).and(IntervalImpl.getInstance(1, 3)); final IntervalImpl shouldBeIntervalNull = IntervalImpl.getInstance(-1, -6).and(IntervalImpl.getInstance(-1,-3)); final IntervalImpl shouldBeEqual = IntervalImpl.getInstance(5).and(IntervalImpl.getInstance(5)); Assert.assertEquals(shouldBeIntervalOverlap, expectedIntervalOverlap); Assert.assertEquals(shouldBeIntervalNull, IntervalImpl.INTERVAL_NULL); Assert.assertEquals(shouldBeEqual, IntervalImpl.getInstance(5)); } @Test public void testSubWithOverlapShouldReturnAListContainingJustItSelf() { final IntervalImpl intervalWithOverLap = IntervalImpl.getInstance(Integer.MIN_VALUE, Integer.MIN_VALUE); final IntervalImpl intervalNull = IntervalImpl.INTERVAL_NULL; final List<IntervalImpl> shouldContainsJustItSelf = intervalWithOverLap.sub(intervalNull); Assert.assertEquals(shouldContainsJustItSelf.get(0),intervalWithOverLap); Assert.assertEquals(shouldContainsJustItSelf.size(), 1); } @Test public void testSubBetweenTwoEqualIntervalsShouldReturnAListWithAIntervalNull() { final IntervalImpl intervalOne = IntervalImpl.getInstance(2); final IntervalImpl intervalTwo = IntervalImpl.getInstance(2); final List<IntervalImpl> shouldContainsNullInterval = intervalOne.sub(intervalTwo); Assert.assertEquals(shouldContainsNullInterval.get(0), IntervalImpl.INTERVAL_NULL); Assert.assertEquals(shouldContainsNullInterval.size(), 1); } @Test public void testSubBetweenTwoIntervalsWithEqualStartsShouldReturnAListContainingANewValidInterval() { final IntervalImpl intervalOne = IntervalImpl.getInstance(1, 7); final IntervalImpl intervalTwo = IntervalImpl.getInstance(1, 4); final List<IntervalImpl> shouldContainsNewValidInterval = intervalOne.sub(intervalTwo); final IntervalImpl result = shouldContainsNewValidInterval.get(0); final int expectedEnd = result.end(); final int initialEnd = intervalOne.end(); final boolean expectedEndShouldBeEqualToInitial = (initialEnd == expectedEnd); final boolean startShouldBeLessThanEnd = (result.start() < result.end()); Assert.assertTrue(expectedEndShouldBeEqualToInitial); Assert.assertTrue(startShouldBeLessThanEnd); } }