mirror of
https://github.com/Dadido3/Scanyonero.git
synced 2025-06-06 01:10:00 +00:00
- Rename to Scanyonero - Add FTP server that ingests TIFF, PNG, JPEG or PDF files - Add web interface to check and modify ingested files - Rework how ocrmypdf is invoked Basics are working, but the program is not in a usable state.
111 lines
3.6 KiB
Go
111 lines
3.6 KiB
Go
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)
|
|
}
|
|
}
|
|
|
|
})
|
|
}
|
|
}
|