test/tests/basic_test.cpp

189 lines
4.8 KiB
C++

#include "app.hpp"
#include <cassert>
#include <iostream>
/**
* @brief 测试 add 函数
*/
void testAddFunction() {
std::cout << "Testing add function...\n";
// 测试基本加法
assert(add(0, 0) == 0);
assert(add(5, 3) == 8);
assert(add(-5, 10) == 5);
assert(add(-3, -7) == -10);
// 测试边界情况
assert(add(100, 200) == 300);
std::cout << " add function tests passed!\n";
}
/**
* @brief 测试 multiply 函数
*/
void testMultiplyFunction() {
std::cout << "Testing multiply function...\n";
// 测试基本乘法
assert(multiply(0, 5) == 0);
assert(multiply(5, 3) == 15);
assert(multiply(-5, 3) == -15);
assert(multiply(-4, -5) == 20);
// 测试边界情况
assert(multiply(10, 10) == 100);
std::cout << " multiply function tests passed!\n";
}
/**
* @brief 测试 SimpleApp 类的基本功能
*/
void testSimpleAppBasic() {
std::cout << "Testing SimpleApp basic functionality...\n";
// 测试构造函数和getter
SimpleApp app("TestApp");
assert(app.getName() == "TestApp");
// 测试setter
app.setName("RenamedApp");
assert(app.getName() == "RenamedApp");
// 测试添加数字和求和
assert(app.getSum() == 0); // 初始和为0
assert(app.getNumbers().empty());
app.addNumber(10);
assert(app.getSum() == 10);
assert(app.getNumbers().size() == 1);
assert(app.getNumbers()[0] == 10);
app.addNumber(20);
assert(app.getSum() == 30);
assert(app.getNumbers().size() == 2);
std::cout << " SimpleApp basic tests passed!\n";
}
/**
* @brief 测试 SimpleApp 类的数字管理功能
*/
void testSimpleAppNumberManagement() {
std::cout << "Testing SimpleApp number management...\n";
SimpleApp app("NumberApp");
// 添加多个数字
for (int i = 1; i <= 5; ++i) {
app.addNumber(i * 10);
}
// 验证数字
const auto& numbers = app.getNumbers();
assert(numbers.size() == 5);
assert(numbers[0] == 10);
assert(numbers[1] == 20);
assert(numbers[2] == 30);
assert(numbers[3] == 40);
assert(numbers[4] == 50);
// 验证总和
assert(app.getSum() == 150); // 10+20+30+40+50 = 150
// 测试清空功能
app.clearNumbers();
assert(app.getNumbers().empty());
assert(app.getSum() == 0);
// 重新添加并验证
app.addNumber(100);
app.addNumber(200);
assert(app.getSum() == 300);
assert(app.getNumbers().size() == 2);
std::cout << " SimpleApp number management tests passed!\n";
}
/**
* @brief 测试 generateWelcomeMessage 函数
*/
void testWelcomeMessage() {
std::cout << "Testing generateWelcomeMessage function...\n";
std::string msg1 = generateWelcomeMessage("Alice");
assert(msg1.find("Alice") != std::string::npos);
assert(msg1.find("Welcome") != std::string::npos);
std::string msg2 = generateWelcomeMessage("Bob");
assert(msg2.find("Bob") != std::string::npos);
std::string msg3 = generateWelcomeMessage("");
assert(msg3.find("Welcome") != std::string::npos);
std::cout << " Welcome message tests passed!\n";
}
/**
* @brief 测试 SimpleApp 的信息生成功能
*/
void testAppInfo() {
std::cout << "Testing SimpleApp info generation...\n";
SimpleApp app("InfoApp");
// 空应用的信息
std::string emptyInfo = app.getInfo();
assert(emptyInfo.find("InfoApp") != std::string::npos);
assert(emptyInfo.find("Numbers count: 0") != std::string::npos);
// 添加数字后的信息
app.addNumber(1);
app.addNumber(2);
app.addNumber(3);
std::string fullInfo = app.getInfo();
assert(fullInfo.find("InfoApp") != std::string::npos);
assert(fullInfo.find("Numbers count: 3") != std::string::npos);
assert(fullInfo.find("Sum of numbers: 6") != std::string::npos);
assert(fullInfo.find("1, 2, 3") != std::string::npos);
std::cout << " App info generation tests passed!\n";
}
/**
* @brief 主测试函数
*/
int main() {
std::cout << "=== Starting Basic Tests ===\n\n";
try {
testAddFunction();
std::cout << "\n";
testMultiplyFunction();
std::cout << "\n";
testWelcomeMessage();
std::cout << "\n";
testSimpleAppBasic();
std::cout << "\n";
testSimpleAppNumberManagement();
std::cout << "\n";
testAppInfo();
std::cout << "\n=== All Tests Passed! ===\n";
return 0;
} catch (const std::exception& e) {
std::cerr << "Test failed with exception: " << e.what() << "\n";
return 1;
} catch (...) {
std::cerr << "Test failed with unknown exception\n";
return 1;
}
}