1// Copyright 2011 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package unicode_test
6
7import (
8	"testing"
9	. "unicode"
10)
11
12// Independently check that the special "Is" functions work
13// in the Latin-1 range through the property table.
14
15func TestIsControlLatin1(t *testing.T) {
16	for i := rune(0); i <= MaxLatin1; i++ {
17		got := IsControl(i)
18		want := false
19		switch {
20		case 0x00 <= i && i <= 0x1F:
21			want = true
22		case 0x7F <= i && i <= 0x9F:
23			want = true
24		}
25		if got != want {
26			t.Errorf("%U incorrect: got %t; want %t", i, got, want)
27		}
28	}
29}
30
31func TestIsLetterLatin1(t *testing.T) {
32	for i := rune(0); i <= MaxLatin1; i++ {
33		got := IsLetter(i)
34		want := Is(Letter, i)
35		if got != want {
36			t.Errorf("%U incorrect: got %t; want %t", i, got, want)
37		}
38	}
39}
40
41func TestIsUpperLatin1(t *testing.T) {
42	for i := rune(0); i <= MaxLatin1; i++ {
43		got := IsUpper(i)
44		want := Is(Upper, i)
45		if got != want {
46			t.Errorf("%U incorrect: got %t; want %t", i, got, want)
47		}
48	}
49}
50
51func TestIsLowerLatin1(t *testing.T) {
52	for i := rune(0); i <= MaxLatin1; i++ {
53		got := IsLower(i)
54		want := Is(Lower, i)
55		if got != want {
56			t.Errorf("%U incorrect: got %t; want %t", i, got, want)
57		}
58	}
59}
60
61func TestNumberLatin1(t *testing.T) {
62	for i := rune(0); i <= MaxLatin1; i++ {
63		got := IsNumber(i)
64		want := Is(Number, i)
65		if got != want {
66			t.Errorf("%U incorrect: got %t; want %t", i, got, want)
67		}
68	}
69}
70
71func TestIsPrintLatin1(t *testing.T) {
72	for i := rune(0); i <= MaxLatin1; i++ {
73		got := IsPrint(i)
74		want := In(i, PrintRanges...)
75		if i == ' ' {
76			want = true
77		}
78		if got != want {
79			t.Errorf("%U incorrect: got %t; want %t", i, got, want)
80		}
81	}
82}
83
84func TestIsGraphicLatin1(t *testing.T) {
85	for i := rune(0); i <= MaxLatin1; i++ {
86		got := IsGraphic(i)
87		want := In(i, GraphicRanges...)
88		if got != want {
89			t.Errorf("%U incorrect: got %t; want %t", i, got, want)
90		}
91	}
92}
93
94func TestIsPunctLatin1(t *testing.T) {
95	for i := rune(0); i <= MaxLatin1; i++ {
96		got := IsPunct(i)
97		want := Is(Punct, i)
98		if got != want {
99			t.Errorf("%U incorrect: got %t; want %t", i, got, want)
100		}
101	}
102}
103
104func TestIsSpaceLatin1(t *testing.T) {
105	for i := rune(0); i <= MaxLatin1; i++ {
106		got := IsSpace(i)
107		want := Is(White_Space, i)
108		if got != want {
109			t.Errorf("%U incorrect: got %t; want %t", i, got, want)
110		}
111	}
112}
113
114func TestIsSymbolLatin1(t *testing.T) {
115	for i := rune(0); i <= MaxLatin1; i++ {
116		got := IsSymbol(i)
117		want := Is(Symbol, i)
118		if got != want {
119			t.Errorf("%U incorrect: got %t; want %t", i, got, want)
120		}
121	}
122}
123