diff --git a/src/fn/index.ts b/src/fn/index.ts index 94c0370e..20740cb1 100644 --- a/src/fn/index.ts +++ b/src/fn/index.ts @@ -81,3 +81,4 @@ export { sot343 } from "./sot343" export { m2host } from "./m2host" export { mountedpcbmodule } from "./mountedpcbmodule" export { to92l } from "./to92l" +export { pdip } from "./pdip" diff --git a/src/fn/pdip.ts b/src/fn/pdip.ts new file mode 100644 index 00000000..d4577460 --- /dev/null +++ b/src/fn/pdip.ts @@ -0,0 +1,9 @@ +import { dip } from "./dip" + +/** + * PDIP (Plastic Dual Inline Package) is an alias for DIP. + * The "P" simply indicates the plastic package material. + */ +export const pdip = (raw_params: any) => { + return dip(raw_params) +} diff --git a/src/footprinter.ts b/src/footprinter.ts index 6af68a44..8b0bcdc6 100644 --- a/src/footprinter.ts +++ b/src/footprinter.ts @@ -39,6 +39,9 @@ export type Footprinter = { dip: ( num_pins?: number, ) => FootprinterParamsBuilder<"w" | "p" | "id" | "od" | "wide" | "narrow"> + pdip: ( + num_pins?: number, + ) => FootprinterParamsBuilder<"w" | "p" | "id" | "od" | "wide" | "narrow"> cap: () => FootprinterParamsBuilder res: () => FootprinterParamsBuilder diode: () => FootprinterParamsBuilder diff --git a/tests/__snapshots__/pdip16.snap.svg b/tests/__snapshots__/pdip16.snap.svg new file mode 100644 index 00000000..4420cab0 --- /dev/null +++ b/tests/__snapshots__/pdip16.snap.svg @@ -0,0 +1 @@ +{REF}{pin1}{pin2}{pin3}{pin4}{pin5}{pin6}{pin7}{pin8}{pin9}{pin10}{pin11}{pin12}{pin13}{pin14}{pin15}{pin16} \ No newline at end of file diff --git a/tests/__snapshots__/pdip8.snap.svg b/tests/__snapshots__/pdip8.snap.svg new file mode 100644 index 00000000..6c2830c3 --- /dev/null +++ b/tests/__snapshots__/pdip8.snap.svg @@ -0,0 +1 @@ +{REF}{pin1}{pin2}{pin3}{pin4}{pin5}{pin6}{pin7}{pin8} \ No newline at end of file diff --git a/tests/__snapshots__/pdip8_builder.snap.svg b/tests/__snapshots__/pdip8_builder.snap.svg new file mode 100644 index 00000000..6c2830c3 --- /dev/null +++ b/tests/__snapshots__/pdip8_builder.snap.svg @@ -0,0 +1 @@ +{REF}{pin1}{pin2}{pin3}{pin4}{pin5}{pin6}{pin7}{pin8} \ No newline at end of file diff --git a/tests/pdip.test.ts b/tests/pdip.test.ts new file mode 100644 index 00000000..645eaa4c --- /dev/null +++ b/tests/pdip.test.ts @@ -0,0 +1,10 @@ +import { expect, test } from "bun:test" +import type { AnyCircuitElement } from "circuit-json" +import { convertCircuitJsonToPcbSvg } from "circuit-to-svg" +import { fp } from "../src/footprinter" + +test("pdip8", () => { + const circuitJson = fp.string("pdip8").circuitJson() as AnyCircuitElement[] + const svgContent = convertCircuitJsonToPcbSvg(circuitJson) + expect(svgContent).toMatchSvgSnapshot(import.meta.path, "pdip8") +}) diff --git a/tests/pdip2.test.ts b/tests/pdip2.test.ts new file mode 100644 index 00000000..921dc524 --- /dev/null +++ b/tests/pdip2.test.ts @@ -0,0 +1,9 @@ +import { expect, test } from "bun:test" +import type { AnyCircuitElement } from "circuit-json" +import { fp } from "../src/footprinter" + +test("pdip8 produces same circuit json as dip8", () => { + const pdipJson = fp.string("pdip8").circuitJson() as AnyCircuitElement[] + const dipJson = fp.string("dip8").circuitJson() as AnyCircuitElement[] + expect(pdipJson).toEqual(dipJson) +}) diff --git a/tests/pdip3.test.ts b/tests/pdip3.test.ts new file mode 100644 index 00000000..89604a1d --- /dev/null +++ b/tests/pdip3.test.ts @@ -0,0 +1,10 @@ +import { expect, test } from "bun:test" +import type { AnyCircuitElement } from "circuit-json" +import { convertCircuitJsonToPcbSvg } from "circuit-to-svg" +import { fp } from "../src/footprinter" + +test("pdip16", () => { + const circuitJson = fp.string("pdip16").circuitJson() as AnyCircuitElement[] + const svgContent = convertCircuitJsonToPcbSvg(circuitJson) + expect(svgContent).toMatchSvgSnapshot(import.meta.path, "pdip16") +}) diff --git a/tests/pdip4.test.ts b/tests/pdip4.test.ts new file mode 100644 index 00000000..5c98cab0 --- /dev/null +++ b/tests/pdip4.test.ts @@ -0,0 +1,10 @@ +import { expect, test } from "bun:test" +import type { AnyCircuitElement } from "circuit-json" +import { convertCircuitJsonToPcbSvg } from "circuit-to-svg" +import { fp } from "../src/footprinter" + +test("pdip8 with builder API", () => { + const circuitJson = fp().pdip(8).w(7.62).circuitJson() as AnyCircuitElement[] + const svgContent = convertCircuitJsonToPcbSvg(circuitJson) + expect(svgContent).toMatchSvgSnapshot(import.meta.path, "pdip8_builder") +})