main_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. package main
  2. import "testing"
  3. // TestCaseNameMatches 锁住 `-case` 的匹配语义:**按名字首段精确匹配**。
  4. //
  5. // 这条不是洁癖:纯子串匹配会让 `-case C1-5` 把 `C1-5b` 一起带进来,
  6. // "本次应跑/实跑"的数就错了,正好让"hash + 总数 + 通过数三者对齐"失效。
  7. func TestCaseNameMatches(t *testing.T) {
  8. name5 := "C1-5 清零前置校验·校区余额 > 全局余额(legacy 静默 vs Go 3120)"
  9. name5b := "C1-5b 清零前置校验·校区余额 > 全局余额(真实 3 位构型,2 位收敛后守卫消失)"
  10. if !caseNameMatches(name5, "C1-5") {
  11. t.Error("-case C1-5 应命中 C1-5")
  12. }
  13. if caseNameMatches(name5b, "C1-5") {
  14. t.Error("-case C1-5 **不得**命中 C1-5b(子串匹配的坑)")
  15. }
  16. if !caseNameMatches(name5b, "C1-5b") {
  17. t.Error("-case C1-5b 应命中 C1-5b")
  18. }
  19. if caseNameMatches(name5, "C1-5xx") {
  20. t.Error("打错名字必须一条都不命中(否则会以 0 个 case 退出 0)")
  21. }
  22. if !caseNameMatches(name5, name5) {
  23. t.Error("全名必须能精确命中")
  24. }
  25. // "C1-1" 不得命中 "C1-10"/"C1-11"(前缀但不同 token)
  26. if caseNameMatches("C1-10 取消充值活动·退成负数", "C1-1") {
  27. t.Error("-case C1-1 不得命中 C1-10")
  28. }
  29. }