7 #include "gmock/gmock.h"
8 #include "gtest/gtest.h"
9 #include "sw/device/lib/crypto/impl/status.h"
14 namespace status_unittest {
17 TEST(Status, OkIsNonHardenedOk) { EXPECT_EQ(status_ok(OTCRYPTO_OK),
true); }
19 TEST(Status, ErrorMacrosNotOk) {
21 EXPECT_EQ(status_ok(OTCRYPTO_BAD_ARGS),
false);
22 EXPECT_EQ(status_ok(OTCRYPTO_RECOV_ERR),
false);
23 EXPECT_EQ(status_ok(OTCRYPTO_FATAL_ERR),
false);
24 EXPECT_EQ(status_ok(OTCRYPTO_ASYNC_INCOMPLETE),
false);
27 TEST(Status, ErrorMacrosNotHardenedOk) {
29 EXPECT_EQ(status_ok(OTCRYPTO_BAD_ARGS),
false);
30 EXPECT_EQ(status_ok(OTCRYPTO_RECOV_ERR),
false);
31 EXPECT_EQ(status_ok(OTCRYPTO_FATAL_ERR),
false);
32 EXPECT_EQ(status_ok(OTCRYPTO_ASYNC_INCOMPLETE),
false);
35 TEST(Status, ErrorMacrosHaveExpectedValues) {
37 EXPECT_EQ(status_err(OTCRYPTO_BAD_ARGS), kInvalidArgument);
38 EXPECT_EQ(status_err(OTCRYPTO_RECOV_ERR), kAborted);
39 EXPECT_EQ(status_err(OTCRYPTO_FATAL_ERR), kFailedPrecondition);
40 EXPECT_EQ(status_err(OTCRYPTO_ASYNC_INCOMPLETE), kUnavailable);
41 EXPECT_EQ(status_err(OTCRYPTO_NOT_IMPLEMENTED), kUnimplemented);
49 TEST(Status, TryInterpretOk) {
51 EXPECT_EQ(status_ok(try_interpret(OTCRYPTO_OK)),
true);
54 TEST(Status, TryInterpretNonHardenedOk) {
56 EXPECT_EQ(status_ok(try_interpret(OK_STATUS())),
false);
59 constexpr
char kTestModId[3] = {
'X',
'Y',
'Z'};
60 #define MODULE_ID MAKE_MODULE_ID(kTestModId[0], kTestModId[1], kTestModId[2])
62 TEST(Status, ExtractStatusFieldsBadArgs) {
63 const char *code = NULL;
66 const char expected_code[] =
"InvalidArgument";
67 int32_t expected_line = __LINE__ + 1;
68 EXPECT_EQ(status_extract(OTCRYPTO_BAD_ARGS, &code, &line, mod_id),
true);
73 EXPECT_THAT(mod_id, testing::ElementsAreArray(kTestModId));
74 EXPECT_EQ(line, expected_line);
77 TEST(Status, ExtractStatusFieldsRecovErr) {
78 const char *code = NULL;
81 const char expected_code[] =
"Aborted";
82 int32_t expected_line = __LINE__ + 1;
83 EXPECT_EQ(status_extract(OTCRYPTO_RECOV_ERR, &code, &line, mod_id),
true);
88 EXPECT_THAT(mod_id, testing::ElementsAreArray(kTestModId));
89 EXPECT_EQ(line, expected_line);
92 TEST(Status, ExtractStatusFieldsFatalErr) {
93 const char *code = NULL;
96 const char expected_code[] =
"FailedPrecondition";
97 int32_t expected_line = __LINE__ + 1;
98 EXPECT_EQ(status_extract(OTCRYPTO_FATAL_ERR, &code, &line, mod_id),
true);
103 EXPECT_THAT(mod_id, testing::ElementsAreArray(kTestModId));
104 EXPECT_EQ(line, expected_line);
107 TEST(Status, ExtractStatusFieldsAsyncIncomplete) {
108 const char *code = NULL;
109 char mod_id[3] = {0};
111 const char expected_code[] =
"Unavailable";
112 int32_t expected_line = __LINE__ + 1;
113 EXPECT_EQ(status_extract(OTCRYPTO_ASYNC_INCOMPLETE, &code, &line, mod_id),
119 EXPECT_THAT(mod_id, testing::ElementsAreArray(kTestModId));
120 EXPECT_EQ(line, expected_line);