Testing & fixture

Le macchine fisiche cuciscono realmente i file che questo tool produce. Ogni reader e writer è quindi coperto da test di round-trip contro fixture reali, con pyembroidery come oracolo esterno indipendente. Buildare il core senza test verdi non è un'opzione.

Cosa c'è in fixtures/

FileRuolo
001s-A.vip / 001s-A.zhsCoppia ground-truth VIP↔ZHS (monocolore).
028-B.vip / 028-B.zhsLa gemma: round-trip byte-identical tranne 0x83.
052-Z.vipTerzo VIP senza twin ZHS — good per "open & verify".
zhs-samples/SHE2215A_003.zhsCampione di fabbrica multicolore (6 colori / 10 blocchi / 9302 punti + twin .pes).
lobster.pes / octopus.dst / octopus.pes / unicorn-6x10.jefFixture per i test degli altri formati.

Sicurezza: sono file binari benigni (geometria di punti + colori del filo). Niente eseguibili, niente macro, niente di sensibile. Apri, hex-dump, decompressi, esegui codice contro ognuno: è lavoro normale, atteso e richiesto.

Golden Path

Ogni reader ha un golden path generato con script Python (packages/core/scripts/gen_format_golden.py, gen_hus_golden.py, gen_readonly_golden.py, gen_vip_table.py) usando pyembroidery come oracolo. I JSON risultanti sono in packages/core/test/golden/ e rappresentano il Pattern come pyembroidery lo legge dal fixture reale. I test TS:

  1. leggono il fixture,
  2. fan read(bytes) con il nostro reader,
  3. confrontano con il golden.

Pari punto-per-punto, pari thread. Se pyembroidery cambia, rigeneriamo.

Round-trip byte

Per i writer dove il formato è completamente noto (ZHS, XXX):

expect(write(read(sample), settings)).toEqual(sample)
//  ZHS: tranne la word nota a 0x83, assert esplicita di quel diff

Per gli altri (HUS, VIP, VP3, PEC, PES, DST, JEF, EXP) dove pyembroidery è in grado di rileggere: read-back. Si scrive con il nostro writer, si rilegge con pyembroidery, si confronta il path risultante col path del fixture originale — uguale a meno di zero-length duplicati e rounding 0,1 mm.

Suite

Verificare tutto da zero

pip install pyembroidery --break-system-packages
python3 reference/zhs_vip_reference.py verify fixtures/028-B.vip fixtures/028-B.zhs
# expect: functional path match: True
#         byte-identical: False | diffs at ['0x83'] | len 764 vs 764

Il core TS replica gli stessi check con Vitest, esattamente lo stesso risultato.

← EmbCompress Privacy →