github.com/aarzilli/tools@v0.0.0-20151123112009-0d27094f75e0/text/levenshtein/rune/levenshtein_test.go (about) 1 package rune 2 3 import ( 4 ls_core "github.com/pbberlin/tools/text/levenshtein" 5 6 "testing" 7 ) 8 9 var testCases = []struct { 10 src []Token 11 dst []Token 12 distance int 13 }{ 14 {[]Token{}, []Token{'a'}, 1}, 15 {[]Token{'a'}, []Token{'a', 'a'}, 1}, 16 {[]Token{'a'}, []Token{'a', 'a', 'a'}, 2}, 17 18 {[]Token{}, []Token{}, 0}, 19 {[]Token{'a'}, []Token{'b'}, 2}, 20 {[]Token{'a', 'a', 'a'}, []Token{'a', 'b', 'a'}, 2}, 21 {[]Token{'a', 'a', 'a'}, []Token{'a', 'b'}, 3}, 22 23 {[]Token{'a'}, []Token{'a'}, 0}, 24 {[]Token{'a', 'b'}, []Token{'a', 'b'}, 0}, 25 {[]Token{'a'}, []Token{}, 1}, 26 27 {[]Token{'a', 'a'}, []Token{'a'}, 1}, 28 {[]Token{'a', 'a', 'a'}, []Token{'a'}, 2}, 29 30 // {[]Token{'a'}, []Token{'a'}, 220}, 31 } 32 33 func TestLevenshtein(t *testing.T) { 34 for _, tc := range testCases { 35 36 mx := ls_core.New(WrapAsEqualer(tc.src), WrapAsEqualer(tc.dst), ls_core.DefaultOptions) 37 got := mx.Distance() 38 39 if got != tc.distance { 40 t.Logf( 41 "Distance between %v and %v should be %v - but got %v ", 42 tc.dst, tc.src, tc.distance, got) 43 t.Fail() 44 } 45 } 46 }