Package org.libreplan.business.test.resources.entities

Source Code of org.libreplan.business.test.resources.entities.IntervalTest

/*
* This file is part of LibrePlan
*
* Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
*                         Desenvolvemento Tecnolóxico de Galicia
* Copyright (C) 2010-2011 Igalia, S.L.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

package org.libreplan.business.test.resources.entities;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.libreplan.business.test.resources.daos.CriterionSatisfactionDAOTest.year;

import org.junit.Test;
import org.libreplan.business.resources.entities.Interval;
import org.libreplan.business.test.resources.daos.CriterionSatisfactionDAOTest;

public class IntervalTest {

    @Test(expected = IllegalArgumentException.class)
    public void testStartDateMustBeBeforeThanEndDate() {
        Interval.range(CriterionSatisfactionDAOTest.year(2000),
                CriterionSatisfactionDAOTest.year(1999));
    }

    @Test(expected = IllegalArgumentException.class)
    public void testStartDateMustBeNotNull() {
        Interval.range(null, CriterionSatisfactionDAOTest.year(1999));
    }

    @Test
    public void intervalCanBeOpenEnded() {
        Interval.range(CriterionSatisfactionDAOTest.year(1990), null);
    }

    @Test
    public void testContainsPointInTime() {
        Interval openEnded = Interval.from(CriterionSatisfactionDAOTest
                .year(1990));
        Interval range = Interval.range(
                CriterionSatisfactionDAOTest.year(1990),
                CriterionSatisfactionDAOTest.year(2000));
        Interval startPoint = Interval.point(year(1990));
        Interval endPoint = Interval.point(year(2000));
        assertTrue(openEnded.contains(CriterionSatisfactionDAOTest.year(5000)));
        assertFalse(range.contains(year(5000)));
        assertTrue(range.contains(year(1990)));
        assertFalse(range.contains(year(2000)));
        assertTrue(range.contains(year(1991)));
        assertFalse(range.contains(year(1989)));
        assertFalse(range.includes(startPoint));
        assertFalse(range.includes(endPoint));
    }

    @Test
    public void testPointsOnlyContainsThemselves() {
        Interval point = Interval
                .point(CriterionSatisfactionDAOTest.year(1990));
        assertTrue(point.contains(CriterionSatisfactionDAOTest.year(1990)));
        assertFalse(point.contains(CriterionSatisfactionDAOTest.year(2010)));
    }

    @Test
    public void testIntervalsAreStartInclusiveAndEndExclusive()
            {
        Interval range = Interval.range(year(1990), year(2000));
        assertTrue(range.contains(year(1990)));
        assertFalse(range.contains(year(2000)));
        assertFalse(range.contains(year(1990).minusDays(1)));
        assertFalse(range.contains(year(2000).plusDays(1)));
    }

    @Test
    public void testIncludes() {
        Interval bigRange = Interval.range(year(1990), year(2000));
        Interval included = Interval.range(year(1990), year(1998));
        Interval point = Interval.point(year(1996));
        assertTrue(bigRange.includes(included));
        assertTrue(bigRange.includes(point));
        assertTrue(included.includes(point));
    }

    @Test
    public void testStartPointDoesntOverlapsWithRange() {
        Interval range = Interval.range(year(1990), year(2005));
        Interval openEndedRange = Interval.from(year(1990));
        Interval point = Interval.point(year(1990));
        Interval internalPoint = Interval.point(year(1991));

        assertFalse(point.overlapsWith(range));
        assertFalse(point.overlapsWith(openEndedRange));
        assertFalse(range.overlapsWith(point));
        assertFalse(openEndedRange.overlapsWith(point));

        assertTrue(internalPoint.overlapsWith(range));
        assertTrue(internalPoint.overlapsWith(openEndedRange));
        assertTrue(range.overlapsWith(internalPoint));
        assertTrue(openEndedRange.overlapsWith(internalPoint));
    }

    @Test
    public void testOverlapsWith() {
        Interval firstRange = Interval.range(year(1990), year(2005));
        Interval igalia = Interval.from(year(2001));
        Interval distantPoint = Interval.point(year(2030));
        Interval pointInFirstRange = Interval.point(year(2000));
        Interval outRange = Interval.range(year(2020), year(2030));
        assertTrue(firstRange.overlapsWith(igalia));
        assertTrue(firstRange.overlapsWith(Interval.range(year(1980),
                year(1991))));
        assertTrue(igalia.overlapsWith(firstRange));
        assertTrue(outRange.overlapsWith(igalia));
        assertFalse(outRange.overlapsWith(firstRange));
        assertTrue(distantPoint.overlapsWith(igalia));
        assertFalse(distantPoint.overlapsWith(firstRange));
        assertTrue(igalia.overlapsWith(distantPoint));
        assertTrue(distantPoint.overlapsWith(igalia));
        assertFalse(firstRange.overlapsWith(distantPoint));
        assertTrue(firstRange.overlapsWith(pointInFirstRange));
    }

    @Test
    public void testIntervalFinishingAtTheStartOfOtherDontOverlap()
            {
        Interval range = Interval.range(year(2000), year(2005));
        Interval from = Interval.from(year(2000));
        Interval before = Interval.range(year(1995), year(2000));
        assertFalse(range.overlapsWith(before));
        assertFalse(before.overlapsWith(range));

        assertFalse(from.overlapsWith(before));
        assertFalse(before.overlapsWith(from));
    }

    @Test
    public void testStartPointDoesntOverlapsWithRanges() {
        Interval range = Interval.range(year(2010), year(2030));
        Interval point = Interval.point(year(2010));
        Interval otherRange = Interval.from(year(2010));
        assertFalse(point.overlapsWith(range));
        assertFalse(range.overlapsWith(point));
        assertFalse(point.overlapsWith(otherRange));
        assertFalse(otherRange.overlapsWith(point));
    }

    @Test
    public void testCreatingPointWithRange() {
        Interval point = Interval.point(year(1990));
        Interval range = Interval.range(year(1990), year(1990));
        assertEquals(point, range);
    }

    @Test
    public void testOverlappingWhenContained() {
        Interval range = Interval.range(year(1990), year(2000));
        Interval contained = Interval.range(year(1995), year(1997));
        assertTrue(range.overlapsWith(contained));
        assertTrue(contained.overlapsWith(range));
    }
}
TOP

Related Classes of org.libreplan.business.test.resources.entities.IntervalTest

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.