Package de.timefinder.data.set

Source Code of de.timefinder.data.set.EventRasterTester

/*
*  Copyright 2009 Peter Karich.
*
*  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.
*  under the License.
*/
package de.timefinder.data.set;

import de.timefinder.data.TimeFinderTester;
import de.timefinder.data.algo.Assignment;
import java.util.Collection;

import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;

/**
* @author Peter Karich
*/
abstract public class EventRasterTester extends TimeFinderTester {

    protected EventRaster eventRaster;
    protected int LENGTH = 20;

    public EventRasterTester() {
    }

    @Override
    @Before
    public void setUp() {
        super.setUp();
    }

    @Test
    public void testNextFree() {
        assertEquals(0, eventRaster.getNextFree(0, 1));
        assertEquals(LENGTH, eventRaster.getLastFreePlus1(0));
        assertEquals(LENGTH, eventRaster.getLastFreePlus1(LENGTH - 1));
        assertEquals(-1, eventRaster.getLastFreePlus1(LENGTH));

        Assignment ass = newAssignment(0, 5);

        assertTrue(eventRaster.add(ass));
        assertEquals(5, eventRaster.getNextFree(0, 1));

        eventRaster.remove(ass);
        try {
            // should NOT add an event which stays in conflicts to root event
            eventRaster.setRoot(ass);
            Assignment tmpEvent = newAssignment(3, 1);
            eventRaster.add(tmpEvent);
            assertTrue(false);
        } catch (Throwable ex) {
            assertTrue(true);
        }
    }

    @Test
    public void testNextFree2() {
        Assignment event1 = newAssignment(0, 5);
        assertTrue(eventRaster.add(event1));
        assertEquals(5, eventRaster.getNextFree(0, 1));

        // allow conflicting between the other events -> important
        Assignment event2 = newAssignment(4, 3);
        assertTrue(eventRaster.add(event2));
        assertEquals(7, eventRaster.getNextFree(0, 1));
        assertTrue(eventRaster.remove(event2));

        // external duration change is supported only by some implementations
//        event1.setDuration(10);
//        assertEquals(5, eventRaster.getNextFree(0, 1));
//        event1.setDuration(5);

        // changing duration works like follows
        assertTrue(eventRaster.remove(event1));
        event1.getEvent().setDuration(20);
        assertTrue(eventRaster.add(event1));
        assertEquals(-1, eventRaster.getNextFree(0, 1));

        assertTrue(eventRaster.remove(event1));
        event1.getEvent().setDuration(10);
        assertTrue(eventRaster.add(event1));
        assertEquals(10, eventRaster.getNextFree(5, 1));

        assertEquals(15, eventRaster.getNextFree(15, 1));
    }

    @Test
    public void testNextFree3() {
        Assignment event2 = newAssignment(5, 1);
        eventRaster.add(event2);

        Assignment event1 = newAssignment(0, 5);
        eventRaster.add(event1);

        Assignment event3 = newAssignment(9, 1);
        eventRaster.add(event3);

        assertEquals(6, eventRaster.getNextFree(0, 1));
        assertEquals(7, eventRaster.getNextFree(7, 1));
        assertEquals(8, eventRaster.getNextFree(8, 1));
        assertEquals(10, eventRaster.getNextFree(9, 1));

        assertEquals(10, eventRaster.getNextFree(0, 4));
        assertEquals(11, eventRaster.getNextFree(11, 4));
        assertEquals(12, eventRaster.getNextFree(12, 4));
    }

    @Test
    public void testNextFree4() {
        Assignment ev1 = newAssignment(0, 4);
        Assignment ev2 = newAssignment(1, 4);
        Assignment ev3 = newAssignment(5, 1);

        assertTrue(eventRaster.add(ev1));
        assertTrue(eventRaster.add(ev2));
        assertTrue(eventRaster.add(ev3));

        assertEquals(6, eventRaster.getNextFree(0, 1));
    }

    @Test
    public void testNextFree5() {
        Assignment ev1 = newAssignment(0, 3);
        Assignment ev2 = newAssignment(2, 3);
        Assignment ev3 = newAssignment(1, 5);
        Assignment ev4 = newAssignment(6, 1);

        assertTrue(eventRaster.add(ev1));
        assertTrue(eventRaster.add(ev2));
        assertTrue(eventRaster.add(ev3));
        assertTrue(eventRaster.add(ev4));

        assertEquals(7, eventRaster.getNextFree(0, 1));
    }

    @Test
    public void testNextFree6() {
        Assignment ev1 = newAssignment(0, 10);
        Assignment ev2 = newAssignment(2, 1);
        Assignment ev3 = newAssignment(8, 1);

        assertTrue(eventRaster.add(ev1));
        assertTrue(eventRaster.add(ev2));
        assertTrue(eventRaster.add(ev3));

        assertEquals(10, eventRaster.getNextFree(3, 1));
    }

