45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
import datetime
|
|
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from dse_shared_libs.mock.response import MyResponse
|
|
from dse_shared_libs.traffic_light_color import TrafficLightColor
|
|
|
|
from orchestrator import Orchestrator
|
|
|
|
|
|
class TestOrchestrator(unittest.TestCase):
|
|
def setUp(self) -> None:
|
|
self.timestamp = datetime.datetime.utcnow()
|
|
with patch('requests.sessions.Session.get', MyResponse):
|
|
self.orc = Orchestrator()
|
|
|
|
def test_full_speed_if_nothing_in_range(self):
|
|
self.orc.tls = {'1': {'color': TrafficLightColor.RED, 'switching_time': 100, 'last_switch': self.timestamp}}
|
|
tl_geo = {'cursor': []}
|
|
current_vel = 55.0
|
|
|
|
target_vel = self.orc._compute_velocity(tl_geo, current_vel)
|
|
self.assertEqual(130, target_vel)
|
|
|
|
def test_full_speed_if_far_away(self):
|
|
self.orc.tls = {'1': {'color': TrafficLightColor.GREEN, 'switching_time': 1000, 'last_switch': self.timestamp}}
|
|
tl_geo = {'cursor': [
|
|
{'id': '1', 'calculatedRange': 1000}
|
|
]}
|
|
current_vel = 55.0
|
|
|
|
target_vel = self.orc._compute_velocity(tl_geo, current_vel)
|
|
self.assertEqual(130, target_vel)
|
|
|
|
def test_slow_down_if_passing_not_possible(self):
|
|
self.orc.tls = {'1': {'color': TrafficLightColor.RED, 'switching_time': 100000, 'last_switch': self.timestamp}}
|
|
tl_geo = {'cursor': [
|
|
{'id': '1', 'calculatedRange': 1}
|
|
]}
|
|
current_vel = 130.0
|
|
|
|
target_vel = self.orc._compute_velocity(tl_geo, current_vel)
|
|
self.assertNotEqual(current_vel, target_vel)
|
|
self.assertEqual(0, target_vel)
|