package document import ( "Scanyonero/unit" "path/filepath" "regexp" "testing" ) func TestIngestor_Ingest(t *testing.T) { t.SkipNow() tests := []struct { name string file File want []Page wantErr bool }{ {"300 DPI Feed JPG", MustLoadFile(filepath.Join("..", "test-documents", "300 DPI Feeder.jpg")), []Page{{ Dimensions: unit.PageDimensions[unit.Millimeter]{ ScanSize: unit.Rectangle[unit.Millimeter]{ Size: unit.Vec2[unit.Millimeter]{X: 209.97, Y: 288.713}}}, }}, false}, {"300 DPI Feed PDF", MustLoadFile(filepath.Join("..", "test-documents", "300 DPI Feeder.pdf")), []Page{{ Dimensions: unit.PageDimensions[unit.Millimeter]{ ScanSize: unit.Rectangle[unit.Millimeter]{ Size: unit.Vec2[unit.Millimeter]{X: 209.8, Y: 288.5}}}, }}, false}, {"300 DPI Flat JPG", MustLoadFile(filepath.Join("..", "test-documents", "300 DPI Flatbed.jpg")), []Page{{ Dimensions: unit.PageDimensions[unit.Millimeter]{ ScanSize: unit.Rectangle[unit.Millimeter]{ Size: unit.Vec2[unit.Millimeter]{X: 203.2, Y: 290.83}}}, }}, false}, {"300 DPI Flat PDF", MustLoadFile(filepath.Join("..", "test-documents", "300 DPI Flatbed.pdf")), []Page{{ Dimensions: unit.PageDimensions[unit.Millimeter]{ ScanSize: unit.Rectangle[unit.Millimeter]{ Size: unit.Vec2[unit.Millimeter]{X: 203.2, Y: 290.8}}}, }}, false}, {"600 DPI Feed JPG", MustLoadFile(filepath.Join("..", "test-documents", "600 DPI Feeder.jpg")), []Page{{ Dimensions: unit.PageDimensions[unit.Millimeter]{ ScanSize: unit.Rectangle[unit.Millimeter]{ Size: unit.Vec2[unit.Millimeter]{X: 209.97, Y: 288.671}}}, }}, false}, {"600 DPI Feed PDF", MustLoadFile(filepath.Join("..", "test-documents", "600 DPI Feeder.pdf")), []Page{{ Dimensions: unit.PageDimensions[unit.Millimeter]{ ScanSize: unit.Rectangle[unit.Millimeter]{ Size: unit.Vec2[unit.Millimeter]{X: 209.8, Y: 288.0}}}, }}, false}, {"600 DPI Flat JPG", MustLoadFile(filepath.Join("..", "test-documents", "600 DPI Flatbed.jpg")), []Page{{ Dimensions: unit.PageDimensions[unit.Millimeter]{ ScanSize: unit.Rectangle[unit.Millimeter]{ Size: unit.Vec2[unit.Millimeter]{X: 203.88, Y: 290.872}}}, }}, false}, {"600 DPI Flat PDF", MustLoadFile(filepath.Join("..", "test-documents", "600 DPI Flatbed.pdf")), []Page{{ Dimensions: unit.PageDimensions[unit.Millimeter]{ ScanSize: unit.Rectangle[unit.Millimeter]{ Size: unit.Vec2[unit.Millimeter]{X: 203.7, Y: 290.8}}}, }}, false}, } ingestor := Ingestor{ DefaultDPI: unit.PerInch(150), Rules: []IngestorRule{{ Match: struct { Name *regexp.Regexp XPixels *int YPixels *int }{ Name: regexp.MustCompile(`^.*\.pdf$`), }, Action: struct { MediumWidth *unit.Millimeter MediumHeight *unit.Millimeter ScanOffsetX *unit.Millimeter ScanOffsetY *unit.Millimeter }{ MediumWidth: &([]unit.Millimeter{100}[0]), }, }}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got, err := ingestor.Ingest(tt.file) if (err != nil) != tt.wantErr { t.Errorf("Ingestor.Ingest() error = %v, wantErr %v.", err, tt.wantErr) return } if len(got) != len(tt.want) { t.Errorf("Got %d pages, but want %d pages.", len(got), len(tt.want)) return } for i, gotPage := range got { wantPage := tt.want[i] if !gotPage.Dimensions.ScanSize.Size.EqualWithPrecision(wantPage.Dimensions.ScanSize.Size, 0.1) { t.Errorf("Resulting ScanSize is %v, want %v.", gotPage.Dimensions.ScanSize.Size, wantPage.Dimensions.ScanSize.Size) } } }) } }