Skip to content

Vehicle variability example has incorrect constraint expression #692

@l-johnston

Description

@l-johnston

The vehicle variability example has incorrect constraint expression in VehicleVariabilityModel::'150% Model'::PartsTree::vehicleFamily where engine is being tested against a part usage rather than a variant reference.

package MVCE {
    private import ScalarValues::*;

    part def Vehicle;
    part def Engine;

    part vehicle : Vehicle {
        part engine : Engine[1];
    }

    part engine : Engine;
    part '4cylEngine' :> engine;
    part '6cylEngine' :> engine;

    variation part def EngineChoices :> Engine {
        variant '4cylEngine';
        variant '6cylEngine';
    }

    abstract part lowcostVehicleFamily :> vehicle {
        part :>> engine : EngineChoices[1];

        assert constraint engineConstraint { engine == '4cylEngine' }
    }

    part vehicle4Cyl :> lowcostVehicleFamily {
        part :>> engine = engine::'4cylEngine';
    }
}
%eval MVCE::vehicle4Cyl.engineConstraint()

LiteralBoolean false (3aa994ba-2a68-4555-8e08-7b48d0133290)

package MVCE_Corrected {
    private import ScalarValues::*;

    part def Vehicle;
    part def Engine;

    part vehicle : Vehicle {
        part engine : Engine[1];
    }

    part engine : Engine;
    part '4cylEngine' :> engine;
    part '6cylEngine' :> engine;

    variation part def EngineChoices :> Engine {
        variant '4cylEngine';
        variant '6cylEngine';
    }

    abstract part lowcostVehicleFamily :> vehicle {
        part :>> engine : EngineChoices[1];

        assert constraint engineConstraint { engine == engine::'4cylEngine' }
    }

    part vehicle4Cyl :> lowcostVehicleFamily {
        part :>> engine = engine::'4cylEngine';
    }
}
%eval MVCE_Corrected::vehicle4Cyl.engineConstraint()

LiteralBoolean true (03008dbc-16f2-4a6d-90a7-7a2213f22044)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions