blob: 388fda50ad44b307b3453ee27e07878a6ac259ca [file] [log] [blame]
package main
import (
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
"go.skia.org/infra/go/testutils"
"go.skia.org/infra/gold-client/go/imgmatching"
)
func TestMatch_Fuzzy_NonZeroPixelDeltaThreshold_ImagesAreWithinTolerance_ExitCodeZero(t *testing.T) {
td := testutils.TestDataDir(t)
// Call imgtest match using the fuzzy match algorithm
ctx, output, exit := testContext(nil, nil, nil, nil)
env := matchEnv{
algorithmName: "fuzzy",
parameters: []string{
string(imgmatching.MaxDifferentPixels + ":2"),
string(imgmatching.PixelDeltaThreshold + ":10"),
},
}
runUntilExit(t, func() {
env.Match(ctx, filepath.Join(td, a01Digest+".png"), filepath.Join(td, a05Digest+".png"))
})
logs := output.String()
exit.AssertWasCalledWithCode(t, 0, output.String())
// Output should have numbers be right aligned.
assert.Equal(t, `Images match.
Number of different pixels: 2
Maximum delta: 7
Pixel comparison method: pixel delta threshold
`, logs)
}
func TestMatch_Fuzzy_NonZeroPixelPerChannelDeltaThreshold_ImagesAreWithinTolerance_ExitCodeZero(t *testing.T) {
td := testutils.TestDataDir(t)
// Call imgtest match using the fuzzy match algorithm
ctx, output, exit := testContext(nil, nil, nil, nil)
env := matchEnv{
algorithmName: "fuzzy",
parameters: []string{
string(imgmatching.MaxDifferentPixels + ":2"),
string(imgmatching.PixelPerChannelDeltaThreshold + ":10"),
},
}
runUntilExit(t, func() {
env.Match(ctx, filepath.Join(td, a01Digest+".png"), filepath.Join(td, a05Digest+".png"))
})
logs := output.String()
exit.AssertWasCalledWithCode(t, 0, output.String())
// Output should have numbers be right aligned.
assert.Equal(t, `Images match.
Number of different pixels: 2
Maximum delta: 7
Pixel comparison method: pixel per-channel delta threshold
`, logs)
}
func TestMatch_Sobel_ImagesAreVeryDifferent_ExitCodeZero(t *testing.T) {
td := testutils.TestDataDir(t)
// Call imgtest match using the fuzzy match algorithm
ctx, output, exit := testContext(nil, nil, nil, nil)
env := matchEnv{
algorithmName: "sobel",
parameters: []string{
string(imgmatching.MaxDifferentPixels + ":2"),
string(imgmatching.PixelDeltaThreshold + ":10"),
string(imgmatching.EdgeThreshold + ":2"),
},
}
runUntilExit(t, func() {
env.Match(ctx, filepath.Join(td, a01Digest+".png"), filepath.Join(td, a09Digest+".png"))
})
logs := output.String()
exit.AssertWasCalledWithCode(t, 0, output.String())
assert.Contains(t, logs, `Images do not match.`, logs)
assert.Contains(t, logs, `Number of different pixels: 34`, logs)
assert.Contains(t, logs, `Maximum delta: 1020`, logs)
assert.Contains(t, logs, `Pixel comparison method: pixel delta threshold`, logs)
}