]> Cypherpunks repositories - gostls13.git/commitdiff
unicode/utf16: add explicit tests for IsSurrogate
authorDave Cheney <dave@cheney.net>
Mon, 16 Dec 2013 00:15:23 +0000 (11:15 +1100)
committerDave Cheney <dave@cheney.net>
Mon, 16 Dec 2013 00:15:23 +0000 (11:15 +1100)
Update #6956

Add tests for IsSurrogate.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/42570043

src/pkg/unicode/utf16/utf16_test.go

index ee16a303df3159c4a99dc4b0db1920c756fe88fa..05d6427b05f9363d6152716094ad2ccd676ded4a 100644 (file)
@@ -99,3 +99,31 @@ func TestDecode(t *testing.T) {
                }
        }
 }
+
+var surrogateTests = []struct {
+       r    rune
+       want bool
+}{
+       // from http://en.wikipedia.org/wiki/UTF-16
+       {'\u007A', false},     // LATIN SMALL LETTER Z
+       {'\u6C34', false},     // CJK UNIFIED IDEOGRAPH-6C34 (water)
+       {'\uFEFF', false},     // Byte Order Mark
+       {'\U00010000', false}, // LINEAR B SYLLABLE B008 A (first non-BMP code point)
+       {'\U0001D11E', false}, // MUSICAL SYMBOL G CLEF
+       {'\U0010FFFD', false}, // PRIVATE USE CHARACTER-10FFFD (last Unicode code point)
+
+       {rune(0xd7ff), false}, // surr1-1
+       {rune(0xd800), true},  // surr1
+       {rune(0xdc00), true},  // surr2
+       {rune(0xe000), false}, // surr3
+       {rune(0xdfff), true},  // surr3-1
+}
+
+func TestIsSurrogate(t *testing.T) {
+       for i, tt := range surrogateTests {
+               got := IsSurrogate(tt.r)
+               if got != tt.want {
+                       t.Errorf("%d: IsSurrogate(%q) = %v; want %v", i, tt.r, got, tt.want)
+               }
+       }
+}