/* * SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD * * SPDX-License-Identifier: MIT */ /* UnitTest for M5UnitUnified */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace { #if 0 // Get the equivalent of a unique type name without RTTI template const char* TypeName() { return __PRETTY_FUNCTION__; } #endif std::vector vec; template void each_unit_test() { SCOPED_TRACE(U::name); U* unit = new U(); EXPECT_TRUE((bool)unit); M5_LOGI(">>%02XH %08X [%s]", U::DEFAULT_ADDRESS, U::uid, U::name); // Are the values the same via class and via instance? EXPECT_EQ(+U::DEFAULT_ADDRESS, unit->address()); EXPECT_STREQ(U::name, unit->deviceName()); EXPECT_EQ(U::uid, unit->identifier()); EXPECT_EQ(U::attr, unit->attribute()); // Identical IDs exist? for (auto&& e : vec) { EXPECT_NE(unit->identifier(), e->identifier()) << unit->deviceName() << " / " << e->deviceName(); } // Move { U tmp; // Move constructor U mc(std::move(tmp)); // assign by move U mc2; mc2 = std::move(mc); } vec.push_back(unit); } } // namespace // Check each value and check duplicate uid TEST(UnitUnified, EachUnit) { // ENV each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); // METER each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); // HUB each_unit_test(); // GESTURE each_unit_test(); // HEART each_unit_test(); each_unit_test(); // TOF each_unit_test(); each_unit_test(); // WEIGHT each_unit_test(); each_unit_test(); // ANADIG each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); // COLOR each_unit_test(); // THERMO each_unit_test(); each_unit_test(); each_unit_test(); // DISTANCE each_unit_test(); // EXTIO each_unit_test(); // INFRARED each_unit_test(); // CRYPTO each_unit_test(); each_unit_test(); // RFID each_unit_test(); each_unit_test(); // KEYBOARD each_unit_test(); each_unit_test(); each_unit_test(); each_unit_test(); for (auto&& e : vec) { delete e; } vec.clear(); }