def setUp(self): """Create a base evaluation to save redefining it.""" self.eval = interop_admin_api_pb2.MissionEvaluation() self.eval.team.username = '******' feedback = self.eval.feedback feedback.uas_telemetry_time_max_sec = 1.0 feedback.uas_telemetry_time_avg_sec = 1.0 wpt = feedback.waypoints.add() wpt.score_ratio = 0.5 wpt = feedback.waypoints.add() wpt.score_ratio = 0.2 obs = feedback.stationary_obstacles.add() obs.hit = True obs = feedback.stationary_obstacles.add() obs.hit = False odlcs = feedback.odlc odlcs.score_ratio = 0.46 odlcs.extra_object_penalty_ratio = 0.1 m = feedback.map m.quality = interop_admin_api_pb2.MapEvaluation.MapQuality.MEDIUM t = odlcs.odlcs.add() t.score_ratio = 0.96 t.classifications_score_ratio = 0.6 t.geolocation_score_ratio = 0.2 t.actionable_score_ratio = 1.0 t.autonomous_score_ratio = 1.0 t = odlcs.odlcs.add() t.score_ratio = 0.16 t.classifications_score_ratio = 0.2 t.geolocation_score_ratio = 0.6 t.actionable_score_ratio = 0.0 t.autonomous_score_ratio = 0.0 judge = feedback.judge judge.flight_time_sec = 60 * 6 judge.post_process_time_sec = 60 * 4 judge.used_timeout = True judge.min_auto_flight_time = True judge.safety_pilot_takeovers = 2 judge.out_of_bounds = 2 judge.unsafe_out_of_bounds = 1 judge.things_fell_off_uas = False judge.crashed = False judge.air_drop_accuracy = interop_admin_api_pb2.MissionJudgeFeedback.WITHIN_40_FT judge.ugv_drove_to_location = False judge.operational_excellence_percent = 90
def test_non_negative(self): """Test that total score doesn't go negative.""" self.eval = interop_admin_api_pb2.MissionEvaluation() self.eval.team = 'team' feedback = self.eval.feedback feedback.uas_telemetry_time_max_sec = 100.0 feedback.uas_telemetry_time_avg_sec = 100.0 wpt = feedback.waypoints.add() wpt.score_ratio = 0 wpt = feedback.waypoints.add() wpt.score_ratio = 0 obs = feedback.stationary_obstacles.add() obs.hit = True obs = feedback.stationary_obstacles.add() obs.hit = True odlcs = feedback.odlc odlcs.score_ratio = 0 odlcs.extra_object_penalty_ratio = 1.0 t = odlcs.odlcs.add() t.score_ratio = 0 t.classifications_score_ratio = 0 t.geolocation_score_ratio = 0 t.actionable_score_ratio = 0 t.autonomous_score_ratio = 0 judge = feedback.judge judge.flight_time_sec = 60 * 100 judge.post_process_time_sec = 60 * 100 judge.used_timeout = True judge.min_auto_flight_time = True judge.safety_pilot_takeovers = 10 judge.waypoints_captured = 0 judge.out_of_bounds = 10 judge.unsafe_out_of_bounds = 5 judge.things_fell_off_uas = True judge.crashed = False judge.air_drop_accuracy = interop_admin_api_pb2.MissionJudgeFeedback.INSUFFICIENT_ACCURACY judge.ugv_drove_to_location = False judge.operational_excellence_percent = 0 mission_evaluation.score_team(self.eval) self.assertAlmostEqual(0, self.eval.score.score_ratio)