| /* Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /* Charmonizer/Test.h - test Charmonizer's output. |
| */ |
| |
| #ifndef H_CHAZ_TEST |
| #define H_CHAZ_TEST |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include "Charmonizer/Core/Defines.h" |
| |
| typedef struct chaz_TestBatch chaz_TestBatch; |
| |
| /* Begin a test run. |
| */ |
| chaz_TestBatch* |
| chaz_Test_start(unsigned num_tests); |
| |
| /* End a test run. Returns true if all tests were run and there were no |
| * failures, false otherwise. |
| */ |
| int |
| chaz_Test_finish(void); |
| |
| /* Unbuffer stdout. Perform any other setup needed. |
| */ |
| void |
| chaz_Test_init(void); |
| |
| /* Constructor for TestBatch. |
| */ |
| chaz_TestBatch* |
| chaz_Test_new_batch(unsigned num_tests); |
| |
| #define CHAZ_TEST_PLAN chaz_Test_plan |
| void |
| chaz_Test_plan(chaz_TestBatch *batch); |
| |
| #define CHAZ_TEST_OK(_expression, _message) \ |
| chaz_Test_ok(chaz_Test_current, (_expression), (_message)) |
| void |
| chaz_Test_ok(chaz_TestBatch *batch, int expression, const char *message); |
| |
| #define CHAZ_TEST_STR_EQ(_got, _expected, _message) \ |
| chaz_Test_str_eq(chaz_Test_current, (_got), (_expected), (_message)) |
| void |
| chaz_Test_str_eq(chaz_TestBatch *batch, const char *got, |
| const char *expected, const char *message); |
| |
| #define CHAZ_TEST_PASS(_message) \ |
| chaz_Test_pass(chaz_Test_current, (_message)) |
| void |
| chaz_Test_pass(chaz_TestBatch *batch, const char *message); |
| |
| #define CHAZ_TEST_FAIL(_message) \ |
| chaz_Test_fail(chaz_Test_current, (_message)) |
| void |
| chaz_Test_fail(chaz_TestBatch *batch, const char *message); |
| |
| #define CHAZ_TEST_LONG_EQ(_got, _expected, _message) \ |
| chaz_Test_long_eq(chaz_Test_current, (_got), (_expected), (_message)) |
| void |
| chaz_Test_long_eq(chaz_TestBatch *batch, long got, long expected, |
| const char *message); |
| |
| #define CHAZ_TEST_DOUBLE_EQ(_got, _expected, _slop, _message) \ |
| chaz_Test_double_eq(chaz_Test_current, (_got), (_expected), (_slop), \ |
| (_message)) |
| void |
| chaz_Test_double_eq(chaz_TestBatch *batch, double got, double expected, |
| double slop, const char *message); |
| |
| /* Print a message indicating that a test was skipped and update batch. |
| */ |
| #define CHAZ_TEST_SKIP(_message) \ |
| chaz_Test_skip(chaz_Test_current, (_message)) |
| void |
| chaz_Test_skip(chaz_TestBatch *batch, const char *message); |
| |
| /* Print a message indicating that all remaining tests will be skipped and |
| * then call SKIP once for each. |
| */ |
| #define CHAZ_TEST_SKIP_REMAINING(_message) \ |
| chaz_Test_skip_remaining(chaz_Test_current, (_message)) |
| void |
| chaz_Test_skip_remaining(chaz_TestBatch* batch, const char *message); |
| |
| /* Global TestBatch implicitly accessed by testing macros. */ |
| extern chaz_TestBatch *chaz_Test_current; |
| |
| #ifdef CHAZ_USE_SHORT_NAMES |
| #define Test_start chaz_Test_start |
| #define Test_finish chaz_Test_finish |
| #define OK CHAZ_TEST_OK |
| #define STR_EQ CHAZ_TEST_STR_EQ |
| #define LONG_EQ CHAZ_TEST_LONG_EQ |
| #define DOUBLE_EQ CHAZ_TEST_DOUBLE_EQ |
| #define PASS CHAZ_TEST_PASS |
| #define FAIL CHAZ_TEST_FAIL |
| #define SKIP CHAZ_TEST_SKIP |
| #define SKIP_REMAINING CHAZ_TEST_SKIP_REMAINING |
| #define TestBatch chaz_TestBatch |
| #define Test_init chaz_Test_init |
| #define Test_new_batch chaz_Test_new_batch |
| #define Test_plan chaz_Test_plan |
| #define PLAN CHAZ_TEST_PLAN |
| #define Test_str_eq chaz_Test_str_eq |
| #define Test_long_eq chaz_Test_long_eq |
| #define Test_double_eq chaz_Test_double_eq |
| #define Test_pass chaz_Test_pass |
| #define Test_fail chaz_Test_fail |
| #define Test_skip chaz_Test_skip |
| #define Test_skip_remaining chaz_Test_skip_remaining |
| #endif |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* H_CHAZ_TEST */ |
| |
| |
| |