blob: f9e947b569c3d2680fe34390c64d676e54cd4498 [file] [log] [blame] [edit]
// Copyright 2025 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 runtime_test
import (
"runtime"
"testing"
)
func TestPrintQuoted(t *testing.T) {
for _, tbl := range []struct {
in, expected string
}{
{in: "baz", expected: `"baz"`},
{in: "foobar", expected: `"foobar"`},
// make sure newlines get escaped
{in: "baz\n", expected: `"baz\n"`},
// make sure null and escape bytes are properly escaped
{in: "b\033it", expected: `"b\x1bit"`},
{in: "b\000ar", expected: `"b\x00ar"`},
// verify that simple 16-bit unicode runes are escaped with \u, including a greek upper-case sigma and an arbitrary unicode character.
{in: "\u1234Σ", expected: `"\u1234\u03a3"`},
// verify that 32-bit unicode runes are escaped with \U along with tabs
{in: "fizz\tle", expected: `"fizz\tle"`},
{in: "\U00045678boop", expected: `"\U00045678boop"`},
// verify carriage returns and backslashes get escaped along with our nulls, newlines and a 32-bit unicode character
{in: "fiz\\zl\re", expected: `"fiz\\zl\re"`},
} {
t.Run(tbl.in, func(t *testing.T) {
out := runtime.DumpPrintQuoted(tbl.in)
if out != tbl.expected {
t.Errorf("unexpected output for print(escaped(%q));\n got: %s\nwant: %s", tbl.in, out, tbl.expected)
}
})
}
}