package dbus import ( "testing" ) var escapeTestCases = []struct { in, out string }{ {in: "", out: ""}, {in: "ABCDabcdZYXzyx01289", out: "ABCDabcdZYXzyx01289"}, {in: `_-/\*`, out: `_-/\*`}, {in: `=+:~!`, out: `%3d%2b%3a%7e%21`}, {in: `space here`, out: `space%20here`}, {in: `Привет`, out: `%d0%9f%d1%80%d0%b8%d0%b2%d0%b5%d1%82`}, {in: `ჰეი`, out: `%e1%83%b0%e1%83%94%e1%83%98`}, {in: `你好`, out: `%e4%bd%a0%e5%a5%bd`}, {in: `こんにちは`, out: `%e3%81%93%e3%82%93%e3%81%ab%e3%81%a1%e3%81%af`}, } // More real world examples for more fair benchmark. var escapeBenchmarkCases = []struct { in, out string }{ {in: "/run/user/1000/bus", out: "/run/user/1000/bus"}, {in: "/path/with/a/single space/bus", out: "/path/with/a/single%20space/bus"}, } func TestEscapeBusAddressValue(t *testing.T) { for _, tc := range escapeTestCases { out := EscapeBusAddressValue(tc.in) if out != tc.out { t.Errorf("input: %q; want %q, got %q", tc.in, tc.out, out) } in, err := UnescapeBusAddressValue(out) if err != nil { t.Errorf("unescape error: %v", err) } else if in != tc.in { t.Errorf("unescape: want %q, got %q", tc.in, in) } } } func BenchmarkEscapeBusAddressValue(b *testing.B) { var out string for i := 0; i < b.N; i++ { for _, tc := range escapeBenchmarkCases { out = EscapeBusAddressValue(tc.in) } } b.Log("out:", out) }