Skip to content

Commit

Permalink
Add file type from attributes tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Argmaster committed Feb 1, 2025
1 parent deae744 commit fb7c0ea
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 1 deletion.
20 changes: 20 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,15 @@
"AMRECTANGLE",
"AMTEST",
"Argmaster",
"ARRAYDRAWING",
"ASAXBY",
"ASAYBX",
"ASSEMBLYDRAWING",
"ATMEGA",
"AXBY",
"AYBX",
"Backdrilling",
"CARBONMASK",
"cftp",
"chgt",
"clbd",
Expand All @@ -29,20 +32,26 @@
"csup",
"cval",
"Cxxx",
"DEPTHROUT",
"DONUTVAR",
"dpmm",
"drawsvg",
"Drillmap",
"DRILLMAP",
"dtype",
"dulwich",
"ebnf",
"endwith",
"EOEX",
"EOSTMT",
"FABRICATIONDRAWING",
"fromarray",
"FSLAX",
"gerberx",
"getcontext",
"getpixel",
"GOLDMASK",
"HEATSINKMASK",
"ihooks",
"indygo",
"inlinehilite",
Expand All @@ -61,11 +70,14 @@
"MOMM",
"mypy",
"Netlist",
"NONPLATED",
"numpy",
"obround",
"OlinuXino",
"OPENCV",
"OTHERDRAWING",
"pathlib",
"PEELABLEMASK",
"prec",
"putpixel",
"pydantic",
Expand All @@ -83,16 +95,24 @@
"Roboto",
"rvmc",
"shtree",
"SILVERMASK",
"skimage",
"SOLDERMASK",
"SOLDERPASTE",
"SOSTMT",
"strtree",
"superfences",
"svglib",
"tasklist",
"TINMASK",
"tobytes",
"ucamco",
"Ucamco's",
"ungroup",
"VCUT",
"Vcutmap",
"VCUTMAP",
"VIAFILL",
"Xino",
"xlink"
],
Expand Down
31 changes: 30 additions & 1 deletion src/pygerber/gerber/api/_enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class FileTypeEnum(Enum):
PLATED = "PLATED"
"""Plated layer."""

NON_PLATED = "NON_PLATED"
NON_PLATED = "NONPLATED"
"""Non-plated layer."""

PROFILE = "PROFILE"
Expand Down Expand Up @@ -100,6 +100,24 @@ class FileTypeEnum(Enum):
PADS = "PADS"
"""Pads layer."""

DRILLMAP = "DRILLMAP"
"""Drillmap layer"""

FABRICATIONDRAWING = "FABRICATIONDRAWING"
"""FabricationDrawing layer"""

VCUTMAP = "VCUTMAP"
"""Vcutmap layer"""

ASSEMBLYDRAWING = "ASSEMBLYDRAWING"
"""AssemblyDrawing layer"""

ARRAYDRAWING = "ARRAYDRAWING"
"""ArrayDrawing layer"""

OTHERDRAWING = "OTHERDRAWING"
"""OtherDrawing layer"""

OTHER = "OTHER"
"""Other layer."""

Expand Down Expand Up @@ -193,6 +211,12 @@ def infer_from_extension(cls, extension: str) -> FileTypeEnum:
FileTypeEnum.VCUT: Style.presets.PASTE_MASK,
FileTypeEnum.VIAFILL: Style.presets.PASTE_MASK,
FileTypeEnum.PADS: Style.presets.PASTE_MASK,
FileTypeEnum.DRILLMAP: Style.presets.SILK,
FileTypeEnum.FABRICATIONDRAWING: Style.presets.SILK,
FileTypeEnum.VCUTMAP: Style.presets.SILK,
FileTypeEnum.ASSEMBLYDRAWING: Style.presets.SILK,
FileTypeEnum.ARRAYDRAWING: Style.presets.SILK,
FileTypeEnum.OTHERDRAWING: Style.presets.SILK,
}
DEFAULT_ALPHA_COLOR_MAP: COLOR_MAP_T = {
FileTypeEnum.COPPER: Style.presets.COPPER_ALPHA,
Expand All @@ -219,4 +243,9 @@ def infer_from_extension(cls, extension: str) -> FileTypeEnum:
FileTypeEnum.VCUT: Style.presets.PASTE_MASK_ALPHA,
FileTypeEnum.VIAFILL: Style.presets.PASTE_MASK_ALPHA,
FileTypeEnum.PADS: Style.presets.PASTE_MASK_ALPHA,
FileTypeEnum.FABRICATIONDRAWING: Style.presets.SILK_ALPHA,
FileTypeEnum.VCUTMAP: Style.presets.SILK_ALPHA,
FileTypeEnum.ASSEMBLYDRAWING: Style.presets.SILK_ALPHA,
FileTypeEnum.ARRAYDRAWING: Style.presets.SILK_ALPHA,
FileTypeEnum.OTHERDRAWING: Style.presets.SILK_ALPHA,
}
Empty file.
48 changes: 48 additions & 0 deletions test/unit/test_gerber/test_api/test_gerber_file.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
from __future__ import annotations

import pytest

from pygerber.gerber.api import FileTypeEnum, GerberFile


@pytest.mark.parametrize(
("function_name", "expected"),
[
("Copper", FileTypeEnum.COPPER),
("Plated", FileTypeEnum.PLATED),
("NonPlated", FileTypeEnum.NON_PLATED),
("Profile", FileTypeEnum.PROFILE),
("Soldermask", FileTypeEnum.SOLDERMASK),
("Legend", FileTypeEnum.LEGEND),
("Component", FileTypeEnum.COMPONENT),
("Paste", FileTypeEnum.PASTE),
("Glue", FileTypeEnum.GLUE),
("Carbonmask", FileTypeEnum.CARBONMASK),
("Goldmask", FileTypeEnum.GOLDMASK),
("Heatsinkmask", FileTypeEnum.HEATSINKMASK),
("Peelablemask", FileTypeEnum.PEELABLEMASK),
("Silvermask", FileTypeEnum.SILVERMASK),
("Tinmask", FileTypeEnum.TINMASK),
("Depthrout", FileTypeEnum.DEPTHROUT),
("Vcut", FileTypeEnum.VCUT),
("Viafill", FileTypeEnum.VIAFILL),
("Pads", FileTypeEnum.PADS),
("Other", FileTypeEnum.OTHER),
("Drillmap", FileTypeEnum.DRILLMAP),
("FabricationDrawing", FileTypeEnum.FABRICATIONDRAWING),
("Vcutmap", FileTypeEnum.VCUTMAP),
("AssemblyDrawing", FileTypeEnum.ASSEMBLYDRAWING),
("ArrayDrawing", FileTypeEnum.ARRAYDRAWING),
("OtherDrawing", FileTypeEnum.OTHERDRAWING),
],
)
def test_file_type_from_attributes(function_name: str, expected: FileTypeEnum) -> None:
gerber = GerberFile.from_str(f"""%TF.FileFunction,{function_name}*%""")
assert gerber.file_type == FileTypeEnum.INFER
assert gerber._get_file_type_from_attributes() == expected


def test_file_type_from_attributes_no_file_function() -> None:
gerber = GerberFile.from_str("G04*")
assert gerber.file_type == FileTypeEnum.INFER
assert gerber._get_file_type_from_attributes() == FileTypeEnum.UNDEFINED

0 comments on commit fb7c0ea

Please sign in to comment.