apps\hub\src\test\java\cn\nfarms\hub\ModelCatalogTest.kt¶
源码路径:
apps\hub\src\test\java\cn\nfarms\hub\ModelCatalogTest.kt· 65 行
package cn.nfarms.hub
import cn.nfarms.core.secure.Crypto
import cn.nfarms.hub.engine.DemoSource
import cn.nfarms.hub.engine.ModelCatalog
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Test
/**
* 模型目录的一致性。
*
* # 这条测试防的是什么
*
* 下载流程是「写 `.part` → 算 SHA-256 → 与目录里的值比对 → 通过才 rename」。
* 如果**目录里的校验和与演示源实际生成的内容对不上**,每一次下载都会以
* "SHA-256 不匹配"失败 —— 而且看起来像网络问题,实际是数据定义不一致。
* 所以「目录里的 sha256 必须等于 payload 的 sha256」这一条必须钉住。
*/
class ModelCatalogTest {
@Test
fun every_catalog_sha256_matches_the_payload_it_describes() {
for (set in ModelCatalog.sets) {
for (f in set.files) {
if (!f.url.startsWith("demo://")) continue
val id = f.url.removePrefix("demo://model/")
val actual = Crypto.sha256Hex(DemoSource.payloadFor(id))
assertEquals(
"目录条目 ${f.id} 的 sha256 与演示源内容不一致 —— 下载会永远校验失败",
f.sha256,
actual,
)
}
}
}
@Test
fun demo_payload_is_deterministic_and_nonempty() {
val a = DemoSource.payloadFor("qwen3-coder")
val b = DemoSource.payloadFor("qwen3-coder")
assertTrue("同一 id 必须生成同样的内容(否则校验和不可能稳定)", a.contentEquals(b))
assertTrue(a.isNotEmpty())
// 不同 id 内容不同
assertTrue(!a.contentEquals(DemoSource.payloadFor("qwen3-vl")))
}
@Test
fun every_model_has_a_unique_id_and_a_checksum() {
val all = ModelCatalog.sets.flatMap { it.files }
assertEquals("模型 id 必须唯一", all.size, all.map { it.id }.distinct().size)
for (f in all) {
assertTrue("${f.id} 缺 sha256", f.sha256.isNotBlank())
assertTrue("${f.id} 缺文件名", f.fileName.isNotBlank())
assertTrue("${f.id} 缺 url", f.url.isNotBlank())
}
}
@Test
fun find_returns_the_right_entry() {
assertEquals("qwen3-coder", ModelCatalog.find("qwen3-coder")?.id)
assertEquals(null, ModelCatalog.find("不存在的模型"))
}
}