github.com/soreil/imager@v0.0.0-20160723145247-62b1c8bc4e6b/file_test.go (about) 1 package imager 2 3 import ( 4 "fmt" 5 "image" 6 "io" 7 "io/ioutil" 8 "os" 9 "path/filepath" 10 "sync" 11 "testing" 12 "time" 13 ) 14 15 //Change inputDir to anything you feel like 16 var ( 17 // Regular quality preset 18 Normal = image.Point{X: 250, Y: 250} 19 20 // High quality preset 21 Sharp = image.Point{X: 500, Y: 500} 22 inputDir = "testdata/" 23 outputDir = os.TempDir() + string(os.PathSeparator) + fmt.Sprint(time.Now().UnixNano()) + string(os.PathSeparator) 24 ) 25 26 func TestDecode(t *testing.T) { 27 28 if _, err := os.Stat(outputDir); err != nil { 29 err := os.Mkdir(outputDir, os.ModeDir+0755) 30 if err != nil { 31 t.Fatal(err) 32 } 33 t.Log("Output directory: ", outputDir) 34 } 35 36 in, err := os.Open(inputDir) 37 if err != nil { 38 t.Fatal(err) 39 } 40 41 names, err := in.Readdirnames(0) 42 if err != nil { 43 t.Fatal(err) 44 } 45 46 if err := os.Chdir(inputDir); err != nil { 47 t.Fatal(err) 48 } 49 50 var wg sync.WaitGroup 51 for _, test := range names { 52 startingTime := time.Now() 53 wg.Add(1) 54 55 go func(test string) { 56 defer wg.Done() 57 if _, err := os.Stat(test); err != nil { 58 t.Fatal(err) 59 } 60 file := open(test, t) 61 defer file.Close() 62 thumb, outFormat, _, err := Thumbnail(file, Normal) 63 if err != nil { 64 t.Fatal(err, outFormat, test) 65 } 66 out, err := os.Create(outputDir + test + "." + outFormat) 67 if err != nil { 68 t.Fatal(err) 69 } 70 if _, err := io.Copy(out, thumb); err != nil { 71 t.Fatal(err) 72 } 73 t.Log(time.Now().Sub(startingTime), test) 74 }(test) 75 76 } 77 wg.Wait() 78 } 79 80 func TestThumbnails(t *testing.T) { 81 file := open("yuno.gif", t) 82 thumbs, format, _, err := Thumbnails(file, Sharp, Normal) 83 if format != "png" { 84 t.Fatalf("Wrong format: %s", format) 85 } 86 assertError(err, t) 87 largeThumb, err := ioutil.ReadAll(thumbs[0]) 88 assertError(err, t) 89 smallThumb, err := ioutil.ReadAll(thumbs[1]) 90 assertError(err, t) 91 if len(smallThumb) > len(largeThumb) { 92 t.Fatal("Thumbnail sizes don't match") 93 } 94 } 95 96 func open(path string, t *testing.T) *os.File { 97 file, err := os.Open(filepath.FromSlash(path)) 98 assertError(err, t) 99 return file 100 } 101 102 func assertError(err error, t *testing.T) { 103 if err != nil { 104 t.Fatal(err) 105 } 106 }