Skip to content

Commit

Permalink
Merge pull request #94 from RyoJerryYu/fix-enumx-all
Browse files Browse the repository at this point in the history
Fix enumx all
  • Loading branch information
RyoJerryYu authored Jan 19, 2025
2 parents 5fb54ee + 5c531ac commit d971475
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 24 deletions.
12 changes: 6 additions & 6 deletions cmd/protoc-gen-go-enumx/gen/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ func (g *Generator) applyToInt(e *protogen.Enum) {
}
for _, m := range interMethods {
g.Pf(`func (x %s) %s() %s {return %s(x)}`,
e.GoIdent.GoName, m.name, m.typ, m.typ)
e.GoIdent, m.name, m.typ, m.typ)
}
}
func (g *Generator) applyFromInt(e *protogen.Enum) {
Expand All @@ -76,8 +76,8 @@ func %sFrom[T %s | %s](s T) %s {
e.GoIdent.GoName,
e.GoIdent.GoName,
e.GoIdent.GoName,
g.W.QualifiedGoIdent(constraints.Ident("Integer")),
g.W.QualifiedGoIdent(constraints.Ident("Float")),
constraints.Ident("Integer"),
constraints.Ident("Float"),
e.GoIdent.GoName,
e.GoIdent.GoName,
)
Expand All @@ -90,8 +90,8 @@ func %sFromValid[T %s | %s](s T) (%s, bool) {
e.GoIdent.GoName,
e.GoIdent.GoName,
e.GoIdent.GoName,
g.W.QualifiedGoIdent(constraints.Ident("Integer")),
g.W.QualifiedGoIdent(constraints.Ident("Float")),
constraints.Ident("Integer"),
constraints.Ident("Float"),
e.GoIdent.GoName,
e.GoIdent.GoName,
e.GoIdent.GoName,
Expand Down Expand Up @@ -135,7 +135,7 @@ func (g *Generator) applyAlls(e *protogen.Enum) {

g.Pf(`var _%s_allName = []string{`, e.GoIdent.GoName)
for _, v := range e.Values {
g.Pf("%q,", v.GoIdent.GoName)
g.Pf("%q,", v.Desc.Name())
}
g.Pf("}")

Expand Down
24 changes: 12 additions & 12 deletions tests/protoc-gen-go-enumx/e2e/e2e.pb.enumx.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

89 changes: 86 additions & 3 deletions tests/protoc-gen-go-enumx/e2e/e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -156,9 +156,9 @@ func TestEnumAll(t *testing.T) {
}

cases := []testCase{
{Enum_A, "Enum_A", 0},
{Enum_B, "Enum_B", 1},
{Enum_C, "Enum_C", 2},
{Enum_A, "A", 0},
{Enum_B, "B", 1},
{Enum_C, "C", 2},
}

for _, c := range cases {
Expand All @@ -168,6 +168,89 @@ func TestEnumAll(t *testing.T) {
}
}

func TestEnumAll_Valid(t *testing.T) {
t.Run("Enum", func(t *testing.T) {
for _, v := range EnumAll() {
vStr := v.String()
vIn32 := v.Int32()
strV := EnumFromStr(vStr)
intV := EnumFrom(vIn32)
assert.Equal(t, v, strV)
assert.Equal(t, v, intV)
}
for _, vStr := range EnumAllName() {
v, valid := EnumFromValidStr(vStr)
assert.True(t, valid)
assert.Equal(t, vStr, v.String())
}
for _, vIn32 := range EnumAllValue() {
v, valid := EnumFromValid(vIn32)
assert.True(t, valid)
assert.Equal(t, vIn32, v.Int32())
}
})
t.Run("EnumParent_EnumChild", func(t *testing.T) {
for _, v := range EnumParent_EnumChildAll() {
vStr := v.String()
vIn32 := v.Int32()
strV := EnumParent_EnumChildFromStr(vStr)
intV := EnumParent_EnumChildFrom(vIn32)
assert.Equal(t, v, strV)
assert.Equal(t, v, intV)
}
for _, vStr := range EnumParent_EnumChildAllName() {
v, valid := EnumParent_EnumChildFromValidStr(vStr)
assert.True(t, valid)
assert.Equal(t, vStr, v.String())
}
for _, vIn32 := range EnumParent_EnumChildAllValue() {
v, valid := EnumParent_EnumChildFromValid(vIn32)
assert.True(t, valid)
assert.Equal(t, vIn32, v.Int32())
}
})
t.Run("EnumParent2_Enum", func(t *testing.T) {
for _, v := range EnumParent2_EnumAll() {
vStr := v.String()
vIn32 := v.Int32()
strV := EnumParent2_EnumFromStr(vStr)
intV := EnumParent2_EnumFrom(vIn32)
assert.Equal(t, v, strV)
assert.Equal(t, v, intV)
}
for _, vStr := range EnumParent2_EnumAllName() {
v, valid := EnumParent2_EnumFromValidStr(vStr)
assert.True(t, valid)
assert.Equal(t, vStr, v.String())
}
for _, vIn32 := range EnumParent2_EnumAllValue() {
v, valid := EnumParent2_EnumFromValid(vIn32)
assert.True(t, valid)
assert.Equal(t, vIn32, v.Int32())
}
})
t.Run("EnumParent3_Enum", func(t *testing.T) {
for _, v := range EnumParent3_EnumAll() {
vStr := v.String()
vIn32 := v.Int32()
strV := EnumParent3_EnumFromStr(vStr)
intV := EnumParent3_EnumFrom(vIn32)
assert.Equal(t, v, strV)
assert.Equal(t, v, intV)
}
for _, vStr := range EnumParent3_EnumAllName() {
v, valid := EnumParent3_EnumFromValidStr(vStr)
assert.True(t, valid)
assert.Equal(t, vStr, v.String())
}
for _, vIn32 := range EnumParent3_EnumAllValue() {
v, valid := EnumParent3_EnumFromValid(vIn32)
assert.True(t, valid)
assert.Equal(t, vIn32, v.Int32())
}
})
}

func TestNested(t *testing.T) {
cases := []struct {
value EnumParent2_Enum
Expand Down
6 changes: 3 additions & 3 deletions tests/protoc-gen-go-enumx/only_nested/only_nested.pb.enumx.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit d971475

Please sign in to comment.