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  }