Package eu.scape_project.planning.model.tree

Source Code of eu.scape_project.planning.model.tree.VPlanLeafTest

/*******************************************************************************
* Copyright 2006 - 2012 Vienna University of Technology,
* Department of Software Technology and Interactive Systems, IFS
*
* 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 eu.scape_project.planning.model.tree;

import static org.junit.Assert.assertEquals;

import java.util.HashMap;
import java.util.Map;

import org.junit.Test;

import eu.scape_project.planning.model.SampleAggregationMode;
import eu.scape_project.planning.model.TargetValueObject;
import eu.scape_project.planning.model.Values;
import eu.scape_project.planning.model.kbrowser.VPlanLeaf;
import eu.scape_project.planning.model.scales.OrdinalScale;
import eu.scape_project.planning.model.scales.PositiveFloatScale;
import eu.scape_project.planning.model.transform.NumericTransformer;
import eu.scape_project.planning.model.transform.OrdinalTransformer;
import eu.scape_project.planning.model.values.FloatValue;
import eu.scape_project.planning.model.values.OrdinalValue;

public class VPlanLeafTest {
    @Test
    public void hasKOPotential_ordinalTrans_independentOfAggregation() {
        VPlanLeaf avgAggLeaf = createLeafWithOrdinalTransformer(SampleAggregationMode.AVERAGE);
        VPlanLeaf worstAggLeaf = createLeafWithOrdinalTransformer(SampleAggregationMode.WORST);

        assertEquals(false, avgAggLeaf.hasKOPotential());
        assertEquals(false, worstAggLeaf.hasKOPotential());
    }

    @Test
    public void hasKOPotential_numericTransformer_independentOfAggregation() {
        VPlanLeaf avgAggLeaf = createLeafWithNumericTransformer(SampleAggregationMode.AVERAGE);
        VPlanLeaf worstAggLeaf = createLeafWithNumericTransformer(SampleAggregationMode.WORST);

        assertEquals(true, avgAggLeaf.hasKOPotential());
        assertEquals(true, worstAggLeaf.hasKOPotential());
    }

    @Test
    public void getActualKO_ordinalTransformerNotMappingTo0_average() {
        VPlanLeaf leaf = createLeafWithOrdinalTransformer(SampleAggregationMode.AVERAGE);

        assertEquals(0, leaf.getActualKO(), 0.001);
    }

    @Test
    public void getActualKO_ordinalTransformerNotMappingTo0_worst() {
        VPlanLeaf leaf = createLeafWithOrdinalTransformer(SampleAggregationMode.WORST);

        assertEquals(0, leaf.getActualKO(), 0.001);
    }

    @Test
    public void getActualKO_numericTransformer_average() {
        VPlanLeaf leaf = createLeafWithNumericTransformer(SampleAggregationMode.AVERAGE);

        assertEquals(0, leaf.getActualKO(), 0.001);
    }

    @Test
    public void getActualKO_numericTransformer_worst() {
        VPlanLeaf leaf = createLeafWithNumericTransformer(SampleAggregationMode.WORST);

        assertEquals(1, leaf.getActualKO(), 0.001);
    }

    @Test
    public void getPotentialOutputRange_ordinalTransformer_independentOfAggregation() {
        VPlanLeaf avgAggLeaf = createLeafWithOrdinalTransformer(SampleAggregationMode.AVERAGE);
        VPlanLeaf worstAggLeaf = createLeafWithOrdinalTransformer(SampleAggregationMode.WORST);

        assertEquals(4, avgAggLeaf.getPotentialOutputRange(), 0.001);
        assertEquals(4, worstAggLeaf.getPotentialOutputRange(), 0.001);
    }

    @Test
    public void getPotentialOutputRange_numericTransformer_independentOfAggregation() {
        VPlanLeaf avgAggLeaf = createLeafWithNumericTransformer(SampleAggregationMode.AVERAGE);
        VPlanLeaf worstAggLeaf = createLeafWithNumericTransformer(SampleAggregationMode.WORST);

        assertEquals(5, avgAggLeaf.getPotentialOutputRange(), 0.001);
        assertEquals(5, worstAggLeaf.getPotentialOutputRange(), 0.001);
    }

    @Test
    public void getActualOutputRange_ordinalTransformer_average() {
        VPlanLeaf leaf = createLeafWithOrdinalTransformer(SampleAggregationMode.AVERAGE);

        assertEquals(3, leaf.getActualOutputRange(), 0.001);
    }

    @Test
    public void getActualOutputRange_ordinalTransformer_worst() {
        VPlanLeaf leaf = createLeafWithOrdinalTransformer(SampleAggregationMode.WORST);

        assertEquals(0, leaf.getActualOutputRange(), 0.001);
    }

    @Test
    public void getActualOutputRange_numericTransformer_average() {
        VPlanLeaf leaf = createLeafWithNumericTransformer(SampleAggregationMode.AVERAGE);

        assertEquals(0.6, leaf.getActualOutputRange(), 0.001);
    }

    @Test
    public void getActualOutputRange_numericTransformer_worst() {
        VPlanLeaf leaf = createLeafWithNumericTransformer(SampleAggregationMode.WORST);

        assertEquals(1, leaf.getActualOutputRange(), 0.001);
    }

    // -------------------------- helper methods --------------------------

    private VPlanLeaf createLeafWithOrdinalTransformer(SampleAggregationMode aggregationMode) {
        VPlanLeaf leaf = new VPlanLeaf();

        // create simple transformer
        OrdinalTransformer ordinalTrans = new OrdinalTransformer();
        Map<String, TargetValueObject> mapping = new HashMap<String, TargetValueObject>();
        TargetValueObject tv0 = new TargetValueObject();
        TargetValueObject tv1 = new TargetValueObject();
        tv0.setValue(5);
        tv1.setValue(1);
        mapping.put("Y", tv0);
        mapping.put("N", tv1);
        ordinalTrans.setMapping(mapping);
        leaf.setTransformer(ordinalTrans);

        // set scale
        OrdinalScale ordinalScale = new OrdinalScale();
        ordinalScale.setRestriction("Yes/No");
        leaf.setScale(ordinalScale);

        // valueMap
        OrdinalValue yes = new OrdinalValue();
        yes.setValue("Y");
        OrdinalValue no = new OrdinalValue();
        no.setValue("N");

        Values valuesAlternative1 = new Values();
        Values valuesAlternative2 = new Values();
        valuesAlternative1.add(yes);
        valuesAlternative1.add(yes);
        valuesAlternative1.add(yes);
        valuesAlternative1.add(no);
        valuesAlternative2.add(no);
        valuesAlternative2.add(no);
        valuesAlternative2.add(no);
        valuesAlternative2.add(no);

        Map<String, Values> valueMap = new HashMap<String, Values>();
        valueMap.put("alt1", valuesAlternative1);
        valueMap.put("alt2", valuesAlternative2);
        leaf.setValueMap(valueMap);

        leaf.setAggregationMode(aggregationMode);
        leaf.setWeight(1);
        leaf.setTotalWeight(1);

        return leaf;
    }

    private VPlanLeaf createLeafWithNumericTransformer(SampleAggregationMode aggregationMode) {
        VPlanLeaf leaf = new VPlanLeaf();

        // create simple transformer
        NumericTransformer numericTrans = new NumericTransformer();
        numericTrans.setThreshold1(1d);
        numericTrans.setThreshold2(2d);
        numericTrans.setThreshold3(3d);
        numericTrans.setThreshold4(4d);
        numericTrans.setThreshold5(5d);
        leaf.setTransformer(numericTrans);

        // set scale
        PositiveFloatScale scale = new PositiveFloatScale();
        leaf.setScale(scale);

        // valueMap
        FloatValue v0 = new FloatValue();
        v0.setValue(0d);
        FloatValue v1 = new FloatValue();
        v1.setValue(1d);
        FloatValue v2 = new FloatValue();
        v2.setValue(2d);
        FloatValue v3 = new FloatValue();
        v3.setValue(3d);
        FloatValue v4 = new FloatValue();
        v4.setValue(4d);
        FloatValue v5 = new FloatValue();
        v5.setValue(5d);

        Values valuesAlternative1 = new Values();
        Values valuesAlternative2 = new Values();
        valuesAlternative1.add(v0);
        valuesAlternative1.add(v0);
        valuesAlternative1.add(v3);
        valuesAlternative1.add(v4);
        valuesAlternative1.add(v5);
        valuesAlternative2.add(v3);
        valuesAlternative2.add(v3);
        valuesAlternative2.add(v1);
        valuesAlternative2.add(v3);
        valuesAlternative2.add(v5);

        Map<String, Values> valueMap = new HashMap<String, Values>();
        valueMap.put("alt1", valuesAlternative1);
        valueMap.put("alt2", valuesAlternative2);
        leaf.setValueMap(valueMap);

        leaf.setAggregationMode(aggregationMode);
        leaf.setWeight(1);
        leaf.setTotalWeight(1);

        return leaf;
    }
}
TOP

Related Classes of eu.scape_project.planning.model.tree.VPlanLeafTest

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.