Package de.timefinder.core.io.winqd

Source Code of de.timefinder.core.io.winqd.ImportWinQDTest

package de.timefinder.core.io.winqd;

import de.timefinder.algo.AlgorithmConditionIteration;
import de.timefinder.algo.SilentConsoleStatusBar;
import de.timefinder.algo.ncp.NoCollisionPrinciple;
import de.timefinder.algo.util.TimeFinder2Tester;
import de.timefinder.data.Event;
import de.timefinder.data.Location;
import de.timefinder.data.Person;
import de.timefinder.data.access.Dao;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.*;

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

    public static String GMG_FOLDER = "/home/peterk/Dokumente/timefinder/import-gmg-bt";
    private ImportWinQD importer;

    public ImportWinQDTest() {
    }

    @Before
    @Override
    public void setUp() {
        super.setUp();
        importer = new ImportWinQD(dataPool, settings, new File(GMG_FOLDER));
    }

    @Test
    public void testDoWork() {
        importer.setSemester(11);       
        importer.doWork();

        assertTrue(settings.getMillisPerTimeslot() < 3600 * 1000);
        assertTrue(settings.getTimeslotsPerDay() > 5);
        assertEquals(5, settings.getNumberOfDays());

        int seminare = 19;
        assertEquals(33 + seminare, importer.getCourses().size());
        assertEquals(153, importer.getStudentsNumber());
        assertEquals(65, importer.getTeacherNumber());

        assertEquals(153, importer.getCourse("D").getStudents().size());
        assertEquals(7, importer.getCourse("D").getInstances().size());

        assertEquals(153, importer.getCourse("M").getStudents().size());
        assertEquals(7, importer.getCourse("M").getInstances().size());
    }

    @Test
    public void testGetHours() {
        assertEquals(Arrays.asList(2, 2, 1), ImportWinQD.getHours(5));
        assertEquals(Arrays.asList(2, 2), ImportWinQD.getHours(4));
        assertEquals(Arrays.asList(2, 1), ImportWinQD.getHours(3));
        assertEquals(Arrays.asList(2), ImportWinQD.getHours(2));
        assertEquals(Arrays.asList(1), ImportWinQD.getHours(1));
    }

    @Test
    public void testGetPersonForInstances() {
        List personList = new ArrayList();
        for (int i = 0; i < 25; i++) {
            personList.add(new Person("" + i));
        }
        List instances = createInstances(3);
        ImportWinQD.splitPersons(personList, instances);
        assertList(instances, Arrays.asList(9, 9, 7));

        for (int i = 25; i < 29; i++) {
            personList.add(new Person("" + i));
        }
        instances = createInstances(3);
        ImportWinQD.splitPersons(personList, instances);
        assertList(instances, Arrays.asList(10, 10, 9));

        personList.add(new Person("29"));
        instances = createInstances(3);
        ImportWinQD.splitPersons(personList, instances);
        assertList(instances, Arrays.asList(10, 10, 10));
    }

    List<WinQDCourseInstance> createInstances(int instances) {
        List instancesList = new ArrayList();
        for (int i = 0; i < 3; i++) {
            instancesList.add(new WinQDCourseInstance("inst:" + i));
        }
        return instancesList;
    }

    @Test
    public void testCreateDataFromImport() {
        Person t1 = new Person("t1");
        Person t2 = new Person("t2");

        WinQDCourse course = new WinQDCourse();
        course.setShortName("short");
        course.setName("long");
        // split 5 into 2+2+1
        course.setHours(ImportWinQD.getHours(5));
        assertEquals(3, course.getHours().size());

        course.addInstance("inst1", t1);
        course.addInstance("inst2", t2);

        Person eckart = new Person("eckart");
        Person frido = new Person("frido");

        course.getStudents().add(eckart);
        course.getStudents().add(frido);

        importer.addStudent(eckart);
        importer.addStudent(frido);
        importer.addTeacher(t1);
        importer.addTeacher(t2);
        importer.addCourse(course);

        importer.initSimpleDao();
        importer.fillSimpleDataPool();
        importer.addToDataPool();

        Dao<Event> eventDao = importer.getDataPool().getDao(Event.class);
        Dao<Person> personDao = importer.getDataPool().getDao(Person.class);
        Dao<Location> locationDao = importer.getDataPool().getDao(Location.class);

        assertTrue(locationDao.getAll().size() > 5);
        // 3 appointments * 2 instances
        assertEquals(6, eventDao.getAll().size());
        assertEquals(4, personDao.getAll().size());

        assertEquals(3, frido.getEvents().size());
    }

    @Test
    public void testIndexOfNumber() {
        assertEquals(2, ImportWinQD.indexOfNumber(1, "1m17"));
        assertEquals(4, ImportWinQD.indexOfNumber(1, "1spo12"));
    }

    private void assertList(List<WinQDCourseInstance> res, List<Integer> asList) {
        int index = 0;
        for (WinQDCourseInstance instance : res) {
            assertEquals("Students for " + instance.toString(), asList.get(index), instance.getStudents().size());
            index++;
        }
    }

    @Test
    public void testRunAlgorithm() {
        importer.setSemester(11);
        importer.doWork();

        NoCollisionPrinciple ncpInstance = new NoCollisionPrinciple();
        ncpInstance.setRandom(new Random(181282L));
        ncpInstance.setCondition(new AlgorithmConditionIteration(1000));
        ncpInstance.setDataPoolSettings(settings);
        ncpInstance.setStatusBar(new SilentConsoleStatusBar());
        ncpInstance.setDataPool(dataPool);

        ncpInstance.doWork();
    }
}
TOP

Related Classes of de.timefinder.core.io.winqd.ImportWinQDTest

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.