Skip to content

Commit

Permalink
add convert test case
Browse files Browse the repository at this point in the history
  • Loading branch information
qeesung committed Oct 25, 2018
1 parent 06e9c87 commit 5faf638
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 20 deletions.
11 changes: 10 additions & 1 deletion convert/convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,15 @@ func Image2ASCIIString(image image.Image, options *Options) string {
return buffer.String()
}

// ImageFile2ASCIIMatrix converts a image file to ascii matrix
func ImageFile2ASCIIMatrix(imageFilename string, option *Options) []string {
img, err := OpenImageFile(imageFilename)
if err != nil {
log.Fatal("open image failed : " + err.Error())
}
return Image2ASCIIMatrix(img, option)
}

// ImageFile2ASCIIString converts a image file to ascii string
func ImageFile2ASCIIString(imageFilename string, option *Options) string {
img, err := OpenImageFile(imageFilename)
Expand All @@ -75,7 +84,7 @@ func ImageFile2ASCIIString(imageFilename string, option *Options) string {
func OpenImageFile(imageFilename string) (image.Image, error) {
f, err := os.Open(imageFilename)
if err != nil {
log.Fatal(err)
return nil, err
}

img, _, err := image.Decode(f)
Expand Down
94 changes: 94 additions & 0 deletions convert/convert_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
package convert

import (
"github.com/stretchr/testify/assert"
"reflect"
"testing"
)

// TestOpenImageFile test open different type image file
func TestOpenImageFile(t *testing.T) {
assertions := assert.New(t)
jpgFilename := "testdata/jpg_sample_image.jpg"
openedImage, err := OpenImageFile(jpgFilename)
assertions.True(err == nil, "jpg image format should be supported")
assertions.True(openedImage != nil, "opened jpg file should not be nil")

pngFilename := "testdata/png_sample_image.png"
openedImage, err = OpenImageFile(pngFilename)
assertions.True(err == nil, "png image format should be supported")
assertions.True(openedImage != nil, "opened jpg file should not be nil")

notSupported := "testdata/not_supported_sample_image"
openedImage, err = OpenImageFile(notSupported)
assertions.True(err != nil, "should not open unsupported image")
assertions.True(openedImage == nil, "not supported image should be nil")
}

// TestOpenNotExistsFile test open a not exists file
func TestOpenNotExistsFile(t *testing.T) {
assertions := assert.New(t)
_, err := OpenImageFile("not exists")
assertions.True(err != nil)
}

// TestImage2ASCIIMatrix test convert a image to ascii matrix
func TestImage2ASCIIMatrix(t *testing.T) {
imageTests := []struct {
imageFilename string
asciiMatrix []string
}{
{"testdata/3x3_black.png", []string{
" ", " ", " ", "\n",
" ", " ", " ", "\n",
" ", " ", " ", "\n"}},
{"testdata/3x3_white.png", []string{
"@", "@", "@", "\n",
"@", "@", "@", "\n",
"@", "@", "@", "\n"}},
{"testdata/8x3_multi_colors.png", []string{
"L", "0", "L", "t", "0", "t", "G", "0", "\n",
"i", "L", "t", "1", "L", "1", "f", "L", "\n",
"i", "f", "i", "i", ";", "L", ";", "t", "\n",
}},
}

for _, tt := range imageTests {
t.Run(tt.imageFilename, func(t *testing.T) {
convertOptions := defaultOptions
convertOptions.FitScreen = false
convertOptions.Colored = false

matrix := ImageFile2ASCIIMatrix(tt.imageFilename, &convertOptions)
if !reflect.DeepEqual(matrix, tt.asciiMatrix) {
t.Errorf("image %s convert expected to %+v, but get %+v",
tt.imageFilename, tt.asciiMatrix, matrix)
}
})
}
}

func TestImageFile2ASCIIString(t *testing.T) {
imageTests := []struct {
imageFilename string
asciiString string
}{
{"testdata/3x3_black.png", " \n \n \n"},
{"testdata/3x3_white.png", "@@@\n@@@\n@@@\n"},
{"testdata/8x3_multi_colors.png", "L0Lt0tG0\niLt1L1fL\nifii;L;t\n"},
}

for _, tt := range imageTests {
t.Run(tt.imageFilename, func(t *testing.T) {
convertOptions := defaultOptions
convertOptions.FitScreen = false
convertOptions.Colored = false

charString := ImageFile2ASCIIString(tt.imageFilename, &convertOptions)
if charString != tt.asciiString {
t.Errorf("image %s convert expected to %+v, but get %+v",
tt.imageFilename, tt.asciiString, charString)
}
})
}
}
19 changes: 0 additions & 19 deletions convert/resize_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,25 +23,6 @@ func TestGetTerminalScreenSize(t *testing.T) {
}
}

// TestOpenImageFile test open different type image file
func TestOpenImageFile(t *testing.T) {
assertions := assert.New(t)
jpgFilename := "testdata/jpg_sample_image.jpg"
openedImage, err := OpenImageFile(jpgFilename)
assertions.True(err == nil, "jpg image format should be supported")
assertions.True(openedImage != nil, "opened jpg file should not be nil")

pngFilename := "testdata/png_sample_image.png"
openedImage, err = OpenImageFile(pngFilename)
assertions.True(err == nil, "png image format should be supported")
assertions.True(openedImage != nil, "opened jpg file should not be nil")

notSupported := "testdata/not_supported_sample_image"
openedImage, err = OpenImageFile(notSupported)
assertions.True(err != nil, "should not open unsupported image")
assertions.True(openedImage == nil, "not supported image should be nil")
}

// TestScaleImageWithFixedHeight test scale the image by fixed height
func TestScaleImageWithFixedHeight(t *testing.T) {
assertions := assert.New(t)
Expand Down
Binary file added convert/testdata/3x3_black.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added convert/testdata/3x3_white.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added convert/testdata/8x3_multi_colors.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 5faf638

Please sign in to comment.