parent
5356514a22
commit
5c8a438cc6
@ -1,2 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
// Fake file to trick arduino-builder into working.
|
|
@ -0,0 +1,33 @@
|
|||||||
|
/* -*- mode: c++ -*-
|
||||||
|
* Copyright (C) 2020 Eric Paniagua (epaniagua@google.com)
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Fake file to trick arduino-builder into working.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#undef min
|
||||||
|
#undef max
|
||||||
|
#undef T
|
||||||
|
#undef U
|
||||||
|
|
||||||
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
|
#define SETUP_GOOGLETEST() \
|
||||||
|
void executeTestFunction() { \
|
||||||
|
setup(); /* setup Kaleidoscope */ \
|
||||||
|
testing::InitGoogleTest(); \
|
||||||
|
RUN_ALL_TESTS(); \
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
/* kailedoscope::sim - Simulator for Unit Testing Kaleidoscope
|
||||||
|
* Copyright (C) 2020 epan <epaniagua@google.com>
|
||||||
|
*
|
||||||
|
* 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/sim/Sim.h"
|
||||||
|
|
||||||
|
namespace kaleidoscope {
|
||||||
|
namespace sim {
|
||||||
|
|
||||||
|
} // namespace sim
|
||||||
|
} // namespace kaleidoscope
|
@ -0,0 +1,32 @@
|
|||||||
|
/* kailedoscope::sim - Simulator for Unit Testing Kaleidoscope
|
||||||
|
* Copyright (C) 2020 epan <epaniagua@google.com>
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef KALEIDOSCOPE_VIRTUAL_BUILD
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace kaleidoscope {
|
||||||
|
namespace sim {
|
||||||
|
|
||||||
|
class Sim {
|
||||||
|
public:
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace sim
|
||||||
|
} // namespace kaleidoscope
|
||||||
|
|
||||||
|
#endif // KALEIDOSCOPE_VIRTUAL_BUILD
|
@ -0,0 +1,78 @@
|
|||||||
|
/* -*- mode: c++ -*-
|
||||||
|
* Copyright (C) 2020 Eric Paniagua (epaniagua@google.com)
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef KALEIDOSCOPE_VIRTUAL_BUILD
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "./Logging.h"
|
||||||
|
|
||||||
|
#include "HID-Settings.h"
|
||||||
|
|
||||||
|
namespace kaleidoscope {
|
||||||
|
namespace testing {
|
||||||
|
|
||||||
|
class VirtualDeviceTest : public ::testing::Test {
|
||||||
|
protected:
|
||||||
|
void SetUp() {
|
||||||
|
HIDReportObserver
|
||||||
|
}
|
||||||
|
|
||||||
|
void Press(uint8_t row, uint8_t, col) {
|
||||||
|
Kaleidoscope.device().keyScanner().setKeystate(
|
||||||
|
KeyAddr{row, col},
|
||||||
|
Kaleidoscope::Device::Props::keyScanner::KeyState::Pressed);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
template <class R>
|
||||||
|
void ProcessReport(const R& report) {
|
||||||
|
observer_RecordReport(report);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class R>
|
||||||
|
void RecordReport(const R& report);
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void RecordReport<MouseReport>(const MouseReport& report) {
|
||||||
|
mouse_reports_.push_back(report);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void RecordReport<BootKeyboardReport>(const BootKeyboardReport& report) {
|
||||||
|
boot_keyboard_reports_.push_back(report);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void RecordReport<AbsoluteMouseReport>(const AbsoluteMouseReport& report) {
|
||||||
|
absolute_mouse_reports_.push_back(report);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void RecordReport<KeyboardReport>(const KeyboardReport& report) {
|
||||||
|
keyboard_reports_.push_back(report);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<MouseReport> mouse_reports_;
|
||||||
|
std::vector<BootKeyboardReport> boot_keyboard_reports_;
|
||||||
|
std::vector<AbsoluteMouseReport> absolute_mouse_reports_;
|
||||||
|
std::vector<KeyboardReport> keyboard_reports_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace testing
|
||||||
|
} // namespace kaleidoscope
|
||||||
|
|
||||||
|
#endif // KALEIDOSCOPE_VIRTUAL_BUILD
|
@ -0,0 +1,90 @@
|
|||||||
|
/* -*- mode: c++ -*-
|
||||||
|
* Copyright (C) 2020 Eric Paniagua (epaniagua@google.com)
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef KALEIDOSCOPE_VIRTUAL_BUILD
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "./Logging.h"
|
||||||
|
|
||||||
|
#include "HID-Settings.h"
|
||||||
|
|
||||||
|
namespace kaleidoscope {
|
||||||
|
namespace testing {
|
||||||
|
|
||||||
|
class Observer {
|
||||||
|
public:
|
||||||
|
void ProcessHidReport(uint8_t id, const void* data, int len, int result) {
|
||||||
|
switch (id) {
|
||||||
|
case HID_REPORTID_MOUSE: {
|
||||||
|
ProcessReport(MouseReport{data});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case HID_REPORTID_KEYBOARD: {
|
||||||
|
ProcessReport(BootKeyboardReport{data});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case HID_REPORTID_GAMEPAD:
|
||||||
|
case HID_REPORTID_CONSUMERCONTROL:
|
||||||
|
case HID_REPORTID_SYSTEMCONTROL: {
|
||||||
|
// TODO: React appropriately to these.
|
||||||
|
LOG(INFO) << "Ignoring HID report with id = " << id;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case HID_REPORTID_MOUSE_ABSOLUTE: {
|
||||||
|
ProcessReport(AbsoluteMouseReport{data});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case HID_REPORTID_NKRO_KEYBOARD: {
|
||||||
|
ProcessReport(KeyboardReport{data});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
LOG(ERROR) << "Encountered unknown HID report with id = " << id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class R>
|
||||||
|
void RecordReport(const R& report);
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void RecordReport<MouseReport>(const MouseReport& report) {
|
||||||
|
mouse_reports_.push_back(report);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void RecordReport<BootKeyboardReport>(const BootKeyboardReport& report) {
|
||||||
|
boot_keyboard_reports_.push_back(report);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void RecordReport<AbsoluteMouseReport>(const AbsoluteMouseReport& report) {
|
||||||
|
absolute_mouse_reports_.push_back(report);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void RecordReport<KeyboardReport>(const KeyboardReport& report) {
|
||||||
|
keyboard_reports_.push_back(report);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<MouseReport> mouse_reports_;
|
||||||
|
std::vector<BootKeyboardReport> boot_keyboard_reports_;
|
||||||
|
std::vector<AbsoluteMouseReport> absolute_mouse_reports_;
|
||||||
|
std::vector<KeyboardReport> keyboard_reports_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace testing
|
||||||
|
} // namespace kaleidoscope
|
@ -0,0 +1,21 @@
|
|||||||
|
/* -*- mode: c++ -*-
|
||||||
|
* Copyright (C) 2020 Eric Paniagua (epaniagua@google.com)
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef KALEIDOSCOPE_VIRTUAL_BUILD
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#endif // KALEIDOSCOPE_VIRTUAL_BUILD
|
@ -0,0 +1,39 @@
|
|||||||
|
/* -*- mode: c++ -*-
|
||||||
|
* Copyright (C) 2020 Eric Paniagua (epaniagua@google.com)
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef KALEIDOSCOPE_VIRTUAL_BUILD
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "setup-googletest.h"
|
||||||
|
|
||||||
|
SETUP_GOOGLETEST();
|
||||||
|
|
||||||
|
namespace kaleidoscope {
|
||||||
|
namespace testing {
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
class KeyboardReports : public VirtualDeviceTest {};
|
||||||
|
|
||||||
|
TEST_F(KeyboardReports, KeysActiveWhenPressed) {
|
||||||
|
Press(2, 1); // A
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
} // namespace testing
|
||||||
|
} // namespace kaleidoscope
|
||||||
|
|
||||||
|
#endif // KALEIDOSCOPE_VIRTUAL_BUILD
|
@ -0,0 +1 @@
|
|||||||
|
#include "./kaleidoscope_test.h"
|
Loading…
Reference in new issue