diff --git a/src/fn/index.ts b/src/fn/index.ts index 94c0370e..ead41691 100644 --- a/src/fn/index.ts +++ b/src/fn/index.ts @@ -1,4 +1,5 @@ export { dip } from "./dip" +export { spdip } from "./spdip" export { diode } from "./diode" export { cap } from "./cap" export { led } from "./led" diff --git a/src/fn/spdip.ts b/src/fn/spdip.ts new file mode 100644 index 00000000..a6efc5bb --- /dev/null +++ b/src/fn/spdip.ts @@ -0,0 +1,14 @@ +import { dip } from "./dip" + +export const spdip = (rawParams: { + spdip: true + num_pins: number + p?: number + id?: string | number + od?: string | number +}) => + dip({ + ...rawParams, + dip: true, + w: 15.24, + }) diff --git a/src/footprinter.ts b/src/footprinter.ts index fa51a3b4..447ca5cf 100644 --- a/src/footprinter.ts +++ b/src/footprinter.ts @@ -40,6 +40,7 @@ export type Footprinter = { dip: ( num_pins?: number, ) => FootprinterParamsBuilder<"w" | "p" | "id" | "od" | "wide" | "narrow"> + spdip: (num_pins?: number) => FootprinterParamsBuilder<"p" | "id" | "od"> cap: () => FootprinterParamsBuilder res: () => FootprinterParamsBuilder diode: () => FootprinterParamsBuilder diff --git a/tests/spdip.test.ts b/tests/spdip.test.ts new file mode 100644 index 00000000..da7fe800 --- /dev/null +++ b/tests/spdip.test.ts @@ -0,0 +1,23 @@ +import { expect, test } from "bun:test" +import type { AnyCircuitElement } from "circuit-json" +import { fp } from "../src/footprinter" + +test("spdip28 uses 0.6in row spacing", () => { + const json = fp.string("spdip28").json() + + expect(json).toMatchObject({ + fn: "spdip", + num_pins: 28, + p: 2.54, + w: 15.24, + }) +}) + +test("spdip28 creates 28 plated holes", () => { + const circuitJson = fp.string("spdip28").circuitJson() as AnyCircuitElement[] + const platedHoles = circuitJson.filter( + (elm) => elm.type === "pcb_plated_hole", + ) + + expect(platedHoles).toHaveLength(28) +})