Add unit test suites (#3490)
This commit is contained in:
95
tests/unit/shared-utils/bh_log_test.cc
Normal file
95
tests/unit/shared-utils/bh_log_test.cc
Normal file
@ -0,0 +1,95 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#include "test_helper.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include "bh_log.h"
|
||||
#include "stdio.h"
|
||||
|
||||
class bh_log_test_suite : public testing::Test
|
||||
{
|
||||
protected:
|
||||
// You should make the members protected s.t. they can be
|
||||
// accessed from sub-classes.
|
||||
|
||||
// virtual void SetUp() will be called before each test is run. You
|
||||
// should define it if you need to initialize the varaibles.
|
||||
// Otherwise, this can be skipped.
|
||||
virtual void SetUp() {}
|
||||
|
||||
// virtual void TearDown() will be called after each test is run.
|
||||
// You should define it if there is cleanup work to do. Otherwise,
|
||||
// you don't have to provide it.
|
||||
//
|
||||
virtual void TearDown() {}
|
||||
};
|
||||
|
||||
#define TEST_STR "This is a test."
|
||||
|
||||
TEST_F(bh_log_test_suite, bh_log_set_verbose_level)
|
||||
{
|
||||
bh_log_set_verbose_level(BH_LOG_LEVEL_DEBUG);
|
||||
}
|
||||
|
||||
TEST_F(bh_log_test_suite, bh_print_time)
|
||||
{
|
||||
std::string captured;
|
||||
|
||||
bh_log_set_verbose_level(BH_LOG_LEVEL_WARNING);
|
||||
bh_print_time(TEST_STR);
|
||||
|
||||
bh_log_set_verbose_level(BH_LOG_LEVEL_DEBUG);
|
||||
testing::internal::CaptureStdout();
|
||||
bh_print_time(TEST_STR);
|
||||
captured = testing::internal::GetCapturedStdout();
|
||||
EXPECT_EQ(0, strncmp(TEST_STR, captured.c_str(), strlen(TEST_STR)));
|
||||
|
||||
testing::internal::CaptureStdout();
|
||||
bh_print_time(TEST_STR);
|
||||
captured = testing::internal::GetCapturedStdout();
|
||||
EXPECT_EQ(0, strncmp(TEST_STR, captured.c_str(), strlen(TEST_STR)));
|
||||
}
|
||||
|
||||
TEST_F(bh_log_test_suite, bh_log)
|
||||
{
|
||||
std::string captured;
|
||||
|
||||
bh_log_set_verbose_level(BH_LOG_LEVEL_DEBUG);
|
||||
testing::internal::CaptureStdout();
|
||||
bh_log(BH_LOG_LEVEL_FATAL, __FILE__, __LINE__, TEST_STR);
|
||||
captured = testing::internal::GetCapturedStdout();
|
||||
EXPECT_PRED_FORMAT2(::testing::IsSubstring, TEST_STR, captured);
|
||||
|
||||
testing::internal::CaptureStdout();
|
||||
bh_log(BH_LOG_LEVEL_ERROR, __FILE__, __LINE__, TEST_STR);
|
||||
captured = testing::internal::GetCapturedStdout();
|
||||
EXPECT_PRED_FORMAT2(::testing::IsSubstring, TEST_STR, captured);
|
||||
|
||||
testing::internal::CaptureStdout();
|
||||
bh_log(BH_LOG_LEVEL_WARNING, __FILE__, __LINE__, TEST_STR);
|
||||
captured = testing::internal::GetCapturedStdout();
|
||||
EXPECT_PRED_FORMAT2(::testing::IsSubstring, TEST_STR, captured);
|
||||
|
||||
testing::internal::CaptureStdout();
|
||||
bh_log(BH_LOG_LEVEL_DEBUG, __FILE__, __LINE__, TEST_STR);
|
||||
captured = testing::internal::GetCapturedStdout();
|
||||
EXPECT_PRED_FORMAT2(::testing::IsSubstring, TEST_STR, captured);
|
||||
|
||||
// log_verbose_level == BH_LOG_LEVEL_DEBUG, so BH_LOG_LEVEL_VERBOSE is not
|
||||
// printed.
|
||||
testing::internal::CaptureStdout();
|
||||
bh_log(BH_LOG_LEVEL_VERBOSE, __FILE__, __LINE__, TEST_STR);
|
||||
captured = testing::internal::GetCapturedStdout();
|
||||
EXPECT_EQ(nullptr, strstr(captured.c_str(), TEST_STR));
|
||||
|
||||
// After set log_verbose_level = BH_LOG_LEVEL_VERBOSE, BH_LOG_LEVEL_VERBOSE
|
||||
// can be printed.
|
||||
bh_log_set_verbose_level(BH_LOG_LEVEL_VERBOSE);
|
||||
testing::internal::CaptureStdout();
|
||||
bh_log(BH_LOG_LEVEL_VERBOSE, __FILE__, __LINE__, TEST_STR);
|
||||
captured = testing::internal::GetCapturedStdout();
|
||||
EXPECT_PRED_FORMAT2(::testing::IsSubstring, TEST_STR, captured);
|
||||
}
|
||||
Reference in New Issue
Block a user