blob: 43a8b4060ee10c2ccd0129c7e66af5553d238ec3 [file]
// Copyright 2016 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 templates
import (
"testing"
)
func TestDecodingSimpleFieldDecoding(t *testing.T) {
expected := `value, err := decoder.ReadUint8()
if err != nil {
return err
}
s.Fuint8 = value`
encodingInfo := mockEncodingInfo{
isSimple: true,
identifier: "s.Fuint8",
readFunction: "ReadUint8",
}
check(t, expected, "FieldDecodingTmpl", encodingInfo)
}
func TestDecodingHandleFieldDecoding(t *testing.T) {
expected := `handle, err := decoder.ReadHandle()
if err != nil {
return err
}
if handle.IsValid() {
s.SomeHandle = handle
} else {
return &bindings.ValidationError{bindings.UnexpectedInvalidHandle, "unexpected invalid handle"}
}`
encodingInfo := mockEncodingInfo{
isHandle: true,
identifier: "s.SomeHandle",
readFunction: "ReadHandle",
}
check(t, expected, "FieldDecodingTmpl", encodingInfo)
}
func TestDecodingNullableHandleFieldDecoding(t *testing.T) {
expected := `handle, err := decoder.ReadHandle()
if err != nil {
return err
}
if handle.IsValid() {
s.SomeNullableHandle = &handle
} else {
s.SomeNullableHandle = nil
}`
encodingInfo := mockEncodingInfo{
isHandle: true,
identifier: "s.SomeNullableHandle",
readFunction: "ReadHandle",
isNullable: true,
}
check(t, expected, "FieldDecodingTmpl", encodingInfo)
}
func TestDecodingStringFieldDecoding(t *testing.T) {
expected := `pointer, err := decoder.ReadPointer()
if err != nil {
return err
}
if pointer == 0 {
return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"}
} else {
value, err := decoder.ReadString()
if err != nil {
return err
}
s.FString = value
}`
encodingInfo := mockEncodingInfo{
isSimple: true,
identifier: "s.FString",
readFunction: "ReadString",
isPointer: true,
}
check(t, expected, "FieldDecodingTmpl", encodingInfo)
}
func TestDecodingNullableStringFieldDecoding(t *testing.T) {
expected := `pointer, err := decoder.ReadPointer()
if err != nil {
return err
}
if pointer == 0 {
s.FString = nil
} else {
value, err := decoder.ReadString()
if err != nil {
return err
}
s.FString = value
}`
encodingInfo := mockEncodingInfo{
isSimple: true,
identifier: "s.FString",
readFunction: "ReadString",
isPointer: true,
isNullable: true,
}
check(t, expected, "FieldDecodingTmpl", encodingInfo)
}
func TestDecodingStructFieldDecoding(t *testing.T) {
expected := `pointer, err := decoder.ReadPointer()
if err != nil {
return err
}
if pointer == 0 {
return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"}
} else {
if err := s.FStruct.Decode(decoder); err != nil {
return err
}
}`
encodingInfo := mockEncodingInfo{
isPointer: true,
isStruct: true,
identifier: "s.FStruct",
}
check(t, expected, "FieldDecodingTmpl", encodingInfo)
}
func TestDecodingNullableStructFieldDecoding(t *testing.T) {
expected := `pointer, err := decoder.ReadPointer()
if err != nil {
return err
}
if pointer == 0 {
s.FStruct = nil
} else {
s.FStruct = new(SomeStruct)
if err := s.FStruct.Decode(decoder); err != nil {
return err
}
}`
encodingInfo := mockEncodingInfo{
isNullable: true,
isPointer: true,
isStruct: true,
identifier: "s.FStruct",
goType: "SomeStruct",
}
check(t, expected, "FieldDecodingTmpl", encodingInfo)
}