51 lines
1.5 KiB
C++
51 lines
1.5 KiB
C++
#pragma once
|
|
#include <string>
|
|
#include <vector>
|
|
#include <functional>
|
|
|
|
namespace lsp::test
|
|
{
|
|
// 简单的测试结果结构
|
|
struct TestResult
|
|
{
|
|
std::string testName;
|
|
bool passed;
|
|
std::string message;
|
|
};
|
|
|
|
// 测试运行器类
|
|
class TestRunner
|
|
{
|
|
public:
|
|
using TestFunction = std::function<TestResult()>;
|
|
|
|
void addTest(const std::string& name, TestFunction test);
|
|
void runAllTests();
|
|
int getFailedCount() const;
|
|
int getTotalCount() const;
|
|
|
|
private:
|
|
struct TestCase
|
|
{
|
|
std::string name;
|
|
TestFunction function;
|
|
};
|
|
|
|
std::vector<TestCase> tests;
|
|
std::vector<TestResult> results;
|
|
|
|
void printResult(const TestResult& result);
|
|
void printSummary();
|
|
};
|
|
|
|
// 断言辅助函数
|
|
void assertTrue(bool condition, const std::string& message);
|
|
void assertFalse(bool condition, const std::string& message);
|
|
void assertEqual(int expected, int actual, const std::string& message);
|
|
void assertEqual(unsigned int expected, unsigned int actual, const std::string& message);
|
|
void assertEqual(double expected, double actual, const std::string& message);
|
|
void assertEqual(bool expected, bool actual, const std::string& message);
|
|
void assertEqual(const std::string& expected, const std::string& actual, const std::string& message);
|
|
void assertEqual(size_t expected, size_t actual, const std::string& message);
|
|
}
|