76 lines
1.4 KiB
Go
76 lines
1.4 KiB
Go
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)
|
||
}
|
||
}
|