1 /* 2 * Copyright (C) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://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, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef UNITTEST_LOG_H 17 #define UNITTEST_LOG_H 18 19 #include <cinttypes> 20 #include <cstdio> 21 #include "securec.h" 22 23 #ifdef PRINT_HILOG 24 #include "avcodec_log.h" 25 #define UNITTEST_HILOG(fmt, ...) AVCODEC_LOGI(fmt, ##__VA_ARGS__) 26 #else 27 #define UNITTEST_HILOG(fmt, ...) 28 #endif 29 30 namespace OHOS { 31 #define LOG_MAX_SIZE 400 32 33 #ifdef TEST_ID 34 #define PRINT_TEST_LOG(ch) \ 35 do { \ 36 UNITTEST_HILOG("[%{public}d] %{public}s", TEST_ID, ch); \ 37 (void)printf("[%s:%d][%d] %s", __func__, __LINE__, TEST_ID, ch); \ 38 } while (0) 39 #else 40 #define PRINT_TEST_LOG(ch) \ 41 do { \ 42 UNITTEST_HILOG("%{public}s", ch); \ 43 (void)printf("[%s:%d] %s", __func__, __LINE__, ch); \ 44 } while (0) 45 #endif 46 47 #define UNITTEST_CHECK_AND_RETURN_RET_LOG(cond, ret, fmt, ...) \ 48 do { \ 49 if (!(cond)) { \ 50 char ch[LOG_MAX_SIZE]; \ 51 (void)sprintf_s(ch, LOG_MAX_SIZE, fmt, ##__VA_ARGS__); \ 52 PRINT_TEST_LOG(ch); \ 53 (void)printf("\n"); \ 54 return ret; \ 55 } \ 56 } while (0) 57 58 #define UNITTEST_CHECK_AND_RETURN_LOG(cond, fmt, ...) \ 59 do { \ 60 if (!(cond)) { \ 61 char ch[LOG_MAX_SIZE]; \ 62 (void)sprintf_s(ch, LOG_MAX_SIZE, fmt, ##__VA_ARGS__); \ 63 PRINT_TEST_LOG(ch); \ 64 (void)printf("\n"); \ 65 return; \ 66 } \ 67 } while (0) 68 69 #define UNITTEST_CHECK_AND_INFO_LOG(cond, fmt, ...) \ 70 do { \ 71 if (!(cond)) { \ 72 char ch[LOG_MAX_SIZE]; \ 73 (void)sprintf_s(ch, LOG_MAX_SIZE, fmt, ##__VA_ARGS__); \ 74 PRINT_TEST_LOG(ch); \ 75 (void)printf("\n"); \ 76 } \ 77 } while (0) 78 79 #define UNITTEST_CHECK_AND_BREAK_LOG(cond, fmt, ...) \ 80 if (!(cond)) { \ 81 char ch[LOG_MAX_SIZE]; \ 82 (void)sprintf_s(ch, LOG_MAX_SIZE, fmt, ##__VA_ARGS__); \ 83 PRINT_TEST_LOG(ch); \ 84 (void)printf("\n"); \ 85 break; \ 86 } 87 88 #define UNITTEST_CHECK_AND_CONTINUE_LOG(cond, fmt, ...) \ 89 if (!(cond)) { \ 90 char ch[LOG_MAX_SIZE]; \ 91 (void)sprintf_s(ch, LOG_MAX_SIZE, fmt, ##__VA_ARGS__); \ 92 PRINT_TEST_LOG(ch); \ 93 (void)printf("\n"); \ 94 continue; \ 95 } 96 97 #define UNITTEST_INFO_LOG(fmt, ...) \ 98 do { \ 99 char ch[LOG_MAX_SIZE]; \ 100 (void)sprintf_s(ch, LOG_MAX_SIZE, fmt, ##__VA_ARGS__); \ 101 PRINT_TEST_LOG(ch); \ 102 (void)printf("\n"); \ 103 } while (0) 104 } // namespace OHOS 105 106 #endif // UNITTEST_LOG_H