tricu

A lazy functional language based on Tree Calculus
Log | Files | Refs | README | LICENSE

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 });