| 85 | constexpr int kTestWpm = 20; |
| 86 | |
| 87 | void testStraightDitProducesOneElement() |
| 88 | { |
| 89 | Recorder rec; |
| 90 | IambicKeyer k; |
| 91 | k.setOnKeyDownChange([&](bool d) { rec.onKeyDownChange(d); }); |
| 92 | k.setOnPaddleEvent([&](bool d, bool h) { rec.onPaddleEvent(d, h); }); |
| 93 | k.setWpm(kTestWpm); |
| 94 | k.setMode(IambicKeyer::Mode::IambicB); |
| 95 | k.start(); |
| 96 | |
| 97 | // Press dit briefly, release, wait for one element to complete. |
| 98 | k.setPaddleState(true, false); |
| 99 | std::this_thread::sleep_for(10ms); |
| 100 | k.setPaddleState(false, false); |
| 101 | std::this_thread::sleep_for(150ms); |
| 102 | k.stop(); |
| 103 | |
| 104 | const auto evs = rec.events(); |
| 105 | bool ok = (evs.size() >= 2 && evs[0].down == true && evs[1].down == false); |
| 106 | if (ok) ok &= nearMs(evs[1].at - evs[0].at, kTestUnitMs); |
| 107 | report("single dit press produces one ~60ms key-down element", ok); |
| 108 | } |
| 109 | |
| 110 | void testStraightDahProducesOneElement() |
| 111 | { |
no test coverage detected