niceeval/expect 只提供纯 Match factory。Match 比较一个候选值,不记录结果,也不决定判定或分数。t.check(value, match) 在调用时读取 value 并直接登记 Assertion;返回的 handle 只配置同一条 entry。
使用方式
Matchers
下面每个 matcher 的签名和说明从niceeval/expect 的源码生成,和当前实现保持同步。
and
or
not
includes
excludes
pattern
similarity
includesUrl
hasSections
isDefined
isTrue
isFalse
commandSucceeded
equals
matches
satisfies
defineValueMatch
defineScoreMatch
eventMatch
匹配工具调用
ToolMatch 比较一条 LogicalToolOccurrence,并通过 .exactly(n)、.atLeast(n) 等方法表达 occurrence 数量。calledTool 接收名称、未量化 ToolMatch 或正向 occurrence Match;notCalledTool 使用未量化 selector 表达零匹配。
jsonMatch,路径用 referencesAnyPath,命令 token 用 commandMatch。输出不存在、材料不完整或 HITL 尚未完成时,Match 会成为 unavailable,不会伪装成普通不匹配。
完整签名、材料状态与三值计数规则见 Scoped assertions。
常见用法示例
组合与三态
and / or 里的 Match 必须属于同一 domain。布尔 Match 的内部结果是 matched、mismatched 或 unavailable:or 只有在没有子项命中且至少一项证据不完整时才返回 unavailable,不会把未知当成否定。Match 自身不持有判定、计分或控制流;ScoreMatch.atLeast(n) 在登记前形成 threshold,.score(n) 与 .orStop() 属于登记后的 AssertionHandle。
下面列出 Match 值本身的稳定字段。品牌和 evaluator 是模块私有实现,不属于作者 API。
Match
domain
name
BooleanMatch
kind
[matchRefinementBrand]
ScoreMatch
kind
atLeast
自定义 matcher
defineValueMatch,连续分数用 defineScoreMatch。两者只实现单候选比较;读取文件、扫描事件、决定 coverage 或修改判定仍由 Assertion 登记入口与 Runner 负责。