四条用例,四类输入
(本条路线统一用 g++ -std=c++17 -O0 -Wall 编译)⚠️ 判题机上没有测试框架,所以这一节用一份**最小的脚手架**:一个 CHECK 宏,数着"跑了几条、过了几条、挂了几条"。框架再花哨,核心也是这三个数。
#include <iostream>
#include <stdexcept>
/* 一份最小的测试脚手架:不用任何框架,跑了几条、过了几条、挂了几条 */
static int ran = 0, passed = 0;
#define CHECK(cond) do { ran++; if (cond) passed++; } while (0)
static int div_of(int a, int b) {
if (b == 0) throw std::invalid_argument("zero");
return a / b;
}
static int throws_on_zero() {
try { div_of(1, 0); } catch (const std::invalid_argument &) { return 1; }
return 0;
}
int main() {
CHECK(div_of(10, 2) == 5); /* 正常 */
CHECK(div_of(0, 3) == 0); /* 边界:被除数是 0 */
CHECK(div_of(-6, 3) == -2); /* 边界:负数 */
CHECK(throws_on_zero() == 1); /* 异常路 */
std::cout << ran << "/" << passed << "/" << (ran - passed) << "\n";
return 0;
}
全部评论