blob: 565f07052ab70ced3cc87cfb855101acd0f261a9 [file] [log] [blame]
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef LIB_FIT_PROMISE_TESTS_UNITTEST_UTILS_H_
#define LIB_FIT_PROMISE_TESTS_UNITTEST_UTILS_H_
#include <stdlib.h>
#include <zxtest/zxtest.h>
// Asserts that a condition is true. If false, prints an error then
// aborts the test run.
//
// This is for use when we don't want the test to continue running after a
// failure. zxtest's ASSERT_*() macros do "return;" on failure, which
// doesn't work in functions with non-void return types, and it continues
// running if the calling function doesn't check for failure with something
// like ASSERT_NO_FATAL_FAILURE().
//
// Functions defined using zxtest's TEST() macro should use zxtest's
// ASSERT_*() and EXPECT_*() assertions instead of ASSERT_CRITICAL().
#define ASSERT_CRITICAL(x) \
do { \
if (!(x)) { \
printf("ASSERT_CRITICAL FAILED at (%s:%d): %s\n", __FILE__, __LINE__, #x); \
abort(); \
} \
} while (0)
#endif // LIB_FIT_PROMISE_TESTS_UNITTEST_UTILS_H_