io-version-boundary.test.mjs (791B)
1 import test from 'node:test'; 2 import assert from 'node:assert/strict'; 3 import {Graph} from '../dist/graph.js'; 4 import {natural,text} from '../dist/codecs.js'; 5 import {envelope} from '../dist/io-profile.js'; 6 7 test('current framing rejects v1 before observing action and never guesses a protocol',()=>{ 8 const g=new Graph(),poison=g.app(g.leaf,g.leaf),observe=g.observe.bind(g); 9 g.observe=id=>{if(id===poison)throw Error('action forced');return observe(id);}; 10 for(const version of [0n,1n,3n,99n]){ 11 const program=g.fork(text(g,'tricuIO'),g.fork(natural(g,version),poison)); 12 assert.throws(()=>envelope(g,program),/Unsupported tricuIO version/); 13 } 14 const program=g.fork(text(g,'tricuIO'),g.fork(natural(g,2n),poison)); 15 assert.deepEqual(envelope(g,program),{version:2,action:poison}); 16 });