///! 治理模块中文测试 ///! 测试治理协议的所有功能 使用 ../governance/governance; 合约 治理测试 { 私有 治理: 治理基础; 构造函数() { 让 治理代币 = 地址::从十六进制("0x1234567890123456789012345678901234567890"); 治理 = 治理基础::新建(治理代币, 1000 * (10 ** 18), 51, 3); } // 测试1: 创建提案 函数 测试创建提案() { 让 提案者 = 消息::发送者(); 让 目标 = 地址::从十六进制("0x2345678901234567890123456789012345678901"); 让 调用数据 = 字节::从十六进制("0x12345678"); 让 描述 = "测试提案"; // 创建前 让 提案数量前 = 治理.提案数量(); // 执行创建 让 提案ID = 治理.提案(目标, 0, 调用数据, 描述); // 创建后 让 提案数量后 = 治理.提案数量(); 要求(提案数量后 == 提案数量前 + 1, "提案数量应增加"); 要求(治理.提案状态(提案ID) == 提案状态::待处理, "提案状态应为待处理"); } // 测试2: 投票 函数 测试投票() { 让 投票者 = 消息::发送者(); // 先创建提案 让 目标 = 地址::从十六进制("0x2345678901234567890123456789012345678901"); 让 提案ID = 治理.提案(目标, 0, 字节::从十六进制("0x12345678"), "测试提案"); // 投票前 要求(治理.是否已投票(提案ID, 投票者) == 假, "不应该已投票"); // 执行投票(赞成) 治理.投票(提案ID, 真); // 投票后 要求(治理.是否已投票(提案ID, 投票者) == 真, "应该已投票"); 让 (赞成票, 反对票, 弃权票) = 治理.提案票数(提案ID); 要求(赞成票 > 0, "赞成票应大于0"); } // 测试3: 执行提案 函数 测试执行提案() { // 先创建提案 让 目标 = 地址::从十六进制("0x2345678901234567890123456789012345678901"); 让 提案ID = 治理.提案(目标, 0, 字节::从十六进制("0x12345678"), "测试提案"); // 投票(假设有足够的票数) 治理.投票(提案ID, 真); // 等待投票期结束(这里需要模拟时间推进) // ... // 执行提案 治理.执行(提案ID); // 验证 要求(治理.提案状态(提案ID) == 提案状态::已执行, "提案应该已执行"); } // 测试4: 取消提案 函数 测试取消提案() { // 先创建提案 让 目标 = 地址::从十六进制("0x2345678901234567890123456789012345678901"); 让 提案ID = 治理.提案(目标, 0, 字节::从十六进制("0x12345678"), "测试提案"); // 取消前 要求(治理.提案状态(提案ID) == 提案状态::待处理, "提案应该待处理"); // 执行取消 治理.取消(提案ID); // 取消后 要求(治理.提案状态(提案ID) == 提案状态::已取消, "提案应该已取消"); } // 运行所有测试 函数 运行所有测试() { 测试创建提案(); 测试投票(); 测试执行提案(); 测试取消提案(); } }