...
1 package dbus
2
3 import (
4 "reflect"
5 "testing"
6 )
7
8 func TestStoreStringToInterface(t *testing.T) {
9 var dest interface{}
10 err := Store([]interface{}{"foobar"}, &dest)
11 if err != nil {
12 t.Fatal(err)
13 }
14 _ = dest.(string)
15 }
16
17 func TestStoreVariantToInterface(t *testing.T) {
18 src := MakeVariant("foobar")
19 var dest interface{}
20 err := Store([]interface{}{src}, &dest)
21 if err != nil {
22 t.Fatal(err)
23 }
24 _ = dest.(string)
25 }
26
27 func TestStoreMapStringToMapInterface(t *testing.T) {
28 src := map[string]string{"foo": "bar"}
29 dest := map[string]interface{}{}
30 err := Store([]interface{}{src}, &dest)
31 if err != nil {
32 t.Fatal(err)
33 }
34 _ = dest["foo"].(string)
35 }
36
37 func TestStoreMapVariantToMapInterface(t *testing.T) {
38 src := map[string]Variant{"foo": MakeVariant("foobar")}
39 dest := map[string]interface{}{}
40 err := Store([]interface{}{src}, &dest)
41 if err != nil {
42 t.Fatal(err)
43 }
44 _ = dest["foo"].(string)
45 }
46
47 func TestStoreSliceStringToSliceInterface(t *testing.T) {
48 src := []string{"foo"}
49 dest := []interface{}{}
50 err := Store([]interface{}{src}, &dest)
51 if err != nil {
52 t.Fatal(err)
53 }
54 _ = dest[0].(string)
55 }
56
57 func TestStoreSliceVariantToSliceInterface(t *testing.T) {
58 src := []Variant{MakeVariant("foo")}
59 dest := []interface{}{}
60 err := Store([]interface{}{src}, &dest)
61 if err != nil {
62 t.Fatal(err)
63 }
64 _ = dest[0].(string)
65 }
66
67 func TestStoreSliceVariantToSliceInterfaceMulti(t *testing.T) {
68 src := []Variant{MakeVariant("foo"), MakeVariant(int32(1))}
69 dest := []interface{}{}
70 err := Store([]interface{}{src}, &dest)
71 if err != nil {
72 t.Fatal(err)
73 }
74 _ = dest[0].(string)
75 _ = dest[1].(int32)
76 }
77
78 func TestStoreNested(t *testing.T) {
79 src := map[string]interface{}{
80 "foo": []interface{}{"1", "2", "3", "5",
81 map[string]interface{}{
82 "bar": "baz",
83 },
84 },
85 "bar": map[string]interface{}{
86 "baz": "quux",
87 "quux": "quuz",
88 },
89 }
90 dest := map[string]interface{}{}
91 err := Store([]interface{}{src}, &dest)
92 if err != nil {
93 t.Fatal(err)
94 }
95 if !reflect.DeepEqual(src, dest) {
96 t.Errorf("not equal: got '%v', want '%v'",
97 dest, src)
98 }
99 }
100
101 func TestStoreSmallerSliceToLargerSlice(t *testing.T) {
102 src := []string{"baz"}
103 dest := []interface{}{"foo", "bar"}
104 err := Store([]interface{}{src}, &dest)
105 if err != nil {
106 t.Fatal(err)
107 }
108 if len(dest) != 1 {
109 t.Fatal("Expected dest slice to shrink")
110 }
111 if dest[0].(string) != "baz" {
112 t.Fatal("Wrong element saved in dest slice")
113 }
114 }
115
View as plain text