1*61c4878aSAndroid Build Coastguard Worker // Copyright 2020 The Pigweed Authors 2*61c4878aSAndroid Build Coastguard Worker // 3*61c4878aSAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License"); you may not 4*61c4878aSAndroid Build Coastguard Worker // use this file except in compliance with the License. You may obtain a copy of 5*61c4878aSAndroid Build Coastguard Worker // the License at 6*61c4878aSAndroid Build Coastguard Worker // 7*61c4878aSAndroid Build Coastguard Worker // https://www.apache.org/licenses/LICENSE-2.0 8*61c4878aSAndroid Build Coastguard Worker // 9*61c4878aSAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software 10*61c4878aSAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11*61c4878aSAndroid Build Coastguard Worker // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12*61c4878aSAndroid Build Coastguard Worker // License for the specific language governing permissions and limitations under 13*61c4878aSAndroid Build Coastguard Worker // the License. 14*61c4878aSAndroid Build Coastguard Worker 15*61c4878aSAndroid Build Coastguard Worker #include <string.h> 16*61c4878aSAndroid Build Coastguard Worker 17*61c4878aSAndroid Build Coastguard Worker #include "pw_status/status.h" 18*61c4878aSAndroid Build Coastguard Worker PassStatusFromC(pw_Status status)19*61c4878aSAndroid Build Coastguard Workerpw_Status PassStatusFromC(pw_Status status) { return status; } 20*61c4878aSAndroid Build Coastguard Worker 21*61c4878aSAndroid Build Coastguard Worker pw_Status PassStatusFromCpp(pw_Status status); 22*61c4878aSAndroid Build Coastguard Worker 23*61c4878aSAndroid Build Coastguard Worker #define CHECK_STATUS_FROM_CPP(status) \ 24*61c4878aSAndroid Build Coastguard Worker (PW_STATUS_##status != PassStatusFromCpp(PW_STATUS_##status)) 25*61c4878aSAndroid Build Coastguard Worker TestStatusFromC(void)26*61c4878aSAndroid Build Coastguard Workerint TestStatusFromC(void) { 27*61c4878aSAndroid Build Coastguard Worker int errors = 0; 28*61c4878aSAndroid Build Coastguard Worker 29*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(OK); 30*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(CANCELLED); 31*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(UNKNOWN); 32*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(INVALID_ARGUMENT); 33*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(DEADLINE_EXCEEDED); 34*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(NOT_FOUND); 35*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(ALREADY_EXISTS); 36*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(PERMISSION_DENIED); 37*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(UNAUTHENTICATED); 38*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(RESOURCE_EXHAUSTED); 39*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(FAILED_PRECONDITION); 40*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(ABORTED); 41*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(OUT_OF_RANGE); 42*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(UNIMPLEMENTED); 43*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(INTERNAL); 44*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(UNAVAILABLE); 45*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_FROM_CPP(DATA_LOSS); 46*61c4878aSAndroid Build Coastguard Worker 47*61c4878aSAndroid Build Coastguard Worker return errors; 48*61c4878aSAndroid Build Coastguard Worker } 49*61c4878aSAndroid Build Coastguard Worker 50*61c4878aSAndroid Build Coastguard Worker #undef CHECK_STATUS_FROM_CPP 51*61c4878aSAndroid Build Coastguard Worker 52*61c4878aSAndroid Build Coastguard Worker #define CHECK_STATUS_STRING(status) \ 53*61c4878aSAndroid Build Coastguard Worker (strcmp(#status, pw_StatusString(PW_STATUS_##status)) != 0) 54*61c4878aSAndroid Build Coastguard Worker TestStatusStringsFromC(void)55*61c4878aSAndroid Build Coastguard Workerint TestStatusStringsFromC(void) { 56*61c4878aSAndroid Build Coastguard Worker int errors = 0; 57*61c4878aSAndroid Build Coastguard Worker 58*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(OK); 59*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(CANCELLED); 60*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(DEADLINE_EXCEEDED); 61*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(NOT_FOUND); 62*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(ALREADY_EXISTS); 63*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(PERMISSION_DENIED); 64*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(UNAUTHENTICATED); 65*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(RESOURCE_EXHAUSTED); 66*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(FAILED_PRECONDITION); 67*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(ABORTED); 68*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(OUT_OF_RANGE); 69*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(UNIMPLEMENTED); 70*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(INTERNAL); 71*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(UNAVAILABLE); 72*61c4878aSAndroid Build Coastguard Worker errors += CHECK_STATUS_STRING(DATA_LOSS); 73*61c4878aSAndroid Build Coastguard Worker 74*61c4878aSAndroid Build Coastguard Worker return errors; 75*61c4878aSAndroid Build Coastguard Worker } 76*61c4878aSAndroid Build Coastguard Worker 77*61c4878aSAndroid Build Coastguard Worker #undef CHECK_STATUS_STRING 78