]> git.donarmstrong.com Git - qmk_firmware.git/blob - tests/test_common/keyboard_report_util.hpp
fix the clueboard layout json
[qmk_firmware.git] / tests / test_common / keyboard_report_util.hpp
1 /* Copyright 2017 Fred Sundvik
2  *
3  * This program is free software: you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License as published by
5  * the Free Software Foundation, either version 2 of the License, or
6  * (at your option) any later version.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  */
16
17 #pragma once
18 #include "report.h"
19 #include <ostream>
20 #include "gmock/gmock.h"
21
22 bool operator==(const report_keyboard_t& lhs, const report_keyboard_t& rhs);
23 std::ostream& operator<<(std::ostream& stream, const report_keyboard_t& value);
24
25 class KeyboardReportMatcher : public testing::MatcherInterface<report_keyboard_t&> {
26  public:
27     KeyboardReportMatcher(const std::vector<uint8_t>& keys);
28     virtual bool MatchAndExplain(report_keyboard_t& report, testing::MatchResultListener* listener) const override;
29     virtual void DescribeTo(::std::ostream* os) const override;
30     virtual void DescribeNegationTo(::std::ostream* os) const override;
31 private:
32     report_keyboard_t m_report;
33 };
34
35
36 template<typename... Ts>
37 inline testing::Matcher<report_keyboard_t&> KeyboardReport(Ts... keys) {
38     return testing::MakeMatcher(new KeyboardReportMatcher(std::vector<uint8_t>({keys...})));
39 }