64 lines
1 KiB
Go
64 lines
1 KiB
Go
package levenshtein
|
||
|
||
import (
|
||
"reflect"
|
||
"testing"
|
||
)
|
||
|
||
func TestString(t *testing.T) {
|
||
type args struct {
|
||
s1 string
|
||
s2 string
|
||
}
|
||
tests := []struct {
|
||
name string
|
||
args args
|
||
want []Edit
|
||
}{
|
||
{
|
||
name: "test1",
|
||
args: args{
|
||
s1: "абвзгде",
|
||
s2: "абвжгде",
|
||
},
|
||
want: []Edit{
|
||
{
|
||
Type: Replace,
|
||
Idx1: 3,
|
||
Idx2: 3,
|
||
},
|
||
},
|
||
},
|
||
{
|
||
name: "test2",
|
||
args: args{
|
||
s1: "абавзгд",
|
||
s2: "абввжгде",
|
||
},
|
||
want: []Edit{
|
||
{
|
||
Type: Insert, // абавзгд -> абавзгд[е]
|
||
Idx1: 6,
|
||
Idx2: 7,
|
||
},
|
||
{
|
||
Type: Replace, // абав[з]где -> абав[ж]где
|
||
Idx1: 4,
|
||
Idx2: 4,
|
||
},
|
||
{
|
||
Type: Replace, // аб[а]вжгде -> аб[в]вжгде
|
||
Idx1: 2,
|
||
Idx2: 2,
|
||
},
|
||
},
|
||
},
|
||
}
|
||
for _, tt := range tests {
|
||
t.Run(tt.name, func(t *testing.T) {
|
||
if got := String(tt.args.s1, tt.args.s2); !reflect.DeepEqual(got, tt.want) {
|
||
t.Errorf("LevenshteinString() = %v, want %v", got, tt.want)
|
||
}
|
||
})
|
||
}
|
||
}
|