Index: mojom/generators/go/templates/encoding_test.go |
diff --git a/mojom/generators/go/templates/encoding_test.go b/mojom/generators/go/templates/encoding_test.go |
index e2ce44ed09ce951fdca756b48dde446ae2d26e21..0f5326d7ef7fe7ff2c53090c70554bb7cf0f60e6 100644 |
--- a/mojom/generators/go/templates/encoding_test.go |
+++ b/mojom/generators/go/templates/encoding_test.go |
@@ -21,6 +21,8 @@ type mockEncodingInfo struct { |
isStruct bool |
isUnion bool |
isEnum bool |
+ isInterface bool |
+ isInterfaceRequest bool |
elementEncodingInfo *mockEncodingInfo |
keyEncodingInfo *mockEncodingInfo |
valueEncodingInfo *mockEncodingInfo |
@@ -40,6 +42,8 @@ func (m mockEncodingInfo) IsNullable() bool { return |
func (m mockEncodingInfo) IsStruct() bool { return m.isStruct } |
func (m mockEncodingInfo) IsUnion() bool { return m.isUnion } |
func (m mockEncodingInfo) IsEnum() bool { return m.isEnum } |
+func (m mockEncodingInfo) IsInterface() bool { return m.isInterface } |
+func (m mockEncodingInfo) IsInterfaceRequest() bool { return m.isInterfaceRequest } |
func (m mockEncodingInfo) ElementEncodingInfo() translator.EncodingInfo { return m.elementEncodingInfo } |
func (m mockEncodingInfo) KeyEncodingInfo() translator.EncodingInfo { return m.keyEncodingInfo } |
func (m mockEncodingInfo) ValueEncodingInfo() translator.EncodingInfo { return m.valueEncodingInfo } |
@@ -391,3 +395,71 @@ func TestEncodingEnumFieldEncoding(t *testing.T) { |
check(t, expected, "FieldEncodingTmpl", encodingInfo) |
} |
+ |
+func TestEncodingInterfaceFieldEncoding(t *testing.T) { |
+ expected := `if err := encoder.WriteInterface(s.IntField.PassMessagePipe()); err != nil { |
+ return err |
+}` |
+ |
+ encodingInfo := mockEncodingInfo{ |
+ isInterface: true, |
+ identifier: "s.IntField", |
+ writeFunction: "WriteInterface", |
+ } |
+ |
+ check(t, expected, "FieldEncodingTmpl", encodingInfo) |
+} |
+ |
+func TestEncodingNullableInterfaceFieldEncoding(t *testing.T) { |
+ expected := `if s.IntField == nil { |
+ encoder.WriteInvalidInterface() |
+} else { |
+ if err := encoder.WriteInterface(s.IntField.PassMessagePipe()); err != nil { |
+ return err |
+ } |
+}` |
+ |
+ encodingInfo := mockEncodingInfo{ |
+ isInterface: true, |
+ isNullable: true, |
+ identifier: "s.IntField", |
+ writeFunction: "WriteInterface", |
+ } |
+ |
+ check(t, expected, "FieldEncodingTmpl", encodingInfo) |
+} |
+ |
+func TestEncodingInterfaceRequestFieldEncoding(t *testing.T) { |
+ expected := `if err := encoder.WriteHandle(s.IntField.PassMessagePipe()); err != nil { |
+ return err |
+}` |
+ |
+ encodingInfo := mockEncodingInfo{ |
+ isInterface: true, |
+ isInterfaceRequest: true, |
+ identifier: "s.IntField", |
+ writeFunction: "WriteHandle", |
+ } |
+ |
+ check(t, expected, "FieldEncodingTmpl", encodingInfo) |
+} |
+ |
+func TestEncodingNullableInterfaceRequestFieldEncoding(t *testing.T) { |
+ expected := `if s.IntField == nil { |
+ encoder.WriteInvalidHandle() |
+} else { |
+ if err := encoder.WriteHandle(s.IntField.PassMessagePipe()); err != nil { |
+ return err |
+ } |
+}` |
+ |
+ encodingInfo := mockEncodingInfo{ |
+ isInterface: true, |
+ isInterfaceRequest: true, |
+ isNullable: true, |
+ identifier: "s.IntField", |
+ writeFunction: "WriteHandle", |
+ } |
+ |
+ check(t, expected, "FieldEncodingTmpl", encodingInfo) |
+} |