Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Unified Diff: mojom/generators/go/templates/encoding_test.go

Issue 2082173002: New go generator shakedown. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)
+}

Powered by Google App Engine
This is Rietveld 408576698