Skip to main content
niceeval/expect 只提供纯 Match factory。Match 比较一个候选值,不记录结果,也不决定判定或分数。t.check(value, match) 在调用时读取 value 并直接登记 Assertion;返回的 handle 只配置同一条 entry。

使用方式

Matchers

下面每个 matcher 的签名和说明从 niceeval/expect 的源码生成,和当前实现保持同步。

and

or

not

includes

excludes

pattern

similarity

归一化 Levenshtein similarity;它是连续分数,不携带默认阈值或 verdict 策略。

includesUrl

至少含 min 个去重 http(s) URL 的纯文本 matcher。

hasSections

至少含 min 个 Markdown heading 的纯文本 matcher。

isDefined

isTrue

value === true 的 refinement matcher。

isFalse

value === false 的 refinement matcher。

commandSucceeded

CommandResult-like candidate 的 exitCode === 0 matcher;不读取 stdout / stderr。

equals

matches

satisfies

defineValueMatch

defineScoreMatch

eventMatch

mapValue

Project a single value without replacing the original subject’s refinement.

mapEach

Project each complete item, retaining its material identity and order.

filterWhere

Select only definite matches; an unknown selector makes the aggregate unavailable.

countWhere

Compare an exact match count only after every item in a complete collection is known.

defineMaterialMatch

defineContextMatch

匹配工具调用

ToolMatch 比较一条 LogicalToolOccurrence,并通过 .exactly(n)、.atLeast(n) 等方法表达 occurrence 数量。calledTool 接收名称、未量化 ToolMatch 或正向 occurrence Match;notCalledTool 使用未量化 selector 表达零匹配。
普通 JSON 用 jsonMatch,路径用 referencesAnyPath,命令 token 用 commandMatch。输出不存在、材料不完整或 HITL 尚未完成时,Match 会成为 unavailable,不会伪装成普通不匹配。 完整签名、材料状态与三值计数规则见 Scoped assertions。

常见用法示例

组合与三态

同一 and / or 里的 Match 必须属于同一 domain。布尔 Match 的内部结果是 matched、mismatched 或 unavailable:or 只有在没有子项命中且至少一项证据不完整时才返回 unavailable,不会把未知当成否定。Match 自身不持有判定、计分或控制流;continuous measurement 的 .gate(minimum)、.score(n) 与 .orStop(minimum) 都属于登记后的 AssertionHandle。 下面列出 Match 值本身的稳定字段。品牌和 evaluator 是模块私有实现,不属于作者 API。

Match

domain

name

BooleanMatch

kind

[matchRefinementBrand]

ScoreMatch

kind

集合中的先后条件

inOrder 可以把 2–64 个普通值 Match 组合成集合 Match,交给 t.check 或应用的集合断言方法。 它接受只读数组或带完整性状态的 MaterialCollection,按原位置寻找严格递增的子序列,不要求相邻。
同一项不能满足两个步骤,每个步骤内部可以用 and 约束同一事实。应用负责提供正式提交顺序;请求发出不代表操作采用或执行完成。 只要求双方都发言时,分别检查存在性即可。 不完整集合返回不可判定。完整集合有已知顺序证据时通过,没有可能的顺序时失败,只有依赖未知项才能成立时不可判定。 诊断保留原位置、材料 ID 和步骤判断。ToolMatch 与 EventMatch 的顺序组合保留各自的 Agent 范围,不能和普通值步骤混用。

自定义 matcher

布尔自定义 Match 用 defineValueMatch,连续分数用 defineScoreMatch。两者只实现单候选比较;读取文件、扫描事件、决定 coverage 或修改判定仍由 Assertion 登记入口与 Runner 负责。