1 // Copyright 2024 The Pigweed Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); you may not 4 // use this file except in compliance with the License. You may obtain a copy of 5 // the License at 6 // 7 // https://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 // License for the specific language governing permissions and limitations under 13 // the License. 14 15 #include "pw_sensor/generated/sensor_constants.h" 16 #include "pw_tokenizer/tokenize.h" 17 #include "pw_unit_test/framework.h" 18 19 namespace pw::sensor { 20 namespace { 21 22 #define TEST_UNIT(_name, _expected_name_str, _expected_unit_str) \ 23 TEST(SensorUnits, _name) { \ 24 constexpr auto kExpected##_name##UnitName = PW_TOKENIZE_STRING_MASK( \ 25 "PW_SENSOR_UNITS_TYPE", 0xFFFF, _expected_name_str); \ 26 constexpr auto kExpected##_name##UnitSymbol = PW_TOKENIZE_STRING_MASK( \ 27 "PW_SENSOR_UNITS_TYPE", 0xFFFF, _expected_unit_str); \ 28 static_assert(units::k##_name::kUnitName == kExpected##_name##UnitName); \ 29 static_assert(units::k##_name::kUnitSymbol == \ 30 kExpected##_name##UnitSymbol); \ 31 static_assert( \ 32 units::k##_name::kUnitType == \ 33 ((kExpected##_name##UnitName << 16) | kExpected##_name##UnitSymbol)); \ 34 } 35 36 TEST_UNIT(Acceleration, "acceleration", "m/s^2") 37 TEST_UNIT(Frequency, "frequency", "Hz") 38 TEST_UNIT(MagneticField, "magnetic field", "Gs") 39 TEST_UNIT(RotationalVelocity, "rotational velocity", "rad/s") 40 TEST_UNIT(Temperature, "temperature", "C") 41 TEST_UNIT(TimeCycles, "time cycles", "cycles") 42 43 } // namespace 44 } // namespace pw::sensor 45