1/* Copyright JS Foundation and other contributors, http://js.foundation 2 * 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 TEST_COMMON_H 17#define TEST_COMMON_H 18 19#include "jerryscript-port.h" 20 21#include <math.h> 22#include <setjmp.h> 23#include <stdio.h> 24#include <stdlib.h> 25#include <stdarg.h> 26#include <string.h> 27 28#define JERRY_UNUSED(x) ((void) (x)) 29 30#define TEST_ASSERT(x) \ 31 do \ 32 { \ 33 if (JERRY_UNLIKELY (!(x))) \ 34 { \ 35 jerry_port_log (JERRY_LOG_LEVEL_ERROR, \ 36 "TEST: Assertion '%s' failed at %s(%s):%lu.\n", \ 37 #x, \ 38 __FILE__, \ 39 __func__, \ 40 (unsigned long) __LINE__); \ 41 jerry_port_fatal (ERR_FAILED_INTERNAL_ASSERTION); \ 42 } \ 43 } while (0) 44 45/** 46 * Test initialization statement that should be included 47 * at the beginning of main function in every unit test. 48 */ 49#define TEST_INIT() \ 50do \ 51{ \ 52 union { double d; unsigned u; } now = { .d = jerry_port_get_current_time () }; \ 53 srand (now.u); \ 54} while (0) 55 56/** 57 * Dummy macro to enable the breaking of long string literals into multiple 58 * substrings on separate lines. (Style checker doesn't allow it without putting 59 * the whole literal into parentheses but the compiler warns about parenthesized 60 * string constants.) 61 */ 62#define TEST_STRING_LITERAL(x) x 63 64#endif /* !TEST_COMMON_H */ 65