| // Copyright 2020 The Fuchsia 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 fidlgen |
| |
| import ( |
| "testing" |
| ) |
| |
| func TestSingleQuote(t *testing.T) { |
| type testCase struct { |
| input string |
| output string |
| } |
| tests := []testCase{ |
| { |
| input: ``, |
| output: `''`, |
| }, |
| { |
| input: `"`, |
| output: `'"'`, |
| }, |
| { |
| input: `abc`, |
| output: `'abc'`, |
| }, |
| { |
| input: `\`, |
| output: `'\\'`, |
| }, |
| { |
| input: `'`, |
| output: `'\''`, |
| }, |
| { |
| input: `\'`, |
| output: `'\\\''`, |
| }, |
| { |
| input: `'a"b"c'`, |
| output: `'\'a"b"c\''`, |
| }, |
| } |
| for _, test := range tests { |
| output := SingleQuote(test.input) |
| if output != test.output { |
| t.Errorf("input %q produced unexpected output. got %q, want %q", test.input, output, test.output) |
| } |
| } |
| } |
| |
| func TestPrintableASCIIRune(t *testing.T) { |
| // positive cases |
| printableRunes := []rune{ |
| 'h', |
| 'e', |
| 'l', |
| '0', |
| rune(0x20), |
| rune(0x7e), |
| } |
| for _, r := range printableRunes { |
| if !PrintableASCIIRune(r) { |
| t.Errorf("expected %x to be a printable rune", r) |
| } |
| } |
| |
| // negative cases |
| nonPrintableRunes := []rune{ |
| rune(0x00), |
| rune(0x19), |
| rune(0x80), |
| rune(0x4242), |
| } |
| for _, r := range nonPrintableRunes { |
| if PrintableASCIIRune(r) { |
| t.Errorf("did not expect %x to be a printable rune", r) |
| } |
| } |
| } |
| |
| func TestPrintableASCII(t *testing.T) { |
| // positive cases |
| printableStrings := []string{ |
| "ahb", |
| "aeb", |
| "alb", |
| "a0b", |
| "a\x20b", |
| "a\x7eb", |
| } |
| for _, s := range printableStrings { |
| if !PrintableASCII(s) { |
| t.Errorf("expected %s to be a printable syring", s) |
| } |
| } |
| |
| // negative cases |
| nonPrintableStrings := []string{ |
| "a\x00b", |
| "a\x19b", |
| "a\x81b", |
| } |
| for _, s := range nonPrintableStrings { |
| if PrintableASCII(s) { |
| t.Errorf("did not expect %s to be a printable string", s) |
| } |
| } |
| } |