mirror of
https://github.com/ipfs/kubo.git
synced 2025-08-24 10:32:01 +08:00
49 lines
897 B
Go
49 lines
897 B
Go
package cmdenv
|
|
|
|
import (
|
|
"strconv"
|
|
"testing"
|
|
)
|
|
|
|
func TestEscNonPrint(t *testing.T) {
|
|
b := []byte("hello")
|
|
b[2] = 0x7f
|
|
s := string(b)
|
|
if !needEscape(s) {
|
|
t.Fatal("string needs escaping")
|
|
}
|
|
if !hasNonPrintable(s) {
|
|
t.Fatal("expected non-printable")
|
|
}
|
|
if hasNonPrintable(EscNonPrint(s)) {
|
|
t.Fatal("escaped string has non-printable")
|
|
}
|
|
if EscNonPrint(`hel\lo`) != `hel\\lo` {
|
|
t.Fatal("backslash not escaped")
|
|
}
|
|
|
|
s = `hello`
|
|
if needEscape(s) {
|
|
t.Fatal("string does not need escaping")
|
|
}
|
|
if EscNonPrint(s) != s {
|
|
t.Fatal("string should not have changed")
|
|
}
|
|
s = `"hello"`
|
|
if EscNonPrint(s) != s {
|
|
t.Fatal("string should not have changed")
|
|
}
|
|
if EscNonPrint(`"hel\"lo"`) != `"hel\\"lo"` {
|
|
t.Fatal("did not get expected escaped string")
|
|
}
|
|
}
|
|
|
|
func hasNonPrintable(s string) bool {
|
|
for _, r := range s {
|
|
if !strconv.IsPrint(r) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|