Ejemplo n.º 1
0
 def test_hms_to_seconds_since_midnight_full(self):
     t = "20:30:40"
     s = TimeUtil.hms_to_seconds_since_midnight(t)
     self.assertEqual(73840, s)
Ejemplo n.º 2
0
 def test_seconds_since_midnight_to_hms_full(self):
     s = 73840
     t = TimeUtil.seconds_since_midnight_to_hms(s)
     self.assertEqual("20:30:40", t)
Ejemplo n.º 3
0
 def test_ddi_conversion_minutes(self):
     s = "PT3M"
     t = TimeUtil.ddi_duration_to_seconds(s)
     self.assertEqual(180, t)
Ejemplo n.º 4
0
 def test_seconds_since_midnight_to_hms_minutes_seconds_single_digits(self):
     s = 125
     t = TimeUtil.seconds_since_midnight_to_hms(s)
     self.assertEqual("00:02:05", t)
Ejemplo n.º 5
0
 def test_seconds_since_midnight_to_hms_minutes_double_digits(self):
     s = 720
     t = TimeUtil.seconds_since_midnight_to_hms(s)
     self.assertEqual("00:12:00", t)
Ejemplo n.º 6
0
 def test_seconds_since_midnight_to_hms_seconds_double_digits(self):
     s = 25
     t = TimeUtil.seconds_since_midnight_to_hms(s)
     self.assertEqual("00:00:25", t)
Ejemplo n.º 7
0
 def test_seconds_since_midnight_to_hms_seconds_single_digit(self):
     s = 2
     t = TimeUtil.seconds_since_midnight_to_hms(s)
     self.assertEqual("00:00:02", t)
Ejemplo n.º 8
0
 def test_ddi_conversion_mixed(self):
     # This appears in problem 5:
     s = "PT2M30S"
     t = TimeUtil.ddi_duration_to_seconds(s)
     self.assertEqual(150, t)
Ejemplo n.º 9
0
 def test_ddi_conversion_seconds(self):
     s = "PT53S"
     t = TimeUtil.ddi_duration_to_seconds(s)
     self.assertEqual(53, t)
Ejemplo n.º 10
0
 def train_run_from_dag(annotated_problem, chromosome, dag_path, route_id):
     # Dag_path should be the array of nodes:
     train_run = {}
     train_run["service_intention_id"] = route_id
     train_run["train_run_sections"] = []
     c_idx = 0
     current_time = 0
     #print(dag_path)
     for node in dag_path:
         temp_node = node.strip("(").strip(")")
         sequence_number = None
         m_number = None
         # Try and parse out sequence or m_number
         if "->" in temp_node:
             sequence_number = int(temp_node.split('->', 1)[1])
         elif "_end" in temp_node:
             sequence_number = int(temp_node.strip("_end"))
         elif "_beginning" in temp_node:
             sequence_number = int(temp_node.strip("_beginning"))
         else:
             m_number = temp_node
         # Try and find the route section:
         route_section = None
         if sequence_number:
             route_section = SolutionBuilder.route_path_with_sequence_number(
                 annotated_problem, route_id, sequence_number)
         else:
             route_section = SolutionBuilder.route_path_with_alternative_name(
                 annotated_problem, route_id, m_number)
             if route_section:
                 sequence_number = route_section["sequence_number"]
         if not route_section:
             raise ValueError(
                 "Unable to find route section with node: ({})".format(
                     node))
         # Build the train_run_section:
         train_run_section = {
             "route": route_id,
             "route_section_id": "{}#{}".format(route_id, sequence_number),
             "sequence_number": c_idx + 1,
             "route_path": sequence_number
         }
         if "section_marker" in route_section:
             marker = route_section["section_marker"][0]
             train_run_section["section_requirement"] = marker
             # There's a marker, see if we can find the entry_earliest requirement:
             requirement = SolutionBuilder.section_requirement_with_marker(
                 annotated_problem, route_id, marker)
             if requirement and "entry_earliest" in requirement:
                 current_time = TimeUtil.hms_to_seconds_since_midnight(
                     requirement["entry_earliest"])
         else:
             train_run_section["section_requirement"] = None
         train_run_section[
             "entry_time"] = TimeUtil.seconds_since_midnight_to_hms(
                 current_time)
         min_time = 0
         if "minimum_running_time" in route_section:
             min_time = TimeUtil.ddi_duration_to_seconds(
                 route_section["minimum_running_time"])
         current_time += min_time
         current_time += chromosome[c_idx]['delta']
         train_run_section[
             "exit_time"] = TimeUtil.seconds_since_midnight_to_hms(
                 current_time)
         # TODO: Figure out our exit time
         train_run["train_run_sections"].append(train_run_section)
         c_idx += 1
     return train_run