Test 2022 superstructure starting off collided

Also, actually call Test() with negative angles.

Signed-off-by: Milind Upadhyay <milind.upadhyay@gmail.com>
Change-Id: I5661147060098cdb69e8eef5332446bcdcc1d0c0
diff --git a/y2022/control_loops/superstructure/collision_avoidance_test.cc b/y2022/control_loops/superstructure/collision_avoidance_test.cc
index cd54fea..7c53be3 100644
--- a/y2022/control_loops/superstructure/collision_avoidance_test.cc
+++ b/y2022/control_loops/superstructure/collision_avoidance_test.cc
@@ -87,19 +87,19 @@
 
   void Simulate() {
     FlatbufferDetachedBuffer<Goal> safe_goal = MakeZeroGoal();
-
-    // Don't simulate if already collided
-    if (avoidance_.IsCollided(status_)) {
-      return;
-    }
+    bool was_collided = avoidance_.IsCollided(status_);
 
     bool moving = true;
     while (moving) {
       // Compute the safe goal
       avoidance_.UpdateGoal(status_, unsafe_goal_.message().turret());
 
-      // The system should never be collided
-      ASSERT_FALSE(avoidance_.IsCollided(status_));
+      if (!was_collided) {
+        // The system should never be collided if it didn't start off collided
+        EXPECT_FALSE(avoidance_.IsCollided(status_));
+      } else {
+        was_collided = avoidance_.IsCollided(status_);
+      }
 
       safe_goal.mutable_message()->mutable_intake_front()->mutate_unsafe_goal(
           ::aos::Clip(intake_front_goal(), avoidance_.min_intake_front_goal(),
@@ -129,6 +129,8 @@
       }
     }
 
+    EXPECT_FALSE(avoidance_.IsCollided(status_));
+
     CheckGoals();
   }
 
@@ -336,8 +338,13 @@
            {TurretState::kSafeFront, TurretState::kSafeBack,
             TurretState::kSafeFrontWrapped, TurretState::kSafeBackWrapped,
             TurretState::kUnsafeFront, TurretState::kUnsafeBack,
-            TurretState::kUnsafeFrontWrapped,
-            TurretState::kUnsafeBackWrapped}) {
+            TurretState::kUnsafeFrontWrapped, TurretState::kUnsafeBackWrapped,
+            TurretState::kNegativeSafeFront, TurretState::kNegativeSafeBack,
+            TurretState::kNegativeSafeFrontWrapped,
+            TurretState::kNegativeSafeBackWrapped,
+            TurretState::kNegativeUnsafeFront, TurretState::kNegativeUnsafeBack,
+            TurretState::kNegativeUnsafeFrontWrapped,
+            TurretState::kNegativeUnsafeBackWrapped}) {
         // Intake front goal
         for (IntakeState intake_front_goal :
              {IntakeState::kSafe, IntakeState::kUnsafe}) {
@@ -350,7 +357,15 @@
                   TurretState::kSafeFrontWrapped, TurretState::kSafeBackWrapped,
                   TurretState::kUnsafeFront, TurretState::kUnsafeBack,
                   TurretState::kUnsafeFrontWrapped,
-                  TurretState::kUnsafeBackWrapped}) {
+                  TurretState::kUnsafeBackWrapped,
+                  TurretState::kNegativeSafeFront,
+                  TurretState::kNegativeSafeBack,
+                  TurretState::kNegativeSafeFrontWrapped,
+                  TurretState::kNegativeSafeBackWrapped,
+                  TurretState::kNegativeUnsafeFront,
+                  TurretState::kNegativeUnsafeBack,
+                  TurretState::kNegativeUnsafeFrontWrapped,
+                  TurretState::kNegativeUnsafeBackWrapped}) {
               // Catapult state
               for (CatapultState catapult_state :
                    {CatapultState::kIdle, CatapultState::kShooting}) {