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  }