 
         // now check if we are held and for any errors
         assertEqual(held, shouldBeHeld);
+        assertFalse(keyReleased);
         assertEqual(mockIo.getErrorMode(), NO_ERROR);
+    }
+
+    void assertReleasedState(bool expectedHeldState) {
+        int loopCount = 0;
+        while(!keyReleased && ++loopCount < 500) {
+            taskManager.yieldForMicros(1000);
+        }
+        assertTrue(keyReleased);
+        assertEqual(held, expectedHeldState);
     }
 
     void runInterruptLoopTimes(int times) {

    pressed = true;
}

class SwitchesFixture : public TestOnce {
protected:
    MockedIoAbstraction mockIo;

        taskManager.reset();

        pressed = false;
        keyReleased = false;
        held = false;
        callsMade = 0;
        encoderCurrentVal = 0;