    @Test
    public void testFirstFree() {
        Assignment event1 = newAssignment(1, 5);
        assertTrue(eventRaster.add(event1));
        assertEquals(0, eventRaster.getNextFree(0, 1));
    }

    @Test
    public void testRemoveAndAdd() {
        Assignment event1 = newAssignment(0, 5);
        assertTrue(eventRaster.add(event1));
        assertEquals(5, eventRaster.getNextFree(0, 1));

        assertTrue(eventRaster.remove(event1));
        event1.setStart(1);
        assertTrue(eventRaster.add(event1));
        assertEquals(0, eventRaster.getNextFree(0, 1));
    }

    @Test
    public void testRemove() {
        Assignment event1 = newAssignment("1", 0, 5);
        Assignment event2 = newAssignment("2", 0, 5);

        assertTrue(eventRaster.add(event1));
        assertTrue(eventRaster.add(event2));

        assertEquals(2, eventRaster.getConflictingAssignments(0, 1).size());
        assertTrue(eventRaster.remove(event1));
        assertTrue(eventRaster.remove(event2));

        assertEquals(0, eventRaster.getConflictingAssignments(0, 1).size());
    }

    @Test
    public void testGetConflictingEvents() {
        Assignment rootEvent = newAssignment(10, 1);
        eventRaster.setRoot(rootEvent);

        Assignment event1 = newAssignment(0, 5);
        assertTrue(eventRaster.add(event1));

        Assignment event2 = newAssignment(4, 3);
        assertTrue(eventRaster.add(event2));

        assertEquals(2, eventRaster.getConflictingAssignments(4, 1).size());
        assertEquals(2, eventRaster.getConflictingAssignments(4, 2).size());
        assertEquals(2, eventRaster.getConflictingAssignments(3, 2).size());

        assertEquals(1, eventRaster.getConflictingAssignments(3, 1).size());
        assertEquals(1, eventRaster.getConflictingAssignments(5, 1).size());
    }

    @Test
    public void testGetConflictingEvents2() {
        assertTrue(eventRaster.add(newAssignment(0, 3)));
        assertTrue(eventRaster.add(newAssignment(0, 2)));

        assertEquals(2, eventRaster.getConflictingAssignments(1, 1).size());
        assertEquals(1, eventRaster.getConflictingAssignments(2, 1).size());
        assertEquals(0, eventRaster.getConflictingAssignments(3, 1).size());

        assertEquals(2, eventRaster.getConflictingAssignments(1, 2).size());
        assertEquals(1, eventRaster.getConflictingAssignments(2, 2).size());
        assertEquals(0, eventRaster.getConflictingAssignments(3, 2).size());
    }

    @Test
    public void testGetConflictingEvents3() {
        assertTrue(eventRaster.add(newAssignment(10, 1)));
        assertTrue(eventRaster.add(newAssignment(5, 10)));
        assertEquals(1, eventRaster.getConflictingAssignments(9, 1).size());

        assertTrue(eventRaster.add(newAssignment(8, 1)));
        assertEquals(1, eventRaster.getConflictingAssignments(9, 1).size());
        assertEquals(3, eventRaster.getConflictingAssignments(8, 3).size());
    }

    @Test
    public void testGetConflictingEvents4() {
        assertTrue(eventRaster.add(newAssignment(10, 10)));
        assertTrue(eventRaster.add(newAssignment(5, 10)));
        assertEquals(1, eventRaster.getConflictingAssignments(9, 1).size());
        assertEquals(2, eventRaster.getConflictingAssignments(10, 1).size());
        assertEquals(2, eventRaster.getConflictingAssignments(9, 2).size());
    }

    @Test
    public void testGetConflictingEventsIndices2() {
        Assignment ev1 = newAssignment(1, 2);
        assertTrue(eventRaster.add(ev1));

        Assignment ev2 = newAssignment(0, 3);
        assertTrue(eventRaster.add(ev2));

        Collection<Assignment> events = eventRaster.getConflictingAssignments(0, 1);
        assertEquals(1, events.size());

        events = eventRaster.getConflictingAssignments(1, 1);
        assertEquals(2, events.size());

        events = eventRaster.getConflictingAssignments(2, 1);
        assertEquals(2, events.size());
    }

    @Test
    public void testGetLastFreePlus1() {
        assertEquals(LENGTH, eventRaster.getLastFreePlus1(0));

        Assignment ev1 = newAssignment(1, 1);
        assertTrue(eventRaster.add(ev1));
        assertEquals(1, eventRaster.getLastFreePlus1(0));
        assertEquals(LENGTH, eventRaster.getLastFreePlus1(2));

        // undefined if the starting slot is already assigned
        assertEquals(-1, eventRaster.getLastFreePlus1(1));
    }
}
TOP

Related Classes of de.timefinder.data.set.EventRasterTester

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.