...

Source file src/github.com/godbus/dbus/v5/dbus_test.go

Documentation: github.com/godbus/dbus/v5

     1  package dbus
     2  
     3  import (
     4  	"bytes"
     5  	"reflect"
     6  	"testing"
     7  )
     8  
     9  type TestStruct struct {
    10  	TestInt int
    11  	TestStr string
    12  }
    13  
    14  func Test_VariantOfStruct(t *testing.T) {
    15  	tester := TestStruct{TestInt: 123, TestStr: "foobar"}
    16  	testerDecoded := []interface{}{123, "foobar"}
    17  	variant := MakeVariant(testerDecoded)
    18  	input := []interface{}{variant}
    19  	var output TestStruct
    20  	if err := Store(input, &output); err != nil {
    21  		t.Fatal(err)
    22  	}
    23  	if tester != output {
    24  		t.Fatalf("%v != %v\n", tester, output)
    25  	}
    26  }
    27  
    28  func Test_VariantOfSlicePtr(t *testing.T) {
    29  	value := []TestStruct{{1, "1"}}
    30  	dest := []*TestStruct{}
    31  
    32  	param := &Message{
    33  		Type:  TypeMethodCall,
    34  		Flags: FlagNoAutoStart,
    35  		Headers: map[HeaderField]Variant{
    36  			FieldPath:        MakeVariant(ObjectPath("/example")),
    37  			FieldDestination: MakeVariant(""),
    38  			FieldMember:      MakeVariant("call"),
    39  		},
    40  		Body: []interface{}{value},
    41  	}
    42  	param.Headers[FieldSignature] = MakeVariant(SignatureOf(param.Body...))
    43  	buf := new(bytes.Buffer)
    44  	err := param.EncodeTo(buf, nativeEndian)
    45  	if err != nil {
    46  		t.Fatal(err)
    47  	}
    48  
    49  	msg, err := DecodeMessage(buf)
    50  	if err != nil {
    51  		t.Fatal(err)
    52  	}
    53  	if err := Store(msg.Body, &dest); err != nil || reflect.DeepEqual(value, dest) {
    54  		t.Log(err)
    55  		t.FailNow()
    56  	}
    57  }
    58  

View as plain text