Files
questshock/modding/hacked/editor/values/Unifier_test.go
T

85 lines
2.3 KiB
Go

package values_test
import (
"fmt"
"testing"
"github.com/inkyblackness/hacked/editor/values"
"github.com/stretchr/testify/assert"
)
func TestUnifier_Integers(t *testing.T) {
tt := []struct {
values []int
expectedValue interface{}
expectedUnified bool
}{
{[]int{1, 1, 1}, 1, true},
{[]int{}, nil, false},
{[]int{1, 2, 3}, nil, false},
}
for tn, tc := range tt {
u := values.NewUnifier()
for _, value := range tc.values {
u.Add(value)
}
resultValue := u.Unified()
resultUnified := u.IsUnique()
assert.Equal(t, tc.expectedValue, resultValue, fmt.Sprintf("Wrong result for test number %d", tn))
assert.Equal(t, tc.expectedUnified, resultUnified, fmt.Sprintf("Wrong unified for test number %d", tn))
}
}
func TestUnifier_Strings(t *testing.T) {
tt := []struct {
values []string
expectedValue interface{}
expectedUnified bool
}{
{[]string{"a", "a", "a"}, "a", true},
{[]string{}, nil, false},
{[]string{"a", "b", "c"}, nil, false},
}
for tn, tc := range tt {
u := values.NewUnifier()
for _, value := range tc.values {
u.Add(value)
}
resultValue := u.Unified()
resultUnified := u.IsUnique()
assert.Equal(t, tc.expectedValue, resultValue, fmt.Sprintf("Wrong result for test number %d", tn))
assert.Equal(t, tc.expectedUnified, resultUnified, fmt.Sprintf("Wrong unified for test number %d", tn))
}
}
func TestUnifier_Types(t *testing.T) {
type simpleType struct {
value int
text string
}
tt := []struct {
values []simpleType
expectedValue interface{}
expectedUnified bool
}{
{[]simpleType{{value: 1, text: "a"}, {value: 1, text: "a"}, {value: 1, text: "a"}}, simpleType{value: 1, text: "a"}, true},
{[]simpleType{}, nil, false},
{[]simpleType{{value: 1, text: "a"}, {value: 1, text: "a"}, {value: 2, text: "a"}}, nil, false},
{[]simpleType{{value: 1, text: "a"}, {value: 1, text: "a"}, {value: 1, text: "b"}}, nil, false},
}
for tn, tc := range tt {
u := values.NewUnifier()
for _, value := range tc.values {
u.Add(value)
}
resultValue := u.Unified()
resultUnified := u.IsUnique()
assert.Equal(t, tc.expectedValue, resultValue, fmt.Sprintf("Wrong result for test number %d", tn))
assert.Equal(t, tc.expectedUnified, resultUnified, fmt.Sprintf("Wrong unified for test number %d", tn))
}
}