summaryrefslogtreecommitdiff
path: root/vendor/src/github.com/godbus/dbus/variant_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/src/github.com/godbus/dbus/variant_test.go')
-rw-r--r--vendor/src/github.com/godbus/dbus/variant_test.go78
1 files changed, 78 insertions, 0 deletions
diff --git a/vendor/src/github.com/godbus/dbus/variant_test.go b/vendor/src/github.com/godbus/dbus/variant_test.go
new file mode 100644
index 0000000000..da917c8e29
--- /dev/null
+++ b/vendor/src/github.com/godbus/dbus/variant_test.go
@@ -0,0 +1,78 @@
+package dbus
+
+import "reflect"
+import "testing"
+
+var variantFormatTests = []struct {
+ v interface{}
+ s string
+}{
+ {int32(1), `1`},
+ {"foo", `"foo"`},
+ {ObjectPath("/org/foo"), `@o "/org/foo"`},
+ {Signature{"i"}, `@g "i"`},
+ {[]byte{}, `@ay []`},
+ {[]int32{1, 2}, `[1, 2]`},
+ {[]int64{1, 2}, `@ax [1, 2]`},
+ {[][]int32{{3, 4}, {5, 6}}, `[[3, 4], [5, 6]]`},
+ {[]Variant{MakeVariant(int32(1)), MakeVariant(1.0)}, `[<1>, <@d 1>]`},
+ {map[string]int32{"one": 1, "two": 2}, `{"one": 1, "two": 2}`},
+ {map[int32]ObjectPath{1: "/org/foo"}, `@a{io} {1: "/org/foo"}`},
+ {map[string]Variant{}, `@a{sv} {}`},
+}
+
+func TestFormatVariant(t *testing.T) {
+ for i, v := range variantFormatTests {
+ if s := MakeVariant(v.v).String(); s != v.s {
+ t.Errorf("test %d: got %q, wanted %q", i+1, s, v.s)
+ }
+ }
+}
+
+var variantParseTests = []struct {
+ s string
+ v interface{}
+}{
+ {"1", int32(1)},
+ {"true", true},
+ {"false", false},
+ {"1.0", float64(1.0)},
+ {"0x10", int32(16)},
+ {"1e1", float64(10)},
+ {`"foo"`, "foo"},
+ {`"\a\b\f\n\r\t"`, "\x07\x08\x0c\n\r\t"},
+ {`"\u00e4\U0001f603"`, "\u00e4\U0001f603"},
+ {"[1]", []int32{1}},
+ {"[1, 2, 3]", []int32{1, 2, 3}},
+ {"@ai []", []int32{}},
+ {"[1, 5.0]", []float64{1, 5.0}},
+ {"[[1, 2], [3, 4.0]]", [][]float64{{1, 2}, {3, 4}}},
+ {`[@o "/org/foo", "/org/bar"]`, []ObjectPath{"/org/foo", "/org/bar"}},
+ {"<1>", MakeVariant(int32(1))},
+ {"[<1>, <2.0>]", []Variant{MakeVariant(int32(1)), MakeVariant(2.0)}},
+ {`[[], [""]]`, [][]string{{}, {""}}},
+ {`@a{ss} {}`, map[string]string{}},
+ {`{"foo": 1}`, map[string]int32{"foo": 1}},
+ {`[{}, {"foo": "bar"}]`, []map[string]string{{}, {"foo": "bar"}}},
+ {`{"a": <1>, "b": <"foo">}`,
+ map[string]Variant{"a": MakeVariant(int32(1)), "b": MakeVariant("foo")}},
+ {`b''`, []byte{0}},
+ {`b"abc"`, []byte{'a', 'b', 'c', 0}},
+ {`b"\x01\0002\a\b\f\n\r\t"`, []byte{1, 2, 0x7, 0x8, 0xc, '\n', '\r', '\t', 0}},
+ {`[[0], b""]`, [][]byte{{0}, {0}}},
+ {"int16 0", int16(0)},
+ {"byte 0", byte(0)},
+}
+
+func TestParseVariant(t *testing.T) {
+ for i, v := range variantParseTests {
+ nv, err := ParseVariant(v.s, Signature{})
+ if err != nil {
+ t.Errorf("test %d: parsing failed: %s", i+1, err)
+ continue
+ }
+ if !reflect.DeepEqual(nv.value, v.v) {
+ t.Errorf("test %d: got %q, wanted %q", i+1, nv, v.v)
+ }
+ }
+}