47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package layout
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"printer.backend/internal/model"
|
|
)
|
|
|
|
func TestPack(t *testing.T) {
|
|
plate := model.Plate{
|
|
WidthMM: 300,
|
|
HeightMM: 400,
|
|
MarginTop: 10,
|
|
MarginRight: 10,
|
|
MarginBottom: 10,
|
|
MarginLeft: 10,
|
|
}
|
|
spec := model.ItemSpec{SizeMM: 80, BleedMM: 2, MarginMM: 5}
|
|
// footprint = 80+4+10 = 94, cell = 94+2 = 96
|
|
// printable 280x380 -> cols=2, rows=3 -> 6
|
|
preview := Pack(plate, spec, 2)
|
|
if preview.Columns != 2 {
|
|
t.Fatalf("columns: got %d want 2", preview.Columns)
|
|
}
|
|
if preview.Rows != 3 {
|
|
t.Fatalf("rows: got %d want 3", preview.Rows)
|
|
}
|
|
if preview.Count != 6 {
|
|
t.Fatalf("count: got %d want 6", preview.Count)
|
|
}
|
|
if len(preview.Positions) != 6 {
|
|
t.Fatalf("positions: got %d want 6", len(preview.Positions))
|
|
}
|
|
if preview.Positions[0].XMM != 10 || preview.Positions[0].YMM != 10 {
|
|
t.Fatalf("first position: got (%v,%v)", preview.Positions[0].XMM, preview.Positions[0].YMM)
|
|
}
|
|
}
|
|
|
|
func TestPackZeroCell(t *testing.T) {
|
|
plate := model.Plate{WidthMM: 10, HeightMM: 10}
|
|
spec := model.ItemSpec{SizeMM: 100}
|
|
preview := Pack(plate, spec, 0)
|
|
if preview.Count != 0 {
|
|
t.Fatalf("expected 0 items, got %d", preview.Count)
|
|
}
|
|
}
|