Signed-off-by: Michael Richters <gedankenexperimenter@gmail.com>f/testing-event-queue
parent
7ef7b4ba57
commit
1c559260fd
@ -0,0 +1,33 @@
|
|||||||
|
// -*- mode: c++ -*-
|
||||||
|
/* Kaleidoscope - Firmware for computer input devices
|
||||||
|
* Copyright (C) 2020 Keyboard.io, Inc.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under
|
||||||
|
* the terms of the GNU General Public License as published by the Free Software
|
||||||
|
* Foundation, version 3.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
|
* details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <kaleidoscope/key_defs.h>
|
||||||
|
#include <kaleidoscope/KeyAddr.h>
|
||||||
|
|
||||||
|
#include "keymap.h"
|
||||||
|
|
||||||
|
namespace kaleidoscope {
|
||||||
|
namespace testing {
|
||||||
|
|
||||||
|
constexpr uint16_t ONESHOT_TIMEOUT = 200;
|
||||||
|
constexpr uint16_t ONESHOT_HOLD_TIMEOUT = 50;
|
||||||
|
|
||||||
|
} // namespace testing
|
||||||
|
} // namespace kaleidoscope
|
@ -0,0 +1,45 @@
|
|||||||
|
// -*- mode: c++ -*-
|
||||||
|
/* Kaleidoscope - Firmware for computer input devices
|
||||||
|
* Copyright (C) 2020 Keyboard.io, Inc.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under
|
||||||
|
* the terms of the GNU General Public License as published by the Free Software
|
||||||
|
* Foundation, version 3.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
|
* details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <kaleidoscope/key_defs.h>
|
||||||
|
#include <kaleidoscope/KeyAddr.h>
|
||||||
|
#include "testing/keymap-defaults.h"
|
||||||
|
|
||||||
|
#include <Kaleidoscope-OneShot.h>
|
||||||
|
|
||||||
|
namespace kaleidoscope {
|
||||||
|
namespace testing {
|
||||||
|
namespace keymap {
|
||||||
|
|
||||||
|
class Keymap : public KeymapDefaults {
|
||||||
|
public:
|
||||||
|
// Layer 0
|
||||||
|
static constexpr Key key_0AA = Key_S;
|
||||||
|
static constexpr Key key_0AB = Key_D;
|
||||||
|
|
||||||
|
static constexpr Key key_0BA = OSM(LeftShift);
|
||||||
|
static constexpr Key key_0BB = OSM(LeftGui);
|
||||||
|
static constexpr Key key_0BC = OSM(LeftControl);
|
||||||
|
|
||||||
|
static constexpr Key key_0CA = OSL(1);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace keymap
|
||||||
|
} // namespace testing
|
||||||
|
} // namespace kaleidoscope
|
@ -0,0 +1,31 @@
|
|||||||
|
// -*- mode: c++ -*-
|
||||||
|
/* Kaleidoscope - Firmware for computer input devices
|
||||||
|
* Copyright (C) 2020 Keyboard.io, Inc.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under
|
||||||
|
* the terms of the GNU General Public License as published by the Free Software
|
||||||
|
* Foundation, version 3.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
|
* details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// Default key values to be used in sketches are defined from the
|
||||||
|
// `keymap-defaults.h` file, provided by Kaleidoscope.
|
||||||
|
#include "testing/keymap-defaults.h"
|
||||||
|
|
||||||
|
// For keys of interest, the values can be overridden by defining them in the
|
||||||
|
// `keymap-overrides.h` file, in this directory.
|
||||||
|
#include "keymap-overrides.h"
|
||||||
|
|
||||||
|
// Finally, we include this file so we can refer to key values in the keymap
|
||||||
|
// more briefly (`key_0AA` vs `Keymap::key_0AA`, both in the
|
||||||
|
// `kaleidoscope::testing::keymap` namespace).
|
||||||
|
#include "testing/keymap-aliases.inc"
|
@ -0,0 +1,39 @@
|
|||||||
|
/* -*- mode: c++ -*-
|
||||||
|
* Copyright (C) 2020 Keyboard.io, Inc.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under
|
||||||
|
* the terms of the GNU General Public License as published by the Free Software
|
||||||
|
* Foundation, version 3.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
|
* details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <Kaleidoscope.h>
|
||||||
|
#include <Kaleidoscope-OneShot.h>
|
||||||
|
|
||||||
|
#include "./common.h"
|
||||||
|
#include "testing/default-layers.h"
|
||||||
|
|
||||||
|
using namespace kaleidoscope::testing::keymap;
|
||||||
|
|
||||||
|
KEYMAPS(LAYER_0, LAYER_1);
|
||||||
|
|
||||||
|
// Use Qukeys
|
||||||
|
KALEIDOSCOPE_INIT_PLUGINS(OneShot);
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Kaleidoscope.setup();
|
||||||
|
|
||||||
|
OneShot.time_out = kaleidoscope::testing::ONESHOT_TIMEOUT;
|
||||||
|
OneShot.hold_time_out = kaleidoscope::testing::ONESHOT_HOLD_TIMEOUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
Kaleidoscope.loop();
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
/* -*- mode: c++ -*-
|
||||||
|
* Copyright (C) 2020 Keyboard.io, Inc.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under
|
||||||
|
* the terms of the GNU General Public License as published by the Free Software
|
||||||
|
* Foundation, version 3.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
|
* details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "testing/setup-googletest.h"
|
||||||
|
|
||||||
|
#include "../common.h"
|
||||||
|
|
||||||
|
SETUP_GOOGLETEST();
|
||||||
|
|
||||||
|
namespace kaleidoscope {
|
||||||
|
namespace testing {
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
using namespace kaleidoscope::testing::keymap;
|
||||||
|
|
||||||
|
constexpr KeyAddr key_addr_OSM_LeftControl = addr_BC;
|
||||||
|
constexpr KeyAddr key_addr_OSM_LeftGui = addr_BB;
|
||||||
|
constexpr KeyAddr key_addr_OSM_LeftShift = addr_BA;
|
||||||
|
constexpr KeyAddr key_addr_OSL_1 = addr_CA;
|
||||||
|
constexpr KeyAddr key_addr_S = addr_AA;
|
||||||
|
constexpr KeyAddr key_addr_D = addr_AB;
|
||||||
|
|
||||||
|
class OneShotBasic : public VirtualDeviceTest {};
|
||||||
|
|
||||||
|
TEST_F(OneShotBasic, OneShotModifier) {
|
||||||
|
|
||||||
|
// Tap `OSM(LeftShift)`
|
||||||
|
PressKey(Millis{10}, key_addr_OSM_LeftShift);
|
||||||
|
ExpectReport(Cycles{1}, AddKeycodes{Key_LeftShift},
|
||||||
|
"Report should contain only `LeftShift`");
|
||||||
|
ReleaseKey(Millis{20}, key_addr_OSM_LeftShift);
|
||||||
|
|
||||||
|
// Tap `Key_S`
|
||||||
|
PressKey(Millis{10}, key_addr_S);
|
||||||
|
ExpectReport(Cycles{1}, AddKeycodes{Key_S},
|
||||||
|
"Report should contain `LeftShift` & `S`");
|
||||||
|
ExpectReport(Cycles{1}, RemoveKeycodes{Key_LeftShift},
|
||||||
|
"Report should be contain only `S`");
|
||||||
|
ReleaseKey(Millis{10}, key_addr_S);
|
||||||
|
ExpectReport(Cycles{1}, RemoveKeycodes{Key_S},
|
||||||
|
"Report should be empty");
|
||||||
|
|
||||||
|
sim_.RunForMillis(10);
|
||||||
|
|
||||||
|
|
||||||
|
CHECK_EXPECTED_REPORTS()
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(OneShotBasic, OsmTimeout) {
|
||||||
|
|
||||||
|
ClearState();
|
||||||
|
|
||||||
|
// Tap `OSM(LeftShift)`
|
||||||
|
PressKey(Millis{10}, key_addr_OSM_LeftShift);
|
||||||
|
ExpectReport(Cycles{1}, AddKeycodes{Key_LeftShift},
|
||||||
|
"Report should contain only `LeftShift`");
|
||||||
|
ReleaseKey(Millis{20}, key_addr_OSM_LeftShift);
|
||||||
|
|
||||||
|
RunFrom(EventTimestamp(0), Millis{ONESHOT_TIMEOUT});
|
||||||
|
ExpectReport(Cycles{3}, RemoveKeycodes{Key_LeftShift},
|
||||||
|
"Report should be empty");
|
||||||
|
|
||||||
|
CHECK_EXPECTED_REPORTS()
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
} // namespace testing
|
||||||
|
} // namespace kaleidoscope
|
Loading…
Reference in new issue