def test_similar_classifications(self): """Tests similar classification counts are computed correctly.""" # Test equal standard targets. l = GpsPosition(latitude=38, longitude=-76) l.save() t1 = Target(user=self.user, target_type=TargetType.standard, location=l, orientation=Orientation.s, shape=Shape.square, background_color=Color.white, alphanumeric='ABC', alphanumeric_color=Color.black, description='Test target', autonomous=True) t1.save() t2 = Target(user=self.user, target_type=TargetType.standard, location=l, orientation=Orientation.s, shape=Shape.square, background_color=Color.white, alphanumeric='ABC', alphanumeric_color=Color.black, description='Test other target', autonomous=True) t2.save() self.assertAlmostEqual(1.0, t1.similar_classifications(t2)) # Test unequal standard targets. t1.alphanumeric = 'DEF' t1.alphanumeric_color = Color.blue t1.save() self.assertAlmostEqual(3.0 / 5.0, t1.similar_classifications(t2)) t1.shape = Shape.circle t1.background_color = Color.orange t1.save() self.assertAlmostEqual(1.0 / 5.0, t1.similar_classifications(t2)) # Test different types. t1.target_type = TargetType.off_axis t1.save() self.assertAlmostEqual(0, t1.similar_classifications(t2)) # Test off_axis is same as standard. t2.target_type = TargetType.off_axis t2.alphanumeric = 'DEF' t2.save() self.assertAlmostEqual(2.0 / 5.0, t1.similar_classifications(t2)) # Test emergent type is always 1. t1.target_type = TargetType.emergent t1.save() t2.target_type = TargetType.emergent t2.save() self.assertAlmostEqual(1.0, t1.similar_classifications(t2))
def test_last_modified_time(self): """Last modified time is set on creation and changes every update.""" t = Target(user=self.user, target_type=TargetType.standard) t.save() orig = t.last_modified_time self.assertIsNotNone(orig) t.alphanumeric = 'A' t.save() self.assertGreater(t.last_modified_time, orig)
def test_creation_time(self): """Creation time is set on creation and doesn't change on update.""" t = Target(user=self.user, target_type=TargetType.standard) t.save() orig = t.creation_time self.assertIsNotNone(orig) t.alphanumeric = 'A' t.save() self.assertEqual(orig, t.creation_time)
def test_actionable_submission(self): """Tests actionable_submission correctly filters submissions.""" # t1 created and updated before take off. t1 = Target(user=self.user, target_type=TargetType.standard) t1.save() t1.alphanumeric = 'A' t1.save() # t2 created before take off and updated in flight. t2 = Target(user=self.user, target_type=TargetType.standard) t2.save() event = TakeoffOrLandingEvent(user=self.user, uas_in_air=True) event.save() t2.alphanumeric = 'A' t2.save() # t3 created and updated in flight. t3 = Target(user=self.user, target_type=TargetType.standard) t3.save() t3.alphanumeric = 'A' t3.save() # t4 created in flight and updated after landing. t4 = Target(user=self.user, target_type=TargetType.standard) t4.save() event = TakeoffOrLandingEvent(user=self.user, uas_in_air=False) event.save() t4.alphanumeric = 'A' t4.save() # t5 created and updated after landing. t5 = Target(user=self.user, target_type=TargetType.standard) t5.save() t5.alphanumeric = 'A' t5.save() # t6 created and updated in second flight. event = TakeoffOrLandingEvent(user=self.user, uas_in_air=True) event.save() t6 = Target(user=self.user, target_type=TargetType.standard) t6.save() t6.alphanumeric = 'A' t6.save() event = TakeoffOrLandingEvent(user=self.user, uas_in_air=False) event.save() self.assertFalse(t1.actionable_submission()) self.assertFalse(t2.actionable_submission()) self.assertTrue(t3.actionable_submission()) self.assertFalse(t4.actionable_submission()) self.assertFalse(t5.actionable_submission()) self.assertFalse(t6.actionable_submission())
def test_interop_submission(self): """Tests interop_submission correctly filters submissions.""" # t1 created and updated before mission time starts. t1 = Target(user=self.user, target_type=TargetType.standard) t1.save() t1.alphanumeric = 'A' t1.save() # t2 created before mission time starts and updated once it does. t2 = Target(user=self.user, target_type=TargetType.standard) t2.save() # Mission time starts. event = MissionClockEvent(user=self.user, team_on_clock=True, team_on_timeout=False) event.save() t2.alphanumeric = 'A' t2.save() # t3 created and updated during mission time. t3 = Target(user=self.user, target_type=TargetType.standard) t3.save() t3.alphanumeric = 'A' t3.save() # t4 created in in mission time and updated during timeout. t4 = Target(user=self.user, target_type=TargetType.standard) t4.save() # Team takes timeout. Mission time stops. event = MissionClockEvent(user=self.user, team_on_clock=False, team_on_timeout=True) event.save() t4.alphanumeric = 'A' t4.save() # t5 created and updated during timeout. t5 = Target(user=self.user, target_type=TargetType.standard) t5.save() t5.alphanumeric = 'A' t5.save() # t6 created and updated once mission time resumes. event = MissionClockEvent(user=self.user, team_on_clock=True, team_on_timeout=False) event.save() t6 = Target(user=self.user, target_type=TargetType.standard) t6.save() t6.alphanumeric = 'A' t6.save() event = MissionClockEvent(user=self.user, team_on_clock=False, team_on_timeout=False) event.save() self.assertFalse(t1.interop_submission()) self.assertFalse(t2.interop_submission()) self.assertTrue(t3.interop_submission()) self.assertFalse(t4.interop_submission()) self.assertFalse(t5.interop_submission()) self.assertTrue(t6.interop_submission())