| // Copyright 2015 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | package tests | 
 |  | 
 | import ( | 
 | 	"testing" | 
 |  | 
 | 	"mojo/public/go/bindings" | 
 | ) | 
 |  | 
 | func checkMessageEncoding(t *testing.T, header, payload bindings.MessageHeader) { | 
 | 	var encodedMessage, decodedMessage *bindings.Message | 
 | 	var err error | 
 | 	var decodedHeader, decodedPayload bindings.MessageHeader | 
 |  | 
 | 	if encodedMessage, err = bindings.EncodeMessage(header, &payload); err != nil { | 
 | 		t.Fatalf("Failed encoding message: %v", err) | 
 | 	} | 
 |  | 
 | 	if decodedMessage, err = bindings.ParseMessage(encodedMessage.Bytes, nil); err != nil { | 
 | 		t.Fatalf("Failed decoding message header: %v", err) | 
 | 	} | 
 | 	if decodedHeader = decodedMessage.Header; decodedHeader != header { | 
 | 		t.Fatalf("Unexpected header decoded: got %v, want %v", decodedHeader, header) | 
 | 	} | 
 | 	if err = decodedMessage.DecodePayload(&decodedPayload); err != nil { | 
 | 		t.Fatalf("Failed decoding message payload: %v", err) | 
 | 	} | 
 | 	if decodedPayload != payload { | 
 | 		t.Fatalf("Unexpected header with request id decoded: got %v, want %v", decodedPayload, payload) | 
 | 	} | 
 | } | 
 |  | 
 | // TestMessageHeader tests that headers are identical after being | 
 | // encoded/decoded. | 
 | func TestMessageHeader(t *testing.T) { | 
 | 	header := bindings.MessageHeader{2, 0, 0} | 
 | 	headerWithId := bindings.MessageHeader{1, 2, 3} | 
 | 	checkMessageEncoding(t, header, headerWithId) | 
 | 	checkMessageEncoding(t, headerWithId, header) | 
 | } |