github.com/serversong/goreporter@v0.0.0-20200325104552-3cfaf44fd178/linters/spellcheck/misspell/replace_test.go (about) 1 package misspell 2 3 import ( 4 "strings" 5 "testing" 6 ) 7 8 func TestReplaceIgnore(t *testing.T) { 9 cases := []struct { 10 ignore string 11 text string 12 }{ 13 {"knwo,gae", "https://github.com/Unknwon, github.com/hnakamur/gaesessions"}, 14 } 15 for line, tt := range cases { 16 r := New() 17 r.RemoveRule(strings.Split(tt.ignore, ",")) 18 r.Compile() 19 got, _ := r.Replace(tt.text) 20 if got != tt.text { 21 t.Errorf("%d: Replace files want %q got %q", line, tt.text, got) 22 } 23 } 24 } 25 26 func TestReplaceLocale(t *testing.T) { 27 cases := []struct { 28 orig string 29 want string 30 }{ 31 {"The colours are pretty", "The colors are pretty"}, 32 {"summaries", "summaries"}, 33 } 34 35 r := New() 36 r.AddRuleList(DictAmerican) 37 r.Compile() 38 for line, tt := range cases { 39 got, _ := r.Replace(tt.orig) 40 if got != tt.want { 41 t.Errorf("%d: ReplaceLocale want %q got %q", line, tt.orig, got) 42 } 43 } 44 } 45 46 func TestReplace(t *testing.T) { 47 cases := []struct { 48 orig string 49 want string 50 }{ 51 {"I live in Amercia", "I live in America"}, 52 {"grill brocoli now", "grill broccoli now"}, 53 {"There is a zeebra", "There is a zebra"}, 54 {"foo other bar", "foo other bar"}, 55 {"ten fiels", "ten fields"}, 56 {"Closeing Time", "Closing Time"}, 57 {"closeing Time", "closing Time"}, 58 {" TOOD: foobar", " TODO: foobar"}, 59 {" preceed ", " precede "}, 60 {"preceeding", "preceding"}, 61 {"functionallity", "functionality"}, 62 } 63 r := New() 64 for line, tt := range cases { 65 got, _ := r.Replace(tt.orig) 66 if got != tt.want { 67 t.Errorf("%d: Replace files want %q got %q", line, tt.orig, got) 68 } 69 } 70 } 71 72 func TestCheckReplace(t *testing.T) { 73 r := Replacer{ 74 engine: strings.NewReplacer("foo", "foobar", "runing", "running"), 75 corrected: map[string]string{ 76 "foo": "foobar", 77 "runing": "running", 78 }, 79 } 80 81 s := "nothing at all" 82 news, diffs := r.Replace(s) 83 if s != news || len(diffs) != 0 { 84 t.Errorf("Basic recheck failed: %q vs %q", s, news) 85 } 86 87 // 88 // Test single, correct,.Correctedacements 89 // 90 s = "foo" 91 news, diffs = r.Replace(s) 92 if news != "foobar" || len(diffs) != 1 || diffs[0].Original != "foo" && diffs[0].Corrected != "foobar" && diffs[0].Column != 0 { 93 t.Errorf("basic recheck1 failed %q vs %q", s, news) 94 } 95 s = "foo junk" 96 news, diffs = r.Replace(s) 97 if news != "foobar junk" || len(diffs) != 1 || diffs[0].Original != "foo" && diffs[0].Corrected != "foobar" && diffs[0].Column != 0 { 98 t.Errorf("basic recheck2 failed %q vs %q, %v", s, news, diffs[0]) 99 } 100 101 s = "junk foo" 102 news, diffs = r.Replace(s) 103 if news != "junk foobar" || len(diffs) != 1 || diffs[0].Original != "foo" && diffs[0].Corrected != "foobar" && diffs[0].Column != 5 { 104 t.Errorf("basic recheck3 failed: %q vs %q", s, news) 105 } 106 107 s = "junk foo junk" 108 news, diffs = r.Replace(s) 109 if news != "junk foobar junk" || len(diffs) != 1 || diffs[0].Original != "foo" && diffs[0].Corrected != "foobar" && diffs[0].Column != 5 { 110 t.Errorf("basic recheck4 failed: %q vs %q", s, news) 111 } 112 113 // Incorrect.Correctedacements 114 s = "food pruning" 115 news, _ = r.Replace(s) 116 if news != s { 117 t.Errorf("incorrect.Correctedacement failed: %q vs %q", s, news) 118 } 119 }