From 3ccc0c4b75f7b3ac73ffe9df79d2c49255a766af Mon Sep 17 00:00:00 2001 From: seveibar Date: Mon, 9 Sep 2024 09:56:36 -0700 Subject: [PATCH] introduce snapshot tests --- .gitignore | 5 +- bun.lockb | Bin 315547 -> 338981 bytes bunfig.toml | 2 + package.json | 1 + .../silkscreen-with-hole-and-trace.snap.svg | 11 + tests/fixtures/preload.ts | 1 + tests/silkscreen-with-hole-and-trace.test.ts | 1071 +++++++++++++++++ 7 files changed, 1090 insertions(+), 1 deletion(-) create mode 100644 bunfig.toml create mode 100644 tests/__snapshots__/silkscreen-with-hole-and-trace.snap.svg create mode 100644 tests/fixtures/preload.ts create mode 100644 tests/silkscreen-with-hole-and-trace.test.ts diff --git a/.gitignore b/.gitignore index d330a9a..ff02295 100644 --- a/.gitignore +++ b/.gitignore @@ -175,4 +175,7 @@ dist .DS_Store .aider* -*storybook.log \ No newline at end of file +*storybook.log +.vscode +.vercel +*.diff.png \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 84815741e46d01757134e3af5560a394f2fe13ff..2acfaec4e6d8f592045b7cfa63fd3c3a615af808 100755 GIT binary patch delta 75179 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 F{|{6FNi+Ze delta 61241 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%0Ad9rO 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 N-aBnp(IN@e{tp`PH5mW^ diff --git a/bunfig.toml b/bunfig.toml new file mode 100644 index 0000000..25b636f --- /dev/null +++ b/bunfig.toml @@ -0,0 +1,2 @@ +[test] +preload = ["./tests/fixtures/preload.ts"] \ No newline at end of file diff --git a/package.json b/package.json index 16e6983..03a37d0 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "@storybook/react-vite": "^8.2.5", "@storybook/test": "^8.2.5", "@tscircuit/plop": "^0.0.10", + "bun-match-svg": "^0.0.3", "esbuild": "^0.20.2", "storybook": "^8.2.5", "tsup": "^8.0.2", diff --git a/tests/__snapshots__/silkscreen-with-hole-and-trace.snap.svg b/tests/__snapshots__/silkscreen-with-hole-and-trace.snap.svg new file mode 100644 index 0000000..f77187a --- /dev/null +++ b/tests/__snapshots__/silkscreen-with-hole-and-trace.snap.svg @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/tests/fixtures/preload.ts b/tests/fixtures/preload.ts new file mode 100644 index 0000000..ee67a60 --- /dev/null +++ b/tests/fixtures/preload.ts @@ -0,0 +1 @@ +import "bun-match-svg" diff --git a/tests/silkscreen-with-hole-and-trace.test.ts b/tests/silkscreen-with-hole-and-trace.test.ts new file mode 100644 index 0000000..93ffb1a --- /dev/null +++ b/tests/silkscreen-with-hole-and-trace.test.ts @@ -0,0 +1,1071 @@ +import { expect, test } from "bun:test" +import { circuitJsonToPcbSvg } from "src" + +const pcbSoup: any[] = [ + { + name: "pin1", + type: "source_port", + pin_number: 1, + port_hints: ["pin1", "1", "PWR"], + source_port_id: "source_port_0", + source_component_id: "source_component_0", + }, + { + name: "pin2", + type: "source_port", + pin_number: 2, + port_hints: ["pin2", "2"], + source_port_id: "source_port_1", + source_component_id: "source_component_0", + }, + { + name: "pin3", + type: "source_port", + pin_number: 3, + port_hints: ["pin3", "3"], + source_port_id: "source_port_2", + source_component_id: "source_component_0", + }, + { + name: "pin4", + type: "source_port", + pin_number: 4, + port_hints: ["pin4", "4"], + source_port_id: "source_port_3", + source_component_id: "source_component_0", + }, + { + name: "pin5", + type: "source_port", + pin_number: 5, + port_hints: ["pin5", "5"], + source_port_id: "source_port_4", + source_component_id: "source_component_0", + }, + { + name: "pin6", + type: "source_port", + pin_number: 6, + port_hints: ["pin6", "6"], + source_port_id: "source_port_5", + source_component_id: "source_component_0", + }, + { + name: "pin7", + type: "source_port", + pin_number: 7, + port_hints: ["pin7", "7"], + source_port_id: "source_port_6", + source_component_id: "source_component_0", + }, + { + name: "pin8", + type: "source_port", + pin_number: 8, + port_hints: ["pin8", "8", "GND"], + source_port_id: "source_port_7", + source_component_id: "source_component_0", + }, + { + name: "U1", + type: "source_component", + ftype: "simple_chip", + source_component_id: "source_component_0", + }, + { + name: "pin1", + type: "source_port", + pin_number: 1, + port_hints: ["-", "left", "pin1", "1"], + source_port_id: "source_port_8", + source_component_id: "source_component_1", + }, + { + name: "pin2", + type: "source_port", + pin_number: 2, + port_hints: ["+", "right", "pin2", "2"], + source_port_id: "source_port_9", + source_component_id: "source_component_1", + }, + { + name: "R1", + type: "source_component", + ftype: "simple_resistor", + resistance: 100000, + source_component_id: "source_component_1", + }, + { + name: "pin1", + type: "source_port", + pin_number: 1, + port_hints: ["left", "pin1", "1"], + source_port_id: "source_port_10", + source_component_id: "source_component_2", + }, + { + name: "pin2", + type: "source_port", + pin_number: 2, + port_hints: ["right", "pin2", "2"], + source_port_id: "source_port_11", + source_component_id: "source_component_2", + }, + { + name: "C1", + type: "source_component", + ftype: "simple_capacitor", + source_component_id: "source_component_2", + }, + { + name: "pin1", + type: "source_port", + pin_number: 1, + port_hints: ["pin1", "1"], + source_port_id: "source_port_12", + source_component_id: "source_component_3", + }, + { + name: "pin2", + type: "source_port", + pin_number: 2, + port_hints: ["pin2", "2"], + source_port_id: "source_port_13", + source_component_id: "source_component_3", + }, + { + name: "pin3", + type: "source_port", + pin_number: 3, + port_hints: ["pin3", "3"], + source_port_id: "source_port_14", + source_component_id: "source_component_3", + }, + { + name: "pin4", + type: "source_port", + pin_number: 4, + port_hints: ["pin4", "4"], + source_port_id: "source_port_15", + source_component_id: "source_component_3", + }, + { + name: "J1", + type: "source_component", + ftype: "simple_chip", + source_component_id: "source_component_3", + }, + { + type: "source_trace", + source_trace_id: "source_trace_0", + connected_source_net_ids: [], + connected_source_port_ids: ["source_port_12", "source_port_0"], + }, + { + type: "source_trace", + source_trace_id: "source_trace_1", + connected_source_net_ids: [], + connected_source_port_ids: ["source_port_13", "source_port_1"], + }, + { + type: "source_trace", + source_trace_id: "source_trace_2", + connected_source_net_ids: [], + connected_source_port_ids: ["source_port_14", "source_port_2"], + }, + { + type: "source_trace", + source_trace_id: "source_trace_3", + connected_source_net_ids: [], + connected_source_port_ids: ["source_port_15", "source_port_7"], + }, + { + size: { + width: 0.4, + height: 1, + }, + type: "schematic_component", + center: { + x: 0, + y: 0, + }, + rotation: 0, + pin_spacing: 0.2, + port_labels: { + pin1: "PWR", + pin8: "GND", + }, + source_component_id: "source_component_0", + schematic_component_id: "schematic_component_0", + }, + { + size: { + width: 1, + height: 0.55, + }, + type: "schematic_component", + center: { + x: 0, + y: 0, + }, + rotation: 0, + symbol_name: "boxresistor_horz", + source_component_id: "source_component_1", + schematic_component_id: "schematic_component_1", + }, + { + size: { + width: 0.4, + height: 1, + }, + type: "schematic_component", + center: { + x: 0, + y: 0, + }, + rotation: 0, + pin_spacing: 0.2, + source_component_id: "source_component_3", + schematic_component_id: "schematic_component_2", + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_0", + facing_direction: "up", + schematic_port_id: "schematic_port_0", + schematic_component_id: "schematic_component_0", + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_1", + facing_direction: "up", + schematic_port_id: "schematic_port_1", + schematic_component_id: "schematic_component_0", + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_2", + facing_direction: "up", + schematic_port_id: "schematic_port_2", + schematic_component_id: "schematic_component_0", + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_3", + facing_direction: "up", + schematic_port_id: "schematic_port_3", + schematic_component_id: "schematic_component_0", + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_4", + facing_direction: "up", + schematic_port_id: "schematic_port_4", + schematic_component_id: "schematic_component_0", + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_5", + facing_direction: "up", + schematic_port_id: "schematic_port_5", + schematic_component_id: "schematic_component_0", + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_6", + facing_direction: "up", + schematic_port_id: "schematic_port_6", + schematic_component_id: "schematic_component_0", + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_7", + facing_direction: "up", + schematic_port_id: "schematic_port_7", + schematic_component_id: "schematic_component_0", + }, + { + type: "schematic_port", + center: { + x: -0.5, + y: 0, + }, + source_port_id: "source_port_8", + facing_direction: "left", + schematic_port_id: "schematic_port_8", + schematic_component_id: "schematic_component_1", + }, + { + type: "schematic_port", + center: { + x: 0.5, + y: 0, + }, + source_port_id: "source_port_9", + facing_direction: "right", + schematic_port_id: "schematic_port_9", + schematic_component_id: "schematic_component_1", + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_10", + facing_direction: "up", + schematic_port_id: "schematic_port_10", + schematic_component_id: null, + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_11", + facing_direction: "up", + schematic_port_id: "schematic_port_11", + schematic_component_id: null, + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_12", + facing_direction: "up", + schematic_port_id: "schematic_port_12", + schematic_component_id: "schematic_component_2", + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_13", + facing_direction: "up", + schematic_port_id: "schematic_port_13", + schematic_component_id: "schematic_component_2", + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_14", + facing_direction: "up", + schematic_port_id: "schematic_port_14", + schematic_component_id: "schematic_component_2", + }, + { + type: "schematic_port", + center: { + x: 0, + y: 0, + }, + source_port_id: "source_port_15", + facing_direction: "up", + schematic_port_id: "schematic_port_15", + schematic_component_id: "schematic_component_2", + }, + { + type: "schematic_trace", + edges: [], + source_trace_id: "source_trace_0", + schematic_trace_id: "schematic_trace_0", + }, + { + type: "schematic_trace", + edges: [], + source_trace_id: "source_trace_1", + schematic_trace_id: "schematic_trace_1", + }, + { + type: "schematic_trace", + edges: [], + source_trace_id: "source_trace_2", + schematic_trace_id: "schematic_trace_2", + }, + { + type: "schematic_trace", + edges: [], + source_trace_id: "source_trace_3", + schematic_trace_id: "schematic_trace_3", + }, + { + type: "pcb_component", + layer: "top", + width: 2, + center: { + x: 0, + y: 0, + }, + height: 3, + rotation: 0, + pcb_component_id: "pcb_component_0", + source_component_id: "source_component_0", + }, + { + type: "pcb_component", + layer: "top", + width: 0, + center: { + x: 4, + y: 0, + }, + height: 0, + rotation: 90, + pcb_component_id: "pcb_component_1", + source_component_id: "source_component_1", + }, + { + type: "pcb_component", + layer: "top", + width: 0, + center: { + x: -5, + y: 0, + }, + height: 0, + rotation: 90, + pcb_component_id: "pcb_component_2", + source_component_id: "source_component_2", + }, + { + type: "pcb_component", + layer: "top", + width: 2, + center: { + x: 0, + y: -4, + }, + height: 3, + rotation: 90, + pcb_component_id: "pcb_component_3", + source_component_id: "source_component_3", + }, + { + type: "pcb_board", + width: 10, + center: { + x: 0, + y: 0, + }, + height: 10, + pcb_board_id: "pcb_board_0", + }, + { + x: -2.15, + y: 1.905, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_0", + source_port_id: "source_port_0", + pcb_component_id: "pcb_component_0", + }, + { + x: -2.15, + y: 0.635, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_1", + source_port_id: "source_port_1", + pcb_component_id: "pcb_component_0", + }, + { + x: -2.15, + y: -0.635, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_2", + source_port_id: "source_port_2", + pcb_component_id: "pcb_component_0", + }, + { + x: -2.15, + y: -1.905, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_3", + source_port_id: "source_port_3", + pcb_component_id: "pcb_component_0", + }, + { + x: 2.15, + y: -1.905, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_4", + source_port_id: "source_port_4", + pcb_component_id: "pcb_component_0", + }, + { + x: 2.15, + y: -0.635, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_5", + source_port_id: "source_port_5", + pcb_component_id: "pcb_component_0", + }, + { + x: 2.15, + y: 0.635, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_6", + source_port_id: "source_port_6", + pcb_component_id: "pcb_component_0", + }, + { + x: 2.15, + y: 1.905, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_7", + source_port_id: "source_port_7", + pcb_component_id: "pcb_component_0", + }, + { + x: 3.5, + y: 0, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_8", + source_port_id: "source_port_8", + pcb_component_id: "pcb_component_1", + }, + { + x: 4.5, + y: 0, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_9", + source_port_id: "source_port_9", + pcb_component_id: "pcb_component_1", + }, + { + x: -5.85, + y: 0, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_10", + source_port_id: "source_port_10", + pcb_component_id: "pcb_component_2", + }, + { + x: -4.15, + y: 0, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_11", + source_port_id: "source_port_11", + pcb_component_id: "pcb_component_2", + }, + { + x: -3.8099998780800037, + y: -4, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_12", + source_port_id: "source_port_12", + pcb_component_id: "pcb_component_3", + }, + { + x: -1.269999959360001, + y: -4, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_13", + source_port_id: "source_port_13", + pcb_component_id: "pcb_component_3", + }, + { + x: 1.2699999593600015, + y: -4, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_14", + source_port_id: "source_port_14", + pcb_component_id: "pcb_component_3", + }, + { + x: 3.8099998780800037, + y: -4, + type: "pcb_port", + layers: ["top"], + pcb_port_id: "pcb_port_15", + source_port_id: "source_port_15", + pcb_component_id: "pcb_component_3", + }, + { + x: -2.15, + y: 1.905, + type: "pcb_smtpad", + layer: "top", + shape: "rect", + width: 1, + height: 0.6, + port_hints: ["1"], + pcb_port_id: "pcb_port_0", + pcb_smtpad_id: "pcb_smtpad_0", + pcb_component_id: "pcb_component_0", + }, + { + x: -2.15, + y: 0.635, + type: "pcb_smtpad", + layer: "top", + shape: "rect", + width: 1, + height: 0.6, + port_hints: ["2"], + pcb_port_id: "pcb_port_1", + pcb_smtpad_id: "pcb_smtpad_1", + pcb_component_id: "pcb_component_0", + }, + { + x: -2.15, + y: -0.635, + type: "pcb_smtpad", + layer: "top", + shape: "rect", + width: 1, + height: 0.6, + port_hints: ["3"], + pcb_port_id: "pcb_port_2", + pcb_smtpad_id: "pcb_smtpad_2", + pcb_component_id: "pcb_component_0", + }, + { + x: -2.15, + y: -1.905, + type: "pcb_smtpad", + layer: "top", + shape: "rect", + width: 1, + height: 0.6, + port_hints: ["4"], + pcb_port_id: "pcb_port_3", + pcb_smtpad_id: "pcb_smtpad_3", + pcb_component_id: "pcb_component_0", + }, + { + x: 2.15, + y: -1.905, + type: "pcb_smtpad", + layer: "top", + shape: "rect", + width: 1, + height: 0.6, + port_hints: ["5"], + pcb_port_id: "pcb_port_4", + pcb_smtpad_id: "pcb_smtpad_4", + pcb_component_id: "pcb_component_0", + }, + { + x: 2.15, + y: -0.635, + type: "pcb_smtpad", + layer: "top", + shape: "rect", + width: 1, + height: 0.6, + port_hints: ["6"], + pcb_port_id: "pcb_port_5", + pcb_smtpad_id: "pcb_smtpad_5", + pcb_component_id: "pcb_component_0", + }, + { + x: 2.15, + y: 0.635, + type: "pcb_smtpad", + layer: "top", + shape: "rect", + width: 1, + height: 0.6, + port_hints: ["7"], + pcb_port_id: "pcb_port_6", + pcb_smtpad_id: "pcb_smtpad_6", + pcb_component_id: "pcb_component_0", + }, + { + x: 2.15, + y: 1.905, + type: "pcb_smtpad", + layer: "top", + shape: "rect", + width: 1, + height: 0.6, + port_hints: ["8"], + pcb_port_id: "pcb_port_7", + pcb_smtpad_id: "pcb_smtpad_7", + pcb_component_id: "pcb_component_0", + }, + { + type: "pcb_silkscreen_path", + layer: "top", + route: [ + { + x: -1.5499999999999998, + y: -2.205, + }, + { + x: -1.5499999999999998, + y: 2.205, + }, + { + x: -0.5166666666666666, + y: 2.205, + }, + { + x: -0.47733775846416476, + y: 2.0072802266113703, + }, + { + x: -0.3653385036130495, + y: 1.8396614963869504, + }, + { + x: -0.19771977338862967, + y: 1.7276622415358354, + }, + { + x: 3.1636708977973285e-17, + y: 1.6883333333333335, + }, + { + x: 0.1977197733886297, + y: 1.7276622415358354, + }, + { + x: 0.3653385036130496, + y: 1.8396614963869506, + }, + { + x: 0.47733775846416476, + y: 2.0072802266113703, + }, + { + x: 0.5166666666666666, + y: 2.205, + }, + { + x: 1.5499999999999998, + y: 2.205, + }, + { + x: 1.5499999999999998, + y: -2.205, + }, + { + x: -1.5499999999999998, + y: -2.205, + }, + ], + stroke_width: 0.1, + pcb_component_id: "pcb_component_0", + pcb_silkscreen_path_id: "pcb_silkscreen_path_0", + }, + { + x: 3.5, + y: 0, + type: "pcb_smtpad", + layer: "top", + shape: "rect", + width: 0.6000000000000001, + height: 0.6000000000000001, + port_hints: ["1", "left"], + pcb_port_id: "pcb_port_8", + pcb_smtpad_id: "pcb_smtpad_8", + pcb_component_id: "pcb_component_1", + }, + { + x: 4.5, + y: 0, + type: "pcb_smtpad", + layer: "top", + shape: "rect", + width: 0.6000000000000001, + height: 0.6000000000000001, + port_hints: ["2", "right"], + pcb_port_id: "pcb_port_9", + pcb_smtpad_id: "pcb_smtpad_9", + pcb_component_id: "pcb_component_1", + }, + { + x: -5.85, + y: 0, + type: "pcb_smtpad", + layer: "top", + shape: "rect", + width: 1, + height: 1, + port_hints: ["1", "left"], + pcb_port_id: "pcb_port_10", + pcb_smtpad_id: "pcb_smtpad_10", + pcb_component_id: "pcb_component_2", + }, + { + x: -4.15, + y: 0, + type: "pcb_smtpad", + layer: "top", + shape: "rect", + width: 1, + height: 1, + port_hints: ["2", "right"], + pcb_port_id: "pcb_port_11", + pcb_smtpad_id: "pcb_smtpad_11", + pcb_component_id: "pcb_component_2", + }, + { + x: -3.8099998780800037, + y: -4, + type: "pcb_plated_hole", + shape: "circle", + layers: ["top", "bottom"], + port_hints: ["1"], + pcb_port_id: "pcb_port_12", + hole_diameter: 1, + outer_diameter: 1.2, + pcb_component_id: "pcb_component_3", + pcb_plated_hole_id: "pcb_plated_hole_0", + }, + { + x: -1.269999959360001, + y: -4, + type: "pcb_plated_hole", + shape: "circle", + layers: ["top", "bottom"], + port_hints: ["2"], + pcb_port_id: "pcb_port_13", + hole_diameter: 1, + outer_diameter: 1.2, + pcb_component_id: "pcb_component_3", + pcb_plated_hole_id: "pcb_plated_hole_1", + }, + { + x: 1.2699999593600015, + y: -4, + type: "pcb_plated_hole", + shape: "circle", + layers: ["top", "bottom"], + port_hints: ["3"], + pcb_port_id: "pcb_port_14", + hole_diameter: 1, + outer_diameter: 1.2, + pcb_component_id: "pcb_component_3", + pcb_plated_hole_id: "pcb_plated_hole_2", + }, + { + x: 3.8099998780800037, + y: -4, + type: "pcb_plated_hole", + shape: "circle", + layers: ["top", "bottom"], + port_hints: ["4"], + pcb_port_id: "pcb_port_15", + hole_diameter: 1, + outer_diameter: 1.2, + pcb_component_id: "pcb_component_3", + pcb_plated_hole_id: "pcb_plated_hole_3", + }, + { + type: "pcb_trace", + route: [ + { + x: -3.8099998780800037, + y: -4, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: -3.8099998780800037, + y: -0.6499999999999999, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: -3.5000000000000004, + y: -0.6499999999999999, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: -3.5000000000000004, + y: 1.9049999999999998, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: -2.15, + y: 1.9049999999999998, + layer: "top", + width: 0.1, + route_type: "wire", + }, + ], + pcb_trace_id: "pcb_trace_for_source_trace_0", + }, + { + type: "pcb_trace", + route: [ + { + x: -1.269999959360001, + y: -4, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: -1.269999959360001, + y: 0.6349999999999998, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: -2.15, + y: 0.6349999999999998, + layer: "top", + width: 0.1, + route_type: "wire", + }, + ], + pcb_trace_id: "pcb_trace_for_source_trace_1", + }, + { + type: "pcb_trace", + route: [ + { + x: 1.2699999593600015, + y: -4, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: -0.5199999593600011, + y: -4, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: -0.5199999593600011, + y: -4.75, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: -2.15, + y: -4.75, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: -2.15, + y: -2.355, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: -1.5, + y: -2.355, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: -1.5, + y: -0.635, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: -2.15, + y: -0.635, + layer: "top", + width: 0.1, + route_type: "wire", + }, + ], + pcb_trace_id: "pcb_trace_for_source_trace_2", + }, + { + type: "pcb_trace", + route: [ + { + x: 3.8099998780800037, + y: -4, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: 3.8099998780800037, + y: 1.9050000000000002, + layer: "top", + width: 0.1, + route_type: "wire", + }, + { + x: 2.15, + y: 1.9050000000000002, + layer: "top", + width: 0.1, + route_type: "wire", + }, + ], + pcb_trace_id: "pcb_trace_for_source_trace_3", + }, +] + +test("Silkscreen with PCB Plated Hole", () => { + expect(circuitJsonToPcbSvg(pcbSoup)).toMatchSvgSnapshot(import.meta.path) +})