Skip to content

Commit

Permalink
Merge pull request #361 from open-traffic-generator/ToAndFromProto
Browse files Browse the repository at this point in the history
To And From Proto
  • Loading branch information
Rangababu-R authored Aug 30, 2022
2 parents 39d3737 + 8eb9171 commit a3fdf21
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 9 deletions.
44 changes: 35 additions & 9 deletions openapiart/openapiartgo.py
Original file line number Diff line number Diff line change
Expand Up @@ -963,8 +963,25 @@ def _write_interface(self, new):
return obj
}}
func (obj *{struct}) ToProto() (*{pb_pkg_name}.{interface}, error) {{
err := obj.validateToAndFrom()
if err != nil {{
return nil, err
}}
return obj.Msg(), nil
}}
func (obj *{struct}) FromProto(msg *{pb_pkg_name}.{interface}) ({interface}, error) {{
newObj := obj.SetMsg(msg)
err := newObj.validateToAndFrom()
if err != nil {{
return nil, err
}}
return newObj, nil
}}
func (obj *{struct}) ToPbText() (string, error) {{
vErr := obj.Validate()
vErr := obj.validateToAndFrom()
if vErr != nil {{
return "", vErr
}}
Expand All @@ -981,15 +998,15 @@ def _write_interface(self, new):
return retObj
}}
{nil_call}
vErr := obj.validateFromText()
vErr := obj.validateToAndFrom()
if vErr != nil {{
return vErr
}}
return retObj
}}
func (obj *{struct}) ToYaml() (string, error) {{
vErr := obj.Validate()
vErr := obj.validateToAndFrom()
if vErr != nil {{
return "", vErr
}}
Expand Down Expand Up @@ -1023,15 +1040,15 @@ def _write_interface(self, new):
uError.Error(), "\\u00a0", " ", -1)[7:])
}}
{nil_call}
vErr := obj.validateFromText()
vErr := obj.validateToAndFrom()
if vErr != nil {{
return vErr
}}
return nil
}}
func (obj *{struct}) ToJson() (string, error) {{
vErr := obj.Validate()
vErr := obj.validateToAndFrom()
if vErr != nil {{
return "", vErr
}}
Expand Down Expand Up @@ -1060,14 +1077,14 @@ def _write_interface(self, new):
uError.Error(), "\\u00a0", " ", -1)[7:])
}}
{nil_call}
err := obj.validateFromText()
err := obj.validateToAndFrom()
if err != nil {{
return err
}}
return nil
}}
func (obj *{struct}) validateFromText() error {{
func (obj *{struct}) validateToAndFrom() error {{
obj.validateObj(true)
return validationResult()
}}
Expand Down Expand Up @@ -1123,12 +1140,16 @@ def _write_interface(self, new):
)

interfaces = [
"// ToProto marshals {interface} to protobuf object *{pb_pkg_name}.{interface}",
"ToProto() (*{pb_pkg_name}.{interface}, error)",
"// ToPbText marshals {interface} to protobuf text",
"ToPbText() (string, error)",
"// ToYaml marshals {interface} to YAML text",
"ToYaml() (string, error)",
"// ToJson marshals {interface} to JSON text",
"ToJson() (string, error)",
"// FromProto unmarshals {interface} from protobuf object *{pb_pkg_name}.{interface}",
"FromProto(msg *{pb_pkg_name}.{interface}) ({interface}, error)",
"// FromPbText unmarshals {interface} from protobuf text",
"FromPbText(value string) error",
"// FromYaml unmarshals {interface} from YAML text",
Expand All @@ -1141,7 +1162,7 @@ def _write_interface(self, new):
"String() string",
"// Clones the object",
"Clone() ({interface}, error)",
"validateFromText() error",
"validateToAndFrom() error",
"validateObj(set_default bool)",
"setDefault()",
]
Expand All @@ -1161,7 +1182,11 @@ def _write_interface(self, new):
"""
{description}
type {interface} interface {{
// Msg marshals {interface} to protobuf object *{pb_pkg_name}.{interface}
// and doesn't set defaults
Msg() *{pb_pkg_name}.{interface}
// SetMsg unmarshals {interface} from protobuf object *{pb_pkg_name}.{interface}
// and doesn't set defaults
SetMsg(*{pb_pkg_name}.{interface}) {interface}
{interface_signatures}
{nil_call}
Expand All @@ -1170,7 +1195,8 @@ def _write_interface(self, new):
interface=new.interface,
pb_pkg_name=self._protobuf_package_name,
interface_signatures=interface_signatures.format(
interface=new.interface
interface=new.interface,
pb_pkg_name=self._protobuf_package_name,
),
description=""
if new.description is None
Expand Down
28 changes: 28 additions & 0 deletions pkg/unit1_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package openapiart_test

import (
"testing"

openapiart "github.com/open-traffic-generator/openapiart/pkg"
sanity "github.com/open-traffic-generator/openapiart/pkg/sanity"
"github.com/stretchr/testify/assert"
)

func TestToAndFromProtoMsg(t *testing.T) {
fObj_proto := &sanity.FObject{}
fObj := openapiart.NewFObject()

obj, err := fObj.FromProto(fObj_proto)
assert.Nil(t, err)

assert.Equal(t, obj.FA(), "some string")

proto_obj, err1 := obj.ToProto()
d := "some string"
var fa *string = &d

assert.Nil(t, err1)
assert.Equal(t, *proto_obj.FA, *fa)
assert.Equal(t, fObj_proto.GetFA(), "")

}

0 comments on commit a3fdf21

Please sign in to comment.