mirror of
https://github.com/minetest/minetest.git
synced 2025-03-06 20:48:40 +01:00
90 lines
2.4 KiB
C++
90 lines
2.4 KiB
C++
// SPDX-License-Identifier: LGPL-2.1-or-later
|
|
|
|
#include "test.h"
|
|
#include "log_internal.h"
|
|
|
|
using std::ostream;
|
|
|
|
class TestLogging : public TestBase
|
|
{
|
|
public:
|
|
TestLogging() { TestManager::registerTestModule(this); }
|
|
const char *getName() { return "TestLogging"; }
|
|
|
|
void runTests(IGameDef *gamedef);
|
|
|
|
void testNullChecks();
|
|
void testBitCheck();
|
|
};
|
|
|
|
static TestLogging g_test_instance;
|
|
|
|
void TestLogging::runTests(IGameDef *gamedef)
|
|
{
|
|
TEST(testNullChecks);
|
|
TEST(testBitCheck);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
void TestLogging::testNullChecks()
|
|
{
|
|
CaptureLogOutput capture(g_logger);
|
|
|
|
infostream << "Test char*: " << (char*)0 << std::endl;
|
|
infostream << "Test signed char*: " << (signed char*)0 << std::endl;
|
|
infostream << "Test unsigned char*: " << (unsigned char*)0 << std::endl;
|
|
|
|
infostream << "Test const char*: " << (const char*)0 << std::endl;
|
|
infostream << "Test const signed char*: " << (const signed char*)0 << std::endl;
|
|
infostream << "Test const unsigned char*: " << (const unsigned char*)0 << std::endl;
|
|
|
|
|
|
auto logs = capture.take();
|
|
UASSERTEQ(size_t, logs.size(), 6);
|
|
UASSERTEQ(std::string, logs[0].text, "Test char*: (null)");
|
|
UASSERTEQ(std::string, logs[1].text, "Test signed char*: (null)");
|
|
UASSERTEQ(std::string, logs[2].text, "Test unsigned char*: (null)");
|
|
UASSERTEQ(std::string, logs[3].text, "Test const char*: (null)");
|
|
UASSERTEQ(std::string, logs[4].text, "Test const signed char*: (null)");
|
|
UASSERTEQ(std::string, logs[5].text, "Test const unsigned char*: (null)");
|
|
}
|
|
|
|
namespace {
|
|
class ForceEofBit {};
|
|
class ForceFailBit {};
|
|
class ForceBadBit {};
|
|
|
|
ostream& operator<<(ostream& os, ForceEofBit)
|
|
{
|
|
os.setstate(std::ios::eofbit);
|
|
return os;
|
|
}
|
|
|
|
ostream& operator<<(ostream& os, ForceFailBit)
|
|
{
|
|
os.setstate(std::ios::failbit);
|
|
return os;
|
|
}
|
|
|
|
ostream& operator<<(ostream& os, ForceBadBit)
|
|
{
|
|
os.setstate(std::ios::badbit);
|
|
return os;
|
|
}
|
|
}
|
|
|
|
void TestLogging::testBitCheck()
|
|
{
|
|
CaptureLogOutput capture(g_logger);
|
|
|
|
infostream << "EOF is " << ForceEofBit{} << std::endl;
|
|
infostream << "Fail is " << ForceFailBit{} << std::endl;
|
|
infostream << "Bad is " << ForceBadBit{} << std::endl;
|
|
|
|
auto logs = capture.take();
|
|
UASSERTEQ(size_t, logs.size(), 3);
|
|
UASSERTEQ(std::string, logs[0].text, "EOF is (ostream:eofbit)");
|
|
UASSERTEQ(std::string, logs[1].text, "Fail is (ostream:failbit)");
|
|
UASSERTEQ(std::string, logs[2].text, "Bad is (ostream:badbit)");
|
|
}
|