Composition operators examples
Example: composition operator first_of
OSC2 code: composition operator first_of
import "$FTX_BASIC/exe_platforms/sumo_ssp/config/sumo_config.osc"
extend test_config:
set map = "$FTX_PACKAGES/maps/hooder.xodr"
scenario vehicle.two_trucks:
truck1: box_truck
truck2: box_truck
truck1_path: internal_road
truck2_path: internal_road
truck1_drive_duration: time
truck2_wait_duration: time
truck2_startup_duration: time
truck2_drive_duration: time
event passed_meeting
event truck1_stopped
do first_of:
parallel(overlap: any):
truck1_drive: truck1.drive(duration: truck1_drive_duration) with:
along(truck1_path)
serial:
truck2_wait: truck2.drive(duration: truck2_wait_duration) with:
along(truck2_path)
speed(0kph)
truck2_startup: truck2.drive(duration: truck2_startup_duration)
truck2_drive: truck2.drive(duration: truck2_drive_duration) with:
speed([10kph..15kph], at: start)
avoid_collisions(false)
serial:
wait @passed_meeting
log_info("truck1 passed meeting point.")
serial:
wait @truck1_stopped
log_info("truck1 stopped before meeting point.")
extend top.main:
do sut.car.two_trucks(duration: 3s)
Example: composition operator parallel
OSC2 code: composition operator parallel
import "$FTX_BASIC/exe_platforms/sumo_ssp/config/sumo_config.osc"
extend test_config:
set map = "$FTX_PACKAGES/maps/hooder.xodr"
extend top.main:
car1: vehicle
do sut.car.drive(duration: 5s)
extend top.main:
do p1: parallel(overlap:equal):
car1.drive()
environment.weather(kind: clear)
Example: composition operator parallel() used to describe consecutive actions
OSC2 code: composition operator parallel() used to describe consecutive actions
import "$FTX_BASIC/exe_platforms/sumo_ssp/config/sumo_config.osc"
extend test_config:
set map = "$FTX_PACKAGES/maps/hooder.xodr"
extend top.main:
car1: vehicle
car2: vehicle
extend top.main:
do s1: serial:
p1: parallel(overlap:equal):
car1.drive()
environment.weather(kind: clear)
p2: parallel(overlap:equal):
car1.drive()
environment.weather(kind: rain)
Example: primacy of first scenario in parallel()
OSC2 code: primacy of first scenario in parallel()
import "$FTX_BASIC/exe_platforms/sumo_ssp/config/sumo_config.osc"
extend test_config:
set map = "$FTX_PACKAGES/maps/hooder.xodr"
extend top.main:
do sut.car.drive(duration: 5s)
scenario sut.cut_in:
i:int
scenario sut.rainstorm:
i:int
scenario sut.cut_in_with_rain:
do parallel(overlap:equal):
cut_in()
rainstorm()
Example: overlap:any
OSC2 code: overlap:any
import "$FTX_BASIC/exe_platforms/sumo_ssp/config/sumo_config.osc"
extend test_config:
set map = "$FTX_PACKAGES/maps/hooder.xodr"
extend top.main:
do sut.car.drive(duration: 5s)
scenario sut.cut_in:
i:int
scenario sut.rainstorm:
i:int
scenario sut.cut_in_with_rain:
do parallel(overlap:any):
rainstorm()
cut_in()
Example: composition operator serial()
OSC2 code: composition operator serial()
import "$FTX_BASIC/exe_platforms/sumo_ssp/config/sumo_config.osc"
extend test_config:
set map = "$FTX_PACKAGES/maps/hooder.xodr"
extend top.main:
do sut.car.drive(duration: 5s)
scenario top.first_scenario:
car1: vehicle
scenario top.second_scenario:
car1: vehicle
scenario sut.my_scenario:
do serial():
fs: top.first_scenario()
w1: wait elapsed([3..5]second)
ss: top.second_scenario()