| /* |
| * |
| * Copyright (c) 2015-2017 Nest Labs, Inc. |
| * All rights reserved. |
| * |
| * Licensed 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. |
| */ |
| |
| /** |
| * @file |
| * This file implements a unit test suite for the Weave |
| * code utilities templates and macros. |
| * |
| */ |
| |
| #ifndef __STDC_LIMIT_MACROS |
| #define __STDC_LIMIT_MACROS |
| #endif |
| |
| #include <stdint.h> |
| |
| #include <nlunit-test.h> |
| |
| static void TestWeaveDie(void); |
| |
| #define WeaveDie() TestWeaveDie() |
| |
| #include <Weave/Support/CodeUtils.h> |
| |
| struct TestVerifyOrDieContext |
| { |
| bool mShouldDie; |
| bool mDidDie; |
| }; |
| |
| static struct TestVerifyOrDieContext sContext; |
| |
| static void CheckMin(nlTestSuite *inSuite, void *inContext) |
| { |
| int8_t s8result; |
| int16_t s16result; |
| int32_t s32result; |
| int64_t s64result; |
| uint8_t u8result; |
| uint16_t u16result; |
| uint32_t u32result; |
| uint64_t u64result; |
| |
| // Test 8-bit signed integers |
| |
| s8result = nl::Weave::min(INT8_MIN, INT8_MAX); |
| NL_TEST_ASSERT(inSuite, s8result == INT8_MIN); |
| |
| s8result = nl::Weave::min(INT8_MAX, INT8_MIN); |
| NL_TEST_ASSERT(inSuite, s8result == INT8_MIN); |
| |
| s8result = nl::Weave::min(INT8_MIN, 0); |
| NL_TEST_ASSERT(inSuite, s8result == INT8_MIN); |
| |
| s8result = nl::Weave::min(0, INT8_MIN); |
| NL_TEST_ASSERT(inSuite, s8result == INT8_MIN); |
| |
| s8result = nl::Weave::min(0, INT8_MAX); |
| NL_TEST_ASSERT(inSuite, s8result == 0); |
| |
| s8result = nl::Weave::min(INT8_MAX, 0); |
| NL_TEST_ASSERT(inSuite, s8result == 0); |
| |
| s8result = nl::Weave::min(0, 0); |
| NL_TEST_ASSERT(inSuite, s8result == 0); |
| |
| s8result = nl::Weave::min(INT8_MIN, INT8_MIN); |
| NL_TEST_ASSERT(inSuite, s8result == INT8_MIN); |
| |
| s8result = nl::Weave::min(INT8_MAX, INT8_MAX); |
| NL_TEST_ASSERT(inSuite, s8result == INT8_MAX); |
| |
| // Test 16-bit signed integers |
| |
| s16result = nl::Weave::min(INT16_MIN, INT16_MAX); |
| NL_TEST_ASSERT(inSuite, s16result == INT16_MIN); |
| |
| s16result = nl::Weave::min(INT16_MAX, INT16_MIN); |
| NL_TEST_ASSERT(inSuite, s16result == INT16_MIN); |
| |
| s16result = nl::Weave::min(INT16_MIN, 0); |
| NL_TEST_ASSERT(inSuite, s16result == INT16_MIN); |
| |
| s16result = nl::Weave::min(0, INT16_MIN); |
| NL_TEST_ASSERT(inSuite, s16result == INT16_MIN); |
| |
| s16result = nl::Weave::min(0, INT16_MAX); |
| NL_TEST_ASSERT(inSuite, s16result == 0); |
| |
| s16result = nl::Weave::min(INT16_MAX, 0); |
| NL_TEST_ASSERT(inSuite, s16result == 0); |
| |
| s16result = nl::Weave::min(0, 0); |
| NL_TEST_ASSERT(inSuite, s16result == 0); |
| |
| s16result = nl::Weave::min(INT16_MIN, INT16_MIN); |
| NL_TEST_ASSERT(inSuite, s16result == INT16_MIN); |
| |
| s16result = nl::Weave::min(INT16_MAX, INT16_MAX); |
| NL_TEST_ASSERT(inSuite, s16result == INT16_MAX); |
| |
| // Test 32-bit signed integers |
| |
| s32result = nl::Weave::min(INT32_MIN, INT32_MAX); |
| NL_TEST_ASSERT(inSuite, s32result == INT32_MIN); |
| |
| s32result = nl::Weave::min(INT32_MAX, INT32_MIN); |
| NL_TEST_ASSERT(inSuite, s32result == INT32_MIN); |
| |
| s32result = nl::Weave::min(INT32_MIN, 0); |
| NL_TEST_ASSERT(inSuite, s32result == INT32_MIN); |
| |
| s32result = nl::Weave::min(0, INT32_MIN); |
| NL_TEST_ASSERT(inSuite, s32result == INT32_MIN); |
| |
| s32result = nl::Weave::min(0, INT32_MAX); |
| NL_TEST_ASSERT(inSuite, s32result == 0); |
| |
| s32result = nl::Weave::min(INT32_MAX, 0); |
| NL_TEST_ASSERT(inSuite, s32result == 0); |
| |
| s32result = nl::Weave::min(0, 0); |
| NL_TEST_ASSERT(inSuite, s32result == 0); |
| |
| s32result = nl::Weave::min(INT32_MIN, INT32_MIN); |
| NL_TEST_ASSERT(inSuite, s32result == INT32_MIN); |
| |
| s32result = nl::Weave::min(INT32_MAX, INT32_MAX); |
| NL_TEST_ASSERT(inSuite, s32result == INT32_MAX); |
| |
| // Test 64-bit signed integers |
| |
| s64result = nl::Weave::min(INT64_MIN, INT64_MAX); |
| NL_TEST_ASSERT(inSuite, s64result == INT64_MIN); |
| |
| s64result = nl::Weave::min(INT64_MAX, INT64_MIN); |
| NL_TEST_ASSERT(inSuite, s64result == INT64_MIN); |
| |
| s64result = nl::Weave::min(INT64_MIN, static_cast<int64_t>(0)); |
| NL_TEST_ASSERT(inSuite, s64result == INT64_MIN); |
| |
| s64result = nl::Weave::min(static_cast<int64_t>(0), INT64_MIN); |
| NL_TEST_ASSERT(inSuite, s64result == INT64_MIN); |
| |
| s64result = nl::Weave::min(static_cast<int64_t>(0), INT64_MAX); |
| NL_TEST_ASSERT(inSuite, s64result == static_cast<int64_t>(0)); |
| |
| s64result = nl::Weave::min(INT64_MAX, static_cast<int64_t>(0)); |
| NL_TEST_ASSERT(inSuite, s64result == static_cast<int64_t>(0)); |
| |
| s64result = nl::Weave::min(static_cast<int64_t>(0), static_cast<int64_t>(0)); |
| NL_TEST_ASSERT(inSuite, s64result == static_cast<int64_t>(0)); |
| |
| s64result = nl::Weave::min(INT64_MIN, INT64_MIN); |
| NL_TEST_ASSERT(inSuite, s64result == INT64_MIN); |
| |
| s64result = nl::Weave::min(INT64_MAX, INT64_MAX); |
| NL_TEST_ASSERT(inSuite, s64result == INT64_MAX); |
| |
| // Test 8-bit unsigned integers |
| |
| u8result = nl::Weave::min(UINT8_MAX, UINT8_MAX); |
| NL_TEST_ASSERT(inSuite, u8result == UINT8_MAX); |
| |
| u8result = nl::Weave::min(0, UINT8_MAX); |
| NL_TEST_ASSERT(inSuite, u8result == 0); |
| |
| u8result = nl::Weave::min(UINT8_MAX, 0); |
| NL_TEST_ASSERT(inSuite, u8result == 0); |
| |
| u8result = nl::Weave::min(0, 0); |
| NL_TEST_ASSERT(inSuite, u8result == 0); |
| |
| // Test 16-bit unsigned integers |
| |
| u16result = nl::Weave::min(UINT16_MAX, UINT16_MAX); |
| NL_TEST_ASSERT(inSuite, u16result == UINT16_MAX); |
| |
| u16result = nl::Weave::min(0, UINT16_MAX); |
| NL_TEST_ASSERT(inSuite, u16result == 0); |
| |
| u16result = nl::Weave::min(UINT16_MAX, 0); |
| NL_TEST_ASSERT(inSuite, u16result == 0); |
| |
| u16result = nl::Weave::min(0, 0); |
| NL_TEST_ASSERT(inSuite, u16result == 0); |
| |
| // Test 32-bit unsigned integers |
| |
| u32result = nl::Weave::min(UINT32_MAX, UINT32_MAX); |
| NL_TEST_ASSERT(inSuite, u32result == UINT32_MAX); |
| |
| u32result = nl::Weave::min(static_cast<uint32_t>(0), UINT32_MAX); |
| NL_TEST_ASSERT(inSuite, u32result == static_cast<uint32_t>(0)); |
| |
| u32result = nl::Weave::min(UINT32_MAX, static_cast<uint32_t>(0)); |
| NL_TEST_ASSERT(inSuite, u32result == static_cast<uint32_t>(0)); |
| |
| u32result = nl::Weave::min(static_cast<uint32_t>(0), static_cast<uint32_t>(0)); |
| NL_TEST_ASSERT(inSuite, u32result == static_cast<uint32_t>(0)); |
| |
| // Test 64-bit unsigned integers |
| |
| u64result = nl::Weave::min(UINT64_MAX, UINT64_MAX); |
| NL_TEST_ASSERT(inSuite, u64result == UINT64_MAX); |
| |
| u64result = nl::Weave::min(static_cast<uint64_t>(0), UINT64_MAX); |
| NL_TEST_ASSERT(inSuite, u64result == static_cast<uint64_t>(0)); |
| |
| u64result = nl::Weave::min(UINT64_MAX, static_cast<uint64_t>(0)); |
| NL_TEST_ASSERT(inSuite, u64result == static_cast<uint64_t>(0)); |
| |
| u64result = nl::Weave::min(static_cast<uint64_t>(0), static_cast<uint64_t>(0)); |
| NL_TEST_ASSERT(inSuite, u64result == static_cast<uint64_t>(0)); |
| } |
| |
| static void CheckMax(nlTestSuite *inSuite, void *inContext) |
| { |
| int8_t s8result; |
| int16_t s16result; |
| int32_t s32result; |
| int64_t s64result; |
| uint8_t u8result; |
| uint16_t u16result; |
| uint32_t u32result; |
| uint64_t u64result; |
| |
| // Test 8-bit signed integers |
| |
| s8result = nl::Weave::max(INT8_MIN, INT8_MAX); |
| NL_TEST_ASSERT(inSuite, s8result == INT8_MAX); |
| |
| s8result = nl::Weave::max(INT8_MAX, INT8_MIN); |
| NL_TEST_ASSERT(inSuite, s8result == INT8_MAX); |
| |
| s8result = nl::Weave::max(INT8_MIN, 0); |
| NL_TEST_ASSERT(inSuite, s8result == 0); |
| |
| s8result = nl::Weave::max(0, INT8_MIN); |
| NL_TEST_ASSERT(inSuite, s8result == 0); |
| |
| s8result = nl::Weave::max(0, INT8_MAX); |
| NL_TEST_ASSERT(inSuite, s8result == INT8_MAX); |
| |
| s8result = nl::Weave::max(INT8_MAX, 0); |
| NL_TEST_ASSERT(inSuite, s8result == INT8_MAX); |
| |
| s8result = nl::Weave::max(0, 0); |
| NL_TEST_ASSERT(inSuite, s8result == 0); |
| |
| s8result = nl::Weave::max(INT8_MIN, INT8_MIN); |
| NL_TEST_ASSERT(inSuite, s8result == INT8_MIN); |
| |
| s8result = nl::Weave::max(INT8_MAX, INT8_MAX); |
| NL_TEST_ASSERT(inSuite, s8result == INT8_MAX); |
| |
| // Test 16-bit signed integers |
| |
| s16result = nl::Weave::max(INT16_MIN, INT16_MAX); |
| NL_TEST_ASSERT(inSuite, s16result == INT16_MAX); |
| |
| s16result = nl::Weave::max(INT16_MAX, INT16_MIN); |
| NL_TEST_ASSERT(inSuite, s16result == INT16_MAX); |
| |
| s16result = nl::Weave::max(INT16_MIN, 0); |
| NL_TEST_ASSERT(inSuite, s16result == 0); |
| |
| s16result = nl::Weave::max(0, INT16_MIN); |
| NL_TEST_ASSERT(inSuite, s16result == 0); |
| |
| s16result = nl::Weave::max(0, INT16_MAX); |
| NL_TEST_ASSERT(inSuite, s16result == INT16_MAX); |
| |
| s16result = nl::Weave::max(INT16_MAX, 0); |
| NL_TEST_ASSERT(inSuite, s16result == INT16_MAX); |
| |
| s16result = nl::Weave::max(0, 0); |
| NL_TEST_ASSERT(inSuite, s16result == 0); |
| |
| s16result = nl::Weave::max(INT16_MIN, INT16_MIN); |
| NL_TEST_ASSERT(inSuite, s16result == INT16_MIN); |
| |
| s16result = nl::Weave::max(INT16_MAX, INT16_MAX); |
| NL_TEST_ASSERT(inSuite, s16result == INT16_MAX); |
| |
| // Test 32-bit signed integers |
| |
| s32result = nl::Weave::max(INT32_MIN, INT32_MAX); |
| NL_TEST_ASSERT(inSuite, s32result == INT32_MAX); |
| |
| s32result = nl::Weave::max(INT32_MAX, INT32_MIN); |
| NL_TEST_ASSERT(inSuite, s32result == INT32_MAX); |
| |
| s32result = nl::Weave::max(INT32_MIN, 0); |
| NL_TEST_ASSERT(inSuite, s32result == 0); |
| |
| s32result = nl::Weave::max(0, INT32_MIN); |
| NL_TEST_ASSERT(inSuite, s32result == 0); |
| |
| s32result = nl::Weave::max(0, INT32_MAX); |
| NL_TEST_ASSERT(inSuite, s32result == INT32_MAX); |
| |
| s32result = nl::Weave::max(INT32_MAX, 0); |
| NL_TEST_ASSERT(inSuite, s32result == INT32_MAX); |
| |
| s32result = nl::Weave::max(0, 0); |
| NL_TEST_ASSERT(inSuite, s32result == 0); |
| |
| s32result = nl::Weave::max(INT32_MIN, INT32_MIN); |
| NL_TEST_ASSERT(inSuite, s32result == INT32_MIN); |
| |
| s32result = nl::Weave::max(INT32_MAX, INT32_MAX); |
| NL_TEST_ASSERT(inSuite, s32result == INT32_MAX); |
| |
| // Test 64-bit signed integers |
| |
| s64result = nl::Weave::max(INT64_MIN, INT64_MAX); |
| NL_TEST_ASSERT(inSuite, s64result == INT64_MAX); |
| |
| s64result = nl::Weave::max(INT64_MAX, INT64_MIN); |
| NL_TEST_ASSERT(inSuite, s64result == INT64_MAX); |
| |
| s64result = nl::Weave::max(INT64_MIN, static_cast<int64_t>(0)); |
| NL_TEST_ASSERT(inSuite, s64result == static_cast<int64_t>(0)); |
| |
| s64result = nl::Weave::max(static_cast<int64_t>(0), INT64_MIN); |
| NL_TEST_ASSERT(inSuite, s64result == static_cast<int64_t>(0)); |
| |
| s64result = nl::Weave::max(static_cast<int64_t>(0), INT64_MAX); |
| NL_TEST_ASSERT(inSuite, s64result == INT64_MAX); |
| |
| s64result = nl::Weave::max(INT64_MAX, static_cast<int64_t>(0)); |
| NL_TEST_ASSERT(inSuite, s64result == INT64_MAX); |
| |
| s64result = nl::Weave::max(static_cast<int64_t>(0), static_cast<int64_t>(0)); |
| NL_TEST_ASSERT(inSuite, s64result == static_cast<int64_t>(0)); |
| |
| s64result = nl::Weave::max(INT64_MIN, INT64_MIN); |
| NL_TEST_ASSERT(inSuite, s64result == INT64_MIN); |
| |
| s64result = nl::Weave::max(INT64_MAX, INT64_MAX); |
| NL_TEST_ASSERT(inSuite, s64result == INT64_MAX); |
| |
| // Test 8-bit unsigned integers |
| |
| u8result = nl::Weave::max(UINT8_MAX, UINT8_MAX); |
| NL_TEST_ASSERT(inSuite, u8result == UINT8_MAX); |
| |
| u8result = nl::Weave::max(0, UINT8_MAX); |
| NL_TEST_ASSERT(inSuite, u8result == UINT8_MAX); |
| |
| u8result = nl::Weave::max(UINT8_MAX, 0); |
| NL_TEST_ASSERT(inSuite, u8result == UINT8_MAX); |
| |
| u8result = nl::Weave::max(0, 0); |
| NL_TEST_ASSERT(inSuite, u8result == 0); |
| |
| // Test 16-bit unsigned integers |
| |
| u16result = nl::Weave::max(UINT16_MAX, UINT16_MAX); |
| NL_TEST_ASSERT(inSuite, u16result == UINT16_MAX); |
| |
| u16result = nl::Weave::max(0, UINT16_MAX); |
| NL_TEST_ASSERT(inSuite, u16result == UINT16_MAX); |
| |
| u16result = nl::Weave::max(UINT16_MAX, 0); |
| NL_TEST_ASSERT(inSuite, u16result == UINT16_MAX); |
| |
| u16result = nl::Weave::max(0, 0); |
| NL_TEST_ASSERT(inSuite, u16result == 0); |
| |
| // Test 32-bit unsigned integers |
| |
| u32result = nl::Weave::max(UINT32_MAX, UINT32_MAX); |
| NL_TEST_ASSERT(inSuite, u32result == UINT32_MAX); |
| |
| u32result = nl::Weave::max(static_cast<uint32_t>(0), UINT32_MAX); |
| NL_TEST_ASSERT(inSuite, u32result == UINT32_MAX); |
| |
| u32result = nl::Weave::max(UINT32_MAX, static_cast<uint32_t>(0)); |
| NL_TEST_ASSERT(inSuite, u32result == UINT32_MAX); |
| |
| u32result = nl::Weave::max(static_cast<uint32_t>(0), static_cast<uint32_t>(0)); |
| NL_TEST_ASSERT(inSuite, u32result == static_cast<uint32_t>(0)); |
| |
| // Test 64-bit unsigned integers |
| |
| u64result = nl::Weave::max(UINT64_MAX, UINT64_MAX); |
| NL_TEST_ASSERT(inSuite, u64result == UINT64_MAX); |
| |
| u64result = nl::Weave::max(static_cast<uint64_t>(0), UINT64_MAX); |
| NL_TEST_ASSERT(inSuite, u64result == UINT64_MAX); |
| |
| u64result = nl::Weave::max(UINT64_MAX, static_cast<uint64_t>(0)); |
| NL_TEST_ASSERT(inSuite, u64result == UINT64_MAX); |
| |
| u64result = nl::Weave::max(static_cast<uint64_t>(0), static_cast<uint64_t>(0)); |
| NL_TEST_ASSERT(inSuite, u64result == static_cast<uint64_t>(0)); |
| } |
| |
| static WEAVE_ERROR GetStatus(bool inFailure) |
| { |
| return ((inFailure) ? -1 : WEAVE_NO_ERROR); |
| } |
| |
| static void CheckSuccessOrExitFailure(nlTestSuite *inSuite, void *inContext) |
| { |
| const bool failure = true; |
| int status; |
| bool sentinel; |
| |
| status = GetStatus(failure); |
| sentinel = false; |
| |
| SuccessOrExit(status); |
| sentinel = true; |
| |
| exit: |
| NL_TEST_ASSERT(inSuite, sentinel == false); |
| } |
| |
| static void CheckSuccessOrExitSuccess(nlTestSuite *inSuite, void *inContext) |
| { |
| const bool failure = true; |
| int status; |
| bool sentinel; |
| |
| status = GetStatus(!failure); |
| sentinel = false; |
| |
| SuccessOrExit(status); |
| sentinel = true; |
| |
| exit: |
| NL_TEST_ASSERT(inSuite, sentinel == true); |
| } |
| |
| static void CheckSuccessOrExitAssignmentFailure(nlTestSuite *inSuite, void *inContext) |
| { |
| const bool failure = true; |
| int status; |
| bool sentinel; |
| |
| sentinel = false; |
| |
| SuccessOrExit(status = GetStatus(failure)); |
| sentinel = true; |
| |
| exit: |
| NL_TEST_ASSERT(inSuite, sentinel == false); |
| } |
| |
| static void CheckSuccessOrExitAssignmentSuccess(nlTestSuite *inSuite, void *inContext) |
| { |
| const bool failure = true; |
| int status; |
| bool sentinel; |
| |
| sentinel = false; |
| |
| SuccessOrExit(status = GetStatus(!failure)); |
| sentinel = true; |
| |
| exit: |
| NL_TEST_ASSERT(inSuite, sentinel == true); |
| } |
| |
| static void CheckSuccessOrExit(nlTestSuite *inSuite, void *inContext) |
| { |
| CheckSuccessOrExitFailure(inSuite, inContext); |
| CheckSuccessOrExitSuccess(inSuite, inContext); |
| CheckSuccessOrExitAssignmentFailure(inSuite, inContext); |
| CheckSuccessOrExitAssignmentSuccess(inSuite, inContext); |
| } |
| |
| static void CheckVerifyOrExitFailure(nlTestSuite *inSuite, void *inContext) |
| { |
| bool status; |
| bool sentinel; |
| bool action; |
| |
| status = false; |
| sentinel = false; |
| action = false; |
| |
| VerifyOrExit(status, action = true); |
| sentinel = true; |
| |
| exit: |
| NL_TEST_ASSERT(inSuite, sentinel == false); |
| NL_TEST_ASSERT(inSuite, action == true); |
| } |
| |
| static void CheckVerifyOrExitSuccess(nlTestSuite *inSuite, void *inContext) |
| { |
| bool status; |
| bool sentinel; |
| bool action; |
| |
| status = true; |
| sentinel = false; |
| action = false; |
| |
| VerifyOrExit(status, action = true); |
| sentinel = true; |
| |
| exit: |
| NL_TEST_ASSERT(inSuite, sentinel == true); |
| NL_TEST_ASSERT(inSuite, action == false); |
| } |
| |
| static void CheckVerifyOrExit(nlTestSuite *inSuite, void *inContext) |
| { |
| CheckVerifyOrExitFailure(inSuite, inContext); |
| CheckVerifyOrExitSuccess(inSuite, inContext); |
| } |
| |
| static void CheckExitNow(nlTestSuite *inSuite, void *inContext) |
| { |
| bool action; |
| bool sentinel; |
| |
| sentinel = false; |
| action = false; |
| |
| ExitNow(action = true); |
| sentinel = true; |
| |
| exit: |
| NL_TEST_ASSERT(inSuite, sentinel == false); |
| NL_TEST_ASSERT(inSuite, action == true); |
| } |
| |
| static void TestWeaveDie(void) |
| { |
| sContext.mDidDie = true; |
| } |
| |
| static void CheckVerifyOrDieFailure(nlTestSuite *inSuite, void *inContext) |
| { |
| struct TestVerifyOrDieContext *theContext = static_cast<struct TestVerifyOrDieContext *>(inContext); |
| bool status; |
| |
| status = false; |
| |
| theContext->mShouldDie = true; |
| theContext->mDidDie = false; |
| |
| VerifyOrDie(status); |
| |
| NL_TEST_ASSERT(inSuite, theContext->mShouldDie == theContext->mDidDie); |
| } |
| |
| static void CheckVerifyOrDieSuccess(nlTestSuite *inSuite, void *inContext) |
| { |
| struct TestVerifyOrDieContext *theContext = static_cast<struct TestVerifyOrDieContext *>(inContext); |
| bool status; |
| |
| status = true; |
| |
| theContext->mShouldDie = false; |
| theContext->mDidDie = false; |
| |
| VerifyOrDie(status); |
| |
| NL_TEST_ASSERT(inSuite, theContext->mShouldDie == theContext->mDidDie); |
| } |
| |
| static void CheckVerifyOrDie(nlTestSuite *inSuite, void *inContext) |
| { |
| CheckVerifyOrDieFailure(inSuite, inContext); |
| CheckVerifyOrDieSuccess(inSuite, inContext); |
| } |
| |
| static void CheckLogFileLineFunc(nlTestSuite *inSuite, void *inContext) |
| { |
| |
| } |
| |
| static const nlTest sTests[] = { |
| NL_TEST_DEF("min", CheckMin), |
| NL_TEST_DEF("max", CheckMax), |
| NL_TEST_DEF("success-or-exit", CheckSuccessOrExit), |
| NL_TEST_DEF("verify-or-exit", CheckVerifyOrExit), |
| NL_TEST_DEF("exit-now", CheckExitNow), |
| NL_TEST_DEF("verify-or-die", CheckVerifyOrDie), |
| NL_TEST_DEF("log-file-line-func", CheckLogFileLineFunc), |
| NL_TEST_SENTINEL() |
| }; |
| |
| int main(void) |
| { |
| nlTestSuite theSuite = { |
| "weave-code-utils", |
| &sTests[0] |
| }; |
| |
| nl_test_set_output_style(OUTPUT_CSV); |
| |
| nlTestRunner(&theSuite, &sContext); |
| |
| return nlTestRunnerStats(&theSuite); |
| } |