Skip to content

Commit

Permalink
Fix in rule for repeatet int32
Browse files Browse the repository at this point in the history
  • Loading branch information
mortezaPRK authored Jan 27, 2025
1 parent 29b51fb commit 2521b99
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 0 deletions.
14 changes: 14 additions & 0 deletions templates/goshared/msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,20 @@ var _ interface{
{{- end }}
}
{{ end }}{{ end }}
{{ if has .Rules.Items.GetInt32 "In" }} {{ if .Rules.Items.GetInt32.In }}
var {{ lookup .Field "InLookup" }} = map[int32]struct{}{
{{- range .Rules.Items.GetInt32.In }}
{{ inKey $f . }}: {},
{{- end }}
}
{{ end }}{{ end }}
{{ if has .Rules.Items.GetInt32 "NotIn" }} {{ if .Rules.Items.GetInt32.NotIn }}
var {{ lookup .Field "NotInLookup" }} = map[int32]struct{}{
{{- range .Rules.Items.GetInt32.NotIn }}
{{ inKey $f . }}: {},
{{- end }}
}
{{ end }}{{ end }}
{{ if has .Rules.Items.GetAny "In" }} {{ if .Rules.Items.GetAny.In }}
var {{ lookup .Field "InLookup" }} = map[string]struct{}{
{{- range .Rules.Items.GetAny.In }}
Expand Down
2 changes: 2 additions & 0 deletions tests/harness/cases/repeated.proto
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ message RepeatedItemPattern { repeated string val = 1 [(validate.rules).repeate
message RepeatedEmbedSkip { repeated Embed val = 1 [(validate.rules).repeated.items.message.skip = true]; }
message RepeatedItemIn { repeated string val = 1 [(validate.rules).repeated.items.string = {in: ["foo", "bar"]}]; }
message RepeatedItemNotIn { repeated string val = 1 [(validate.rules).repeated.items.string = {not_in: ["foo", "bar"]}]; }
message RepeatedItemInt32In { repeated int32 val = 1 [(validate.rules).repeated.items.int32 = {in: [1, 2]}]; }
message RepeatedItemInt32NotIn { repeated int32 val = 1 [(validate.rules).repeated.items.int32 = {not_in: [1, 2]}]; }
message RepeatedEnumIn { repeated AnEnum val = 1 [(validate.rules).repeated.items.enum = {in: [0]}]; }
message RepeatedEnumNotIn { repeated AnEnum val = 1 [(validate.rules).repeated.items.enum = {not_in: [0]}]; }
message RepeatedEmbeddedEnumIn { repeated AnotherInEnum val = 1 [(validate.rules).repeated.items.enum = {in: [0]}]; enum AnotherInEnum {A = 0; B = 1; }}
Expand Down
5 changes: 5 additions & 0 deletions tests/harness/executor/cases.go
Original file line number Diff line number Diff line change
Expand Up @@ -1127,6 +1127,11 @@ var repeatedCases = []TestCase{
{"repeated - items - invalid (not_in)", &cases.RepeatedItemNotIn{Val: []string{"foo"}}, 1},
{"repeated - items - valid (not_in)", &cases.RepeatedItemNotIn{Val: []string{"baz"}}, 0},

{"repeated - items - invalid (int32 in)", &cases.RepeatedItemInt32In{Val: []int32{3}}, 1},
{"repeated - items - valid (int32 in)", &cases.RepeatedItemInt32In{Val: []int32{1}}, 0},
{"repeated - items - invalid (int32 not_in)", &cases.RepeatedItemInt32NotIn{Val: []int32{3}}, 1},
{"repeated - items - valid (int32 not_in)", &cases.RepeatedItemInt32NotIn{Val: []int32{1}}, 0},

{"repeated - items - invalid (enum in)", &cases.RepeatedEnumIn{Val: []cases.AnEnum{1}}, 1},
{"repeated - items - valid (enum in)", &cases.RepeatedEnumIn{Val: []cases.AnEnum{0}}, 0},
{"repeated - items - invalid (enum not_in)", &cases.RepeatedEnumNotIn{Val: []cases.AnEnum{0}}, 1},
Expand Down

0 comments on commit 2521b99

Please sign in to comment.