Impressum TestController.vdmrt
Interaktion und Portierbarkeitunbekannt
\section{Test of Controller}
\begin{vdm_al} ------------------------------------------------ -- Class: TestController -- Description: Test the Controller class -----------------------------------------------
-- -- class definition -- class TestController issubclassof TestCase
--test get traffic data
vec.setLowGrip(true);
vec.setTurnIndicator(<LEFT>);
ctrl.Step(); let vs = ctrl.GetTrafficData() in
( let v = vs(1) in
(
AssertTrue(v.GetPosition().X() = 1);
AssertTrue(v.GetPosition().Y() = 2);
AssertTrue(v.GetMessage() = <LowGrip>);
AssertTrue(v.GetDirection() = <NORTH>);
); let v = vs(2) in
(
AssertTrue(v.GetPosition().X() = 1);
AssertTrue(v.GetPosition().Y() = 2);
AssertTrue(v.GetMessage() = <LeftTurn>);
AssertTrue(v.GetDirection() = <NORTH>);
)
);
vec.SetSpeed(0);
vec.setTurnIndicator(<LEFT>);
ctrl.Step(); let vs = ctrl.GetTrafficData() in
( let v = vs(1) in
(
AssertTrue(v.GetPosition().X() = 1);
AssertTrue(v.GetPosition().Y() = 2);
AssertTrue(v.GetMessage() = <LowGrip>);
AssertTrue(v.GetDirection() = <NORTH>);
); let v = vs(2) in
(
AssertTrue(v.GetPosition().X() = 1);
AssertTrue(v.GetPosition().Y() = 2);
AssertTrue(v.GetMessage() = <LeftTurn>);
AssertTrue(v.GetDirection() = <NORTH>);
)
);
ctrl.AddOncomingVehicle(ctrl2.getVehicleDTO());
ctrl.AddOncomingVehicle(ctrl3.getVehicleDTO());
ctrl.Step(); let vs = ctrl.GetTrafficData() in let v = vs(3) in
(
AssertTrue(v.GetMessage() = <Congestion>);
);
-- --test add of traffic data. Test that adding loops when more than five
ctrl.AddTrafficData(21, [new TrafficData(<Congestion>, pos , <NORTH>)]);
ctrl.AddTrafficData(22, [new TrafficData(<Congestion>, pos , <NORTH>)]);
ctrl.AddTrafficData(23, [new TrafficData(<Congestion>, pos , <NORTH>)]);
ctrl.AddTrafficData(24, [new TrafficData(<Congestion>, pos , <NORTH>)]);
ctrl.AddTrafficData(25, [new TrafficData(<Congestion>, pos , <NORTH>)]);
ctrl.AddTrafficData(26, [new TrafficData(<LeftTurn>, pos , <NORTH>)]);
-- actually this can't be automatically tested. -- The added data is internal only. The test can only be verified -- by checking the handled events in environment.