imrishabh18/corne-keyboard

The code defines and renders two surface-mount chip components with SMT pads, silkscreen outlines, and 3D CAD models (OBJ and STEP) for PCB assembly.

Version
2.0.21
License
unset
Stars
1

scripts/panel-replay.test.ts

import {test,expect} from 'bun:test'
import {replayReviewed} from '../lib/routing/replay-reviewed'
const ports=[{id:'pcb_port_0',x:0,y:0},{id:'pcb_port_1',x:.5,y:0}]
const routes=[{pcb_trace_id:'source_trace_0_0',source_trace_id:'source_trace_0',source_net_id:'source_net_0',subcircuit_id:'old',route:[{route_type:'wire',x:0,y:0,start_pcb_port_id:'pcb_port_0'},{route_type:'wire',x:.5,y:0,end_pcb_port_id:'pcb_port_1'}]}]
const input={outline:[{x:9,y:-1},{x:11,y:1}],connections:[{name:'source_trace_168',pointsToConnect:[{x:10,y:0,pcb_port_id:'pcb_port_324'},{x:10.5,y:0,pcb_port_id:'pcb_port_325'}]},{name:'source_net_1',pointsToConnect:[]}]}
test('panel replay translates copper and remaps board-local IDs without mutating saved routes',async()=>{
 const router=await replayReviewed(routes,ports)(input)
 const result:any=await new Promise(resolve=>{router.on('complete',resolve);router.start()})
 const t=result.traces[0];expect(t.pcb_trace_id).toBe('source_trace_168_0');expect(t.source_net_id).toBe('source_net_1');expect(t.subcircuit_id).toBeUndefined();expect(t.route[0].x).toBe(10);expect(t.route[1].end_pcb_port_id).toBe('pcb_port_325');expect(routes[0].route[0].x).toBe(0)
})
test('panel support does not accept moved component placements',async()=>{
 const changed=structuredClone(input);changed.connections[0].pointsToConnect[1].x+=.1
 expect(replayReviewed(routes,ports)(changed)).rejects.toThrow('no longer matches')
})
test('board via minima enlarge saved vias without shrinking larger vias or mutating routes',async()=>{
 const saved=[{...routes[0],route:[
  {route_type:'via',x:0,y:0,via_diameter:.3,via_hole_diameter:.2},
  {route_type:'via',x:.5,y:0,via_diameter:.6,via_hole_diameter:.3},
 ]}]
 const router=await replayReviewed(saved,ports)({...input,minViaPadDiameter:.45,minViaHoleDiameter:.2})
 const result:any=await new Promise(resolve=>{router.on('complete',resolve);router.start()})
 expect(result.traces[0].route.map((p:any)=>[p.via_diameter,p.via_hole_diameter])).toEqual([[.45,.2],[.6,.3]])
 expect(saved[0].route[0].via_diameter).toBe(.3)
})