summaryrefslogtreecommitdiffhomepage
path: root/words/words_test.go
blob: a9691792a5c003b126d373c18a01ab4594023179 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause

package words

import (
	"strings"
	"testing"
)

func TestWords(t *testing.T) {
	test := func(t *testing.T, words []string) {
		t.Helper()
		if len(words) == 0 {
			t.Error("no words")
		}
		seen := map[string]bool{}
		for _, w := range words {
			if seen[w] {
				t.Errorf("dup word %q", w)
			}
			seen[w] = true
			if w == "" || strings.IndexFunc(w, nonASCIILower) != -1 {
				t.Errorf("malformed word %q", w)
			}
		}
	}
	t.Run("tails", func(t *testing.T) { test(t, Tails()) })
	t.Run("scales", func(t *testing.T) { test(t, Scales()) })
	t.Logf("%v tails * %v scales = %v beautiful combinations", len(Tails()), len(Scales()), len(Tails())*len(Scales()))
}

func nonASCIILower(r rune) bool {
	if 'a' <= r && r <= 'z' {
		return false
	}
	return true
}