Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

【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型でも横着せずに型指定した方が幸せになれそうです。