package counter import ( "reflect" "strings" "testing" ) func TestCount(t *testing.T) { t.Parallel() counts, err := Count(strings.NewReader("Алена\nМиша\nАлена\nДима\n\n")) if err != nil { t.Fatalf("Count() error = %v", err) } want := map[string]int{ "Алена": 2, "Миша": 1, "Дима": 1, } if !reflect.DeepEqual(counts, want) { t.Fatalf("Count() = %#v, want %#v", counts, want) } } func TestCountPreservesSpaces(t *testing.T) { t.Parallel() counts, err := Count(strings.NewReader("Anna\n Anna \nAnna\n")) if err != nil { t.Fatalf("Count() error = %v", err) } want := map[string]int{ "Anna": 2, " Anna ": 1, } if !reflect.DeepEqual(counts, want) { t.Fatalf("Count() = %#v, want %#v", counts, want) } } func TestCountEmptyInput(t *testing.T) { t.Parallel() counts, err := Count(strings.NewReader("\n\n")) if err != nil { t.Fatalf("Count() error = %v", err) } if len(counts) != 0 { t.Fatalf("Count() = %#v, want empty map", counts) } } func TestSorted(t *testing.T) { t.Parallel() counts := map[string]int{ "Миша": 1, "Алена": 2, "Дима": 1, } got := Sorted(counts) want := []Result{ {Name: "Алена", Count: 2}, {Name: "Дима", Count: 1}, {Name: "Миша", Count: 1}, } if !reflect.DeepEqual(got, want) { t.Fatalf("Sorted() = %#v, want %#v", got, want) } }