~dricottone/image2ascii

ref: 97d2c5a7046841d4b0163bd7c39981196a677efa image2ascii/convert/convert_test.go -rw-r--r-- 2.8 KiB
97d2c5a7 — qeesung rename hasky to husky 6 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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)
			}
		})
	}
}