43 lines
2.5 KiB
JavaScript
43 lines
2.5 KiB
JavaScript
|
|
import assert from 'node:assert/strict'
|
||
|
|
import { readFileSync } from 'node:fs'
|
||
|
|
import test from 'node:test'
|
||
|
|
|
||
|
|
const read = (path) => readFileSync(new URL(`../${path}`, import.meta.url), 'utf8')
|
||
|
|
const contract = JSON.parse(read('contracts/dynamic-language-world-visual-system.json'))
|
||
|
|
const registry = JSON.parse(read('contracts/numbered-ipc-registry.json'))
|
||
|
|
const modulePackage = JSON.parse(read('fixtures/module-packages/HLP-MOD-OFFICIAL-DYNAMIC-WORLD-SURFACE-0001-0.1.0.ghmod'))
|
||
|
|
const rust = read('src-tauri/src/world_climate.rs')
|
||
|
|
const frontend = read('src/main.tsx')
|
||
|
|
const styles = read('src/styles.css')
|
||
|
|
|
||
|
|
test('dynamic world surface is signed, opt-in and cannot mutate world facts', () => {
|
||
|
|
assert.equal(modulePackage.manifest.moduleNumber, 'HLP-MOD-OFFICIAL-DYNAMIC-WORLD-SURFACE-0001')
|
||
|
|
assert.equal(modulePackage.manifest.registrationClass, 'OFFICIAL_LIGHTHOUSE')
|
||
|
|
assert.equal(modulePackage.manifest.adapter, 'dynamic-language-world-surface-v1')
|
||
|
|
assert.deepEqual(modulePackage.manifest.permissions, ['REALITY_TIME_READ', 'PUBLIC_WEATHER_QUERY'])
|
||
|
|
assert.equal(modulePackage.payload.adapterConfig.routingPermissionOrFactMutation, false)
|
||
|
|
assert.equal(contract.visual_lock.climate_changes_routing_permission_or_fact, false)
|
||
|
|
assert.equal(contract.visual_lock.daily_sampling_domain_changes_open_domain, false)
|
||
|
|
})
|
||
|
|
|
||
|
|
test('climate query crosses the unique numbered route and fails closed before activation', () => {
|
||
|
|
const route = registry.operations.find((item) => item.alias === 'get_world_climate')
|
||
|
|
assert.equal(route.operation_number, 'HLP-NIPC-OP-0147')
|
||
|
|
assert.equal(route.module_number, 'HLP-NIPC-MOD-0031')
|
||
|
|
assert.equal(route.target_number, 'HLP-NIPC-TGT-0031')
|
||
|
|
assert.equal(route.admission, 'VERIFIED_HUMAN_ROUTE')
|
||
|
|
assert.match(rust, /require_active_module_adapter/)
|
||
|
|
assert.doesNotMatch(rust, /#\[tauri::command\]/)
|
||
|
|
assert.doesNotMatch(frontend, /from ['"]@tauri-apps\/api\/core['"]/)
|
||
|
|
})
|
||
|
|
|
||
|
|
test('official shell and five lake themes remain the only admitted layout', () => {
|
||
|
|
assert.equal(contract.visual_lock.layout, 'EXISTING_OFFICIAL_FIVE_LAKE_SHELL_UNCHANGED')
|
||
|
|
assert.equal(contract.visual_lock.themes.length, 5)
|
||
|
|
assert.equal(contract.donor_disposition.traditional_surface, 'REJECTED_DUPLICATE_SHELL_EIGHT_THEMES_AND_SIMULATED_STATUS')
|
||
|
|
assert.match(frontend, /夜湖星光/)
|
||
|
|
assert.match(frontend, /天气源暂不可用;湖面只使用北京时间,不生成假天气。/)
|
||
|
|
assert.match(styles, /\.world-climate-veil/)
|
||
|
|
assert.doesNotMatch(frontend, /语料库新增 217 条/)
|
||
|
|
assert.doesNotMatch(frontend, /频道活动 · 七日/)
|
||
|
|
})
|