Commit dce2840a authored by Matthew Dawson's avatar Matthew Dawson
Browse files

Simplify PartialVariableCollection's construction.

Provide a set of simpler PartialVariableCollection constructors.  These take
a list and work from there.  Note that the original Map version still exists
for VariableParser.
parent 69710647
Loading
Loading
Loading
Loading
+24 −3
Original line number Diff line number Diff line
@@ -42,15 +42,36 @@ final public class PartialVariableCollection {
        m_enumerationTypes = Collections.unmodifiableSet(enumerationTypes);
    }

    public PartialVariableCollection(Map<String, Variable> variables) {
        m_variables = Collections.unmodifiableMap(variables);
    /**
     * Construct PartialVariableCollection from a list of variables
     *
     * Often when constructing a PartialVariableCollection, you have a compile time defined list of variables.  This
     * provides a simple method to construct a partial variable collection from such a list.
     * @param variables The variables to store in this collection.
     */
    public PartialVariableCollection(Variable... variables) {
        this(Arrays.asList(variables));
    }

    /**
     * Construct PartialVariableCollection from a collection of variables.
     *
     * Due to limitations in MATLAB, variadic functions are not an option.  Instead create this function to take a collection
     * and construct PartialVariableCollections from it.
     * @param variables The variables to store in this collection.
     */
    public PartialVariableCollection(Collection <Variable> variables) {
        Map<String, Variable> variablesMap = new LinkedHashMap<String, Variable>(variables.size());

        final Set<EnumerationVariableType> enumerationTypes = new LinkedHashSet<EnumerationVariableType>();
        for (Variable var : variables.values()) {
        for (Variable var : variables) {
            variablesMap.put(var.name(), var);
            if (var.type() instanceof EnumerationVariableType) {
                enumerationTypes.add((EnumerationVariableType) var.type());
            }
        }

        m_variables = Collections.unmodifiableMap(variablesMap);
        m_enumerationTypes = Collections.unmodifiableSet(enumerationTypes);
    }

+1 −6
Original line number Diff line number Diff line
@@ -257,12 +257,7 @@ public class ParameterizedEventBTableGeneratorTest {
    }

    public static Table initialize(String tableName, String inputVariables, Variable...outputVariables) {
        Map<String, Variable> outputVariablesMap = new LinkedHashMap<String, Variable>(1);
        for(Variable outputVariable : outputVariables) {
            outputVariablesMap.put(outputVariable.name(), outputVariable);
        }

        VariableCollection variableCollection = new VariableCollection(m_variableParser.parseVariables(inputVariables), new PartialVariableCollection(outputVariablesMap));
        VariableCollection variableCollection = new VariableCollection(m_variableParser.parseVariables(inputVariables), new PartialVariableCollection(outputVariables));
        return new Table(tableName, variableCollection);
    }

+10 −19
Original line number Diff line number Diff line
@@ -48,23 +48,14 @@ import static org.junit.Assert.assertThat;
public class PartialVariableCollectionTest {
    @Test
    public void singleArgumentConstructor() {
        final Map<String, Variable> variables = new HashMap<String, Variable>();
        variables.put("test", new Variable("test", RealVariableType.Type));
        Variable var1 = new Variable("test1", RealVariableType.Type);
        Variable var2 = new Variable("test2", RealVariableType.Type);

        PartialVariableCollection vars = new PartialVariableCollection(variables);
        PartialVariableCollection vars = new PartialVariableCollection(var1, var2);

        assertThat(vars.m_variables, is(variables));
        assertThat(vars.m_enumerationTypes, is(notNullValue()));
    }

    @Test
    public void singleArgumentConstructorNoEnumerations() {
        final Map<String, Variable> variables = new HashMap<String, Variable>();
        variables.put("test", new Variable("test", RealVariableType.Type));

        PartialVariableCollection vars = new PartialVariableCollection(variables);

        assertThat(vars.m_variables, is(variables));
        assertThat(vars.m_variables.size(), is(2));
        assertThat(vars.m_variables.get("test1"), is(var1));
        assertThat(vars.m_variables.get("test2"), is(var2));
        assertThat(vars.m_enumerationTypes, is(notNullValue()));
        assertThat(vars.m_enumerationTypes.size(), is(0));
    }
@@ -73,12 +64,12 @@ public class PartialVariableCollectionTest {
    public void singleArgumentConstructorEnumerations() {
        final EnumerationVariableType enumerationType = new EnumerationVariableType("testtype");
        enumerationType.enumerationValues().add("testconst ");
        final Map<String, Variable> variables = new HashMap<String, Variable>();
        variables.put("test", new Variable("test", enumerationType));
        Variable var = new Variable("test", enumerationType);

        PartialVariableCollection vars = new PartialVariableCollection(variables);
        PartialVariableCollection vars = new PartialVariableCollection(var);

        assertThat(vars.m_variables, is(variables));
        assertThat(vars.m_variables.size(), is(1));
        assertThat(vars.m_variables.get("test"), is(var));
        assertThat(vars.m_enumerationTypes, is(notNullValue()));
        assertThat(vars.m_enumerationTypes.size(), is(1));
        assertThat(vars.m_enumerationTypes.contains(enumerationType), is(true));
+2 −12
Original line number Diff line number Diff line
@@ -49,10 +49,7 @@ import static org.junit.Assert.assertThat;
public class VariableCollectionTest {
    @Test
    public void VariablesAreInBothLists() {
        Map<String, Variable> vars = new HashMap<String, Variable>();
        vars.put("a", new Variable("a", new RealVariableType()));

        VariableCollection toTest = new VariableCollection(new PartialVariableCollection(vars));
        VariableCollection toTest = new VariableCollection(new PartialVariableCollection(new Variable("a", new RealVariableType())));
        assertThat(toTest.getInputVariables().size(), is(1));
        assertThat(toTest.getInputVariablesAndEnumeratedValues().size(), is(1));

@@ -161,14 +158,7 @@ public class VariableCollectionTest {
        allTypeSet.addAll(inputTypeSet);
        allTypeSet.addAll(outputTypeSet);

        final Map<String, Variable> vars1 = new HashMap<String, Variable>();
        vars1.put(var1e.name(), var1e);
        vars1.put(var1r.name(), var1r);

        final Map<String, Variable> vars2 = new HashMap<String, Variable>();
        vars2.put(var2e.name(), var2e);

        final VariableCollection vc = new VariableCollection(new PartialVariableCollection(vars1), new PartialVariableCollection(vars2));
        final VariableCollection vc = new VariableCollection(new PartialVariableCollection(var1e, var1r), new PartialVariableCollection(var2e));

        assertThat(vc.getInputVariableTypes(), equalTo(inputTypeSet));
        assertThat(vc.getOutputVariableTypes(), equalTo(outputTypeSet));
+1 −3
Original line number Diff line number Diff line
@@ -55,9 +55,7 @@ public class HierarchicalGridSALGeneratorTest {
    @Test
    public void exerciseCVC3Generator() {
        Variable outputVar = new Variable("output", new RealVariableType());
        Map<String, Variable> variableMap = new HashMap<String, Variable>(1);
        variableMap.put(outputVar.name(), outputVar);
        Table table = new Table(null, new VariableCollection(variableParser.parseVariables("x,z"), new PartialVariableCollection(variableMap)));
        Table table = new Table(null, new VariableCollection(variableParser.parseVariables("x,z"), new PartialVariableCollection(outputVar)));
        List<HierarchicalCell> topCells = table.getLeftGrid().getSubHierarchy();

        topCells.add(new HierarchicalCell("x > 0"));
Loading