mirror of
https://github.com/darlinghq/darling-xnu.git
synced 2024-11-26 22:10:24 +00:00
152 lines
3.8 KiB
C
152 lines
3.8 KiB
C
/*
|
|
* Copyright (c) 2015 Apple Inc. All rights reserved.
|
|
*
|
|
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
|
|
*
|
|
* This file contains Original Code and/or Modifications of Original Code
|
|
* as defined in and that are subject to the Apple Public Source License
|
|
* Version 2.0 (the 'License'). You may not use this file except in
|
|
* compliance with the License. The rights granted to you under the License
|
|
* may not be used to create, or enable the creation or redistribution of,
|
|
* unlawful or unlicensed copies of an Apple operating system, or to
|
|
* circumvent, violate, or enable the circumvention or violation of, any
|
|
* terms of an Apple operating system software license agreement.
|
|
*
|
|
* Please obtain a copy of the License at
|
|
* http://www.opensource.apple.com/apsl/ and read it before using this file.
|
|
*
|
|
* The Original Code and all software distributed under the License are
|
|
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
|
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
|
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
|
* Please see the License for the specific language governing rights and
|
|
* limitations under the License.
|
|
*
|
|
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
|
*/
|
|
|
|
#include <tests/ktest.h>
|
|
#include <tests/ktest_internal.h>
|
|
#include <mach/mach_time.h>
|
|
#include <kern/misc_protos.h>
|
|
|
|
void
|
|
ktest_start(void)
|
|
{
|
|
ktest_emit_start();
|
|
}
|
|
|
|
void
|
|
ktest_finish(void)
|
|
{
|
|
ktest_emit_finish();
|
|
}
|
|
|
|
void
|
|
ktest_testbegin(const char * test_name)
|
|
{
|
|
ktest_current_time = mach_absolute_time();
|
|
ktest_test_name = test_name;
|
|
ktest_emit_testbegin(test_name);
|
|
}
|
|
|
|
void
|
|
ktest_testend()
|
|
{
|
|
ktest_current_time = mach_absolute_time();
|
|
ktest_emit_testend();
|
|
ktest_test_index++;
|
|
}
|
|
|
|
void
|
|
ktest_testskip(const char * msg, ...)
|
|
{
|
|
va_list args;
|
|
|
|
ktest_current_time = mach_absolute_time();
|
|
|
|
va_start(args, msg);
|
|
ktest_emit_testskip(msg, args);
|
|
va_end(args);
|
|
}
|
|
|
|
void
|
|
ktest_log(const char * msg, ...)
|
|
{
|
|
va_list args;
|
|
|
|
ktest_current_time = mach_absolute_time();
|
|
|
|
va_start(args, msg);
|
|
ktest_emit_log(msg, args);
|
|
va_end(args);
|
|
}
|
|
|
|
void
|
|
ktest_perf(const char * metric, const char * unit, double value, const char * desc)
|
|
{
|
|
ktest_current_time = mach_absolute_time();
|
|
ktest_emit_perfdata(metric, unit, value, desc);
|
|
}
|
|
|
|
void
|
|
ktest_testcase(int success)
|
|
{
|
|
ktest_current_time = mach_absolute_time();
|
|
|
|
if (success && !ktest_expectfail) {
|
|
/* PASS */
|
|
ktest_passcount++;
|
|
ktest_testcase_result = T_RESULT_PASS;
|
|
} else if (!success && !ktest_expectfail) {
|
|
/* FAIL */
|
|
ktest_failcount++;
|
|
ktest_testcase_result = T_RESULT_FAIL;
|
|
} else if (success && ktest_expectfail) {
|
|
/* UXPASS */
|
|
ktest_xpasscount++;
|
|
ktest_testcase_result = T_RESULT_UXPASS;
|
|
} else if (!success && ktest_expectfail) {
|
|
/* XFAIL */
|
|
ktest_xfailcount++;
|
|
ktest_testcase_result = T_RESULT_XFAIL;
|
|
}
|
|
|
|
ktest_update_test_result_state();
|
|
if (ktest_quiet == 0 ||
|
|
ktest_testcase_result == T_RESULT_FAIL ||
|
|
ktest_testcase_result == T_RESULT_UXPASS) {
|
|
ktest_emit_testcase();
|
|
}
|
|
ktest_expression_index++;
|
|
|
|
ktest_quiet = 0;
|
|
ktest_expectfail = 0;
|
|
ktest_output_buf[0] = '\0';
|
|
ktest_current_msg[0] = '\0';
|
|
ktest_current_expr[0] = '\0';
|
|
for (int i = 0; i < KTEST_MAXVARS; i++) {
|
|
ktest_current_var_names[i][0] = '\0';
|
|
ktest_current_var_values[i][0] = '\0';
|
|
}
|
|
ktest_current_var_index = 0;
|
|
}
|
|
|
|
void
|
|
ktest_update_test_result_state(void)
|
|
{
|
|
ktest_test_result = ktest_test_result_statetab[ktest_test_result]
|
|
[ktest_testcase_result]
|
|
[ktest_testcase_mode];
|
|
}
|
|
|
|
void
|
|
ktest_assertion_check(void)
|
|
{
|
|
if (ktest_testcase_result == T_RESULT_FAIL || ktest_testcase_result == T_RESULT_UXPASS) {
|
|
ktest_testend();
|
|
panic("XNUPOST: Assertion failed : %s : at %s:%d", ktest_test_name, ktest_current_file, ktest_current_line);
|
|
}
|
|
}
|