189 lines
4.8 KiB
C++
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;
|
|
}
|
|
} |