読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

【Unity系TDD】TEST_ASSERT_EQUALは便利でもなるだけ使わない。

TEST_ASSERT_EQUALはINT型の計算結果を返します。
公式ドキュメントによればTEST_ASSERT_EQUAL_INTと同じ意味合いらしいです。
……というわけで

#define END_FLAG 0b11111111

int8_t result = END_FLAG;

というコードに対して

TEST_ASSERT_EQUAL(END_FLAG, result)

をかけると

[Test_hoge.c]
  Test: test_hoge
  At line (###): "Expected 255 Was -1"

てな感じで、一応テスト自体は(エラーだけど)できてしまいます。

これだと意図した結果になりません。なので

TEST_ASSERT_EQUAL_INT8(END_FLAG, result); 

のように、明示的に型を指定してやる必要があります。

まとめ

UnityやCeedlingでテスト書く時は、INT型でも横着せずに型指定した方が幸せになれそうです。