|  | // Copyright 2021 The Go Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | package http2 | 
|  |  | 
|  | import "testing" | 
|  |  | 
|  | func TestASCIIEqualFold(t *testing.T) { | 
|  | var tests = []struct { | 
|  | name string | 
|  | a, b string | 
|  | want bool | 
|  | }{ | 
|  | { | 
|  | name: "empty", | 
|  | want: true, | 
|  | }, | 
|  | { | 
|  | name: "simple match", | 
|  | a:    "CHUNKED", | 
|  | b:    "chunked", | 
|  | want: true, | 
|  | }, | 
|  | { | 
|  | name: "same string", | 
|  | a:    "chunked", | 
|  | b:    "chunked", | 
|  | want: true, | 
|  | }, | 
|  | { | 
|  | name: "Unicode Kelvin symbol", | 
|  | a:    "chunKed", // This "K" is 'KELVIN SIGN' (\u212A) | 
|  | b:    "chunked", | 
|  | want: false, | 
|  | }, | 
|  | } | 
|  | for _, tt := range tests { | 
|  | t.Run(tt.name, func(t *testing.T) { | 
|  | if got := asciiEqualFold(tt.a, tt.b); got != tt.want { | 
|  | t.Errorf("AsciiEqualFold(%q,%q): got %v want %v", tt.a, tt.b, got, tt.want) | 
|  | } | 
|  | }) | 
|  | } | 
|  | } | 
|  |  | 
|  | func TestIsASCIIPrint(t *testing.T) { | 
|  | var tests = []struct { | 
|  | name string | 
|  | in   string | 
|  | want bool | 
|  | }{ | 
|  | { | 
|  | name: "empty", | 
|  | want: true, | 
|  | }, | 
|  | { | 
|  | name: "ASCII low", | 
|  | in:   "This is a space: ' '", | 
|  | want: true, | 
|  | }, | 
|  | { | 
|  | name: "ASCII high", | 
|  | in:   "This is a tilde: '~'", | 
|  | want: true, | 
|  | }, | 
|  | { | 
|  | name: "ASCII low non-print", | 
|  | in:   "This is a unit separator: \x1F", | 
|  | want: false, | 
|  | }, | 
|  | { | 
|  | name: "Ascii high non-print", | 
|  | in:   "This is a Delete: \x7F", | 
|  | want: false, | 
|  | }, | 
|  | { | 
|  | name: "Unicode letter", | 
|  | in:   "Today it's 280K outside: it's freezing!", // This "K" is 'KELVIN SIGN' (\u212A) | 
|  | want: false, | 
|  | }, | 
|  | { | 
|  | name: "Unicode emoji", | 
|  | in:   "Gophers like 🧀", | 
|  | want: false, | 
|  | }, | 
|  | } | 
|  | for _, tt := range tests { | 
|  | t.Run(tt.name, func(t *testing.T) { | 
|  | if got := isASCIIPrint(tt.in); got != tt.want { | 
|  | t.Errorf("IsASCIIPrint(%q): got %v want %v", tt.in, got, tt.want) | 
|  | } | 
|  | }) | 
|  | } | 
|  | } |