hololake-system-architecture/product-source/hololake-native-desktop/scripts/native-composition-runtime.test.mjs

40 lines
2.2 KiB
JavaScript

import assert from 'node:assert/strict'
import fs from 'node:fs'
import test from 'node:test'
const read = (path) => fs.readFileSync(new URL('../' + path, import.meta.url), 'utf8')
const contract = JSON.parse(read('contracts/native-composition-runtime.json'))
const rust = read('src-tauri/src/native_composition.rs')
const knowledge = read('src-tauri/src/knowledge_base.rs')
const ui = read('src/modules/native-composition/index.tsx')
const lib = read('src-tauri/src/lib.rs')
test('native objects and composition recipes are bounded system contracts', () => {
assert.equal(contract.internal_object.schema, 'hololake.native-object/v1')
assert.equal(contract.internal_object.script_allowed, false)
assert.equal(contract.internal_object.html_allowed, false)
assert.equal(contract.recipe.registered_modules_only, true)
assert.equal(contract.recipe.directed_acyclic_graph_required, true)
assert.equal(contract.recipe.current_account_only, true)
assert.match(rust, /HOLOLAKE_COMPOSITION_MODULE_NOT_REGISTERED/)
assert.match(rust, /HOLOLAKE_COMPOSITION_PORT_TYPE_MISMATCH/)
assert.match(rust, /HOLOLAKE_COMPOSITION_CYCLE_REJECTED/)
})
test('the native core reads only the authenticated HoloLake knowledge snapshot', () => {
assert.match(knowledge, /snapshot_for_native_composition/)
assert.match(knowledge, /account_storage_root\(app, "knowledge-v1"\)/)
assert.match(rust, /snapshot_for_native_composition/)
assert.match(rust, /source_is_real_account_data: true/)
assert.match(lib, /native_composition::execute_knowledge_native_composition/)
})
test('one execution result can be rendered through every stage-one human projection', () => {
assert.deepEqual(contract.human_projection.views, ['DASHBOARD', 'COMPARISON', 'VERTICAL_BAR', 'CLASSIFICATION', 'TABLE'])
assert.equal(contract.human_projection.shares_one_execution_result, true)
assert.equal(contract.human_projection.owns_source_data, false)
assert.equal(contract.human_projection.direct_write_authority, false)
for (const label of ['仪表盘', '对比', '柱状图', '分类', '明细表']) assert.match(ui, new RegExp(label))
assert.match(ui, /projection\.nativeObject\.rows/)
assert.match(ui, /projection\?\.groups/)
})