diff --git a/devel/201_19.md b/devel/201_19.md index 35c0140b0e55616f433079363baafe121a33616f..ce219e1e2d64a393bbd480400d21f26bfc3b7984 100644 --- a/devel/201_19.md +++ b/devel/201_19.md @@ -36,6 +36,23 @@ bin/lint tests/goldfish/liii/option-test.scm bin/goldfish -m r7rs tests/goldfish/liii/option-test.scm ``` +## 2025/10/22 为 option%or-else 方法添加文档和精简测试用例 + +### What +1. 为 option%or-else 方法添加详细的文档说明,包括函数签名、参数说明、行为特征等 +2. 为 option%or-else 方法创建精简的测试用例,覆盖基本功能和边界情况 +3. 运行测试确保 option%or-else 方法正常工作 + +### Why +- option%or-else 是链式操作option对象的重要方法,在函数式编程中用于提供备选option +- 根据项目规范,需要为所有实例方法提供完整的文档和测试覆盖 +- 提供精简的测试用例便于后续维护和扩展 + +### How +- 参考 option 构造函数的文档格式,为 option%or-else 方法撰写详细文档 +- 测试用例覆盖各种值类型的链式操作和边界情况处理 +- 确保测试通过,验证方法的正确性 + ## 2025/10/22 为 option%get-or-else 方法添加文档和精简测试用例 ### What diff --git a/tests/goldfish/liii/option-test.scm b/tests/goldfish/liii/option-test.scm index dabb695e93cd3af15cbab51acb99e6393a304a5b..ba6ada36ead8d42c17daff8139d094164d441d9a 100644 --- a/tests/goldfish/liii/option-test.scm +++ b/tests/goldfish/liii/option-test.scm @@ -172,6 +172,53 @@ default : any (check (opt2 :get-or-else 0) => 0) (check (opt2 :get-or-else (lambda () "default")) => "default")) +#| +option%or-else +链式操作option对象,如果当前option为空则返回备选option。 + +语法 +---- +(option%or-else default . args) + +参数 +---- +default : option +当当前option为空时返回的备选option对象。 +args : any +可选的额外参数,用于链式操作。 + +返回值 +----- +如果当前option非空,返回当前option;如果当前option为空,返回备选option。 + +说明 +---- +提供链式操作option对象的能力,支持多个备选option的链式调用。 + +边界条件 +-------- +- 非空option:返回当前option +- 空option:返回备选option +- 参数类型检查:default必须是option类型 + +性能特征 +-------- +- 时间复杂度:O(1) +- 空间复杂度:O(1) + +兼容性 +------ +- 适用于所有option实例 +|# + +;;; 测试option%or-else方法 +(let ((opt1 (option 42)) + (opt2 (option 0)) + (opt3 (none))) + (check ((opt1 :or-else opt2) :get) => 42) + (check ((opt3 :or-else opt1) :get) => 42) + (check ((opt3 :or-else opt2) :get) => 0)) + ;;; 测试基本操作 (let ((opt1 (option 42)) (opt2 (none)))