Package de.timefinder.algo

Source Code of de.timefinder.algo.ConflictMatrixTest

/*
* This file is part of the TimeFinder project.
*  Visit http://www.timefinder.de for more information.
*  Copyright (c) 2009 the original author or authors.
*
*  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 de.timefinder.algo;

import de.timefinder.algo.util.TimeFinder2Tester;
import de.timefinder.data.algo.Assignment;
import de.timefinder.data.set.Raster;
import de.timefinder.data.set.RasterCollection;
import de.timefinder.data.set.RasterEnum;
import de.timefinder.algo.constraint.RasterConstraint;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import org.junit.Before;
import org.junit.Test;

import java.util.Arrays;

/**
* @author Peter Karich, peat_hal 'at' users 'dot' sourceforge 'dot' net
*/
public class ConflictMatrixTest extends TimeFinder2Tester {

    private ConflictMatrix matrix;

    public ConflictMatrixTest() {
    }

    @Before
    @Override
    public void setUp() {
        super.setUp();
        settings.setTimeslotsPerDay(6);
        settings.setNumberOfDays(2);
        matrix = new ConflictMatrix(settings.getTimeslotsPerWeek(), settings.getTimeslotsPerDay());
    }

    @Test
    public void testAdd() {
        System.out.println("add");

        final Assignment ev1 = newAssignment(0, 5);
        RasterConstraint constr = newRasterConstraint();
        constr.getRaster().set(8, RasterEnum.FORBIDDEN);
        ev1.getEvent().putConstraint(constr);

        final Assignment ev2 = newAssignment(10, 1);

        matrix.initFromResources(newResources(Arrays.asList(ev1, ev2)));

        matrix.add(ev1);
        matrix.add(ev2);

        // test if combinedRaster of ev2 works
        Raster combinedRaster = matrix.getConflictingRaster(ev2);
        assertEquals(5, combinedRaster.getNextFree(0, 1));
        assertEquals(6, combinedRaster.getNextFree(0, 2));
        assertEquals(7, combinedRaster.getNextFree(7, 2));

        // test if remove works
        matrix.remove(ev1);
        assertSame(combinedRaster, matrix.getConflictingRaster(ev2));
        assertEquals(0, combinedRaster.getNextFree(0, 1));
        assertEquals(1, combinedRaster.getNextFree(1, 1));

        // test if bitRaster is included and combinedRaster recognizes ev1
        Raster combinedRasterEv1 = matrix.getConflictingRaster(ev1);
        assertEquals(9, combinedRasterEv1.getNextFree(8, 1));
        assertEquals(-1, combinedRasterEv1.getNextFree(7, 2));
    }

    @Test
    public void testSpreadEventAndCompress() {
        System.out.println("testSpreadEvent_Compres");
        Assignment ev1 = newAssignment("1", 2, 1);
        Assignment ev2 = newAssignment("2", 0, 1);
        Assignment ev3 = newAssignment("3", 0, 1);

        matrix.initFromResources(newResources(Arrays.asList(ev1, ev2, ev3)));

        // *** spread events ***

        // init raster1 (empty)
        matrix.getConflictingRaster(ev1);

        // init raster2 (ev1)
        matrix.getConflictingRaster(ev2);

        RasterCollection coll = matrix.getConflictingRaster(ev2);
        assertEquals(0, coll.getNextFree(0, 1));

        // init raster3 (ev1)
        matrix.getConflictingRaster(ev3);

        coll = matrix.getConflictingRaster(ev3);
        assertEquals(0, coll.getNextFree(0, 1));

        // *** compress ***

        // update raster1 (ev3)
        matrix.add(ev3);

        coll = matrix.getConflictingRaster(ev1);
        assertEquals(1, coll.getNextFree(0, 1));

        coll = matrix.getConflictingRaster(ev3);
        assertEquals(1, coll.getNextFree(1, 1));

        // update raster3 (ev1)
        matrix.add(ev1);
    }
}
TOP

Related Classes of de.timefinder.algo.ConflictMatrixTest

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.