Skip to content

Commit b815fbe

Browse files
authored
fix: fix generated unit tests with repeated double (#1582)
* chore: fix generated unit tests that fail with repeated double * apply fix in ads templates
1 parent 7ae3f64 commit b815fbe

3 files changed

Lines changed: 83 additions & 0 deletions

File tree

packages/gapic-generator/gapic/ads-templates/tests/unit/gapic/%name_%version/%sub/test_%service.py.j2

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,16 @@ def test_{{ method_name }}(request_type, transport: str = 'grpc'):
587587
{% for field in method.output.fields.values() | rejectattr('message') %}
588588
{% if not field.oneof or field.proto3_optional %}
589589
{% if field.field_pb.type in [1, 2] %}{# Use approx eq for floats #}
590+
{% if field.repeated %}
591+
for index in range(len(response.{{ field.name }})):
592+
assert math.isclose(
593+
response.{{ field.name }}[index],
594+
{{ field.mock_value }}[index],
595+
rel_tol=1e-6,
596+
)
597+
{% else %}{# field.repeated #}
590598
assert math.isclose(response.{{ field.name }}, {{ field.mock_value }}, rel_tol=1e-6)
599+
{% endif %}{# field.repeated #}
591600
{% elif field.field_pb.type == 8 %}{# Use 'is' for bools #}
592601
assert response.{{ field.name }} is {{ field.mock_value }}
593602
{% else %}
@@ -1076,7 +1085,16 @@ def test_{{ method.name|snake_case }}_rest(request_type):
10761085
{% for field in method.output.fields.values() | rejectattr('message') %}
10771086
{% if not field.oneof or field.proto3_optional %}
10781087
{% if field.field_pb.type in [1, 2] %}{# Use approx eq for floats #}
1088+
{% if field.repeated %}
1089+
for index in range(len(response.{{ field.name }})):
1090+
assert math.isclose(
1091+
response.{{ field.name }}[index],
1092+
{{ field.mock_value }}[index],
1093+
rel_tol=1e-6,
1094+
)
1095+
{% else %}{# field.repeated #}
10791096
assert math.isclose(response.{{ field.name }}, {{ field.mock_value }}, rel_tol=1e-6)
1097+
{% endif %}
10801098
{% elif field.field_pb.type == 8 %}{# Use 'is' for bools #}
10811099
assert response.{{ field.name }} is {{ field.mock_value }}
10821100
{% else %}

packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_macros.j2

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,16 @@ def test_{{ method_name }}(request_type, transport: str = 'grpc'):
7676
{% for field in method_output.fields.values() | rejectattr('message') %}
7777
{% if not field.oneof or field.proto3_optional %}
7878
{% if field.field_pb.type in [1, 2] %}{# Use approx eq for floats #}
79+
{% if field.repeated %}
80+
for index in range(len(response.{{ field.name }})):
81+
assert math.isclose(
82+
response.{{ field.name }}[index],
83+
{{ field.mock_value }}[index],
84+
rel_tol=1e-6,
85+
)
86+
{% else %}{# field.repeated #}
7987
assert math.isclose(response.{{ field.name }}, {{ field.mock_value }}, rel_tol=1e-6)
88+
{% endif %}{# field.repeated #}
8089
{% elif field.field_pb.type == 8 %}{# Use 'is' for bools #}
8190
assert response.{{ field.name }} is {{ field.mock_value }}
8291
{% else %}
@@ -187,7 +196,16 @@ async def test_{{ method_name }}_async(transport: str = 'grpc_asyncio', request_
187196
{% for field in method_output.fields.values() | rejectattr('message') %}
188197
{% if not field.oneof or field.proto3_optional %}
189198
{% if field.field_pb.type in [1, 2] %}{# Use approx eq for floats #}
199+
{% if field.repeated %}
200+
for index in range(len(response.{{ field.name }})):
201+
assert math.isclose(
202+
response.{{ field.name }}[index],
203+
{{ field.mock_value }}[index],
204+
rel_tol=1e-6,
205+
)
206+
{% else %}{# field.repeated #}
190207
assert math.isclose(response.{{ field.name }}, {{ field.mock_value }}, rel_tol=1e-6)
208+
{% endif %}{# field.repeated #}
191209
{% elif field.field_pb.type == 8 %}{# Use 'is' for bools #}
192210
assert response.{{ field.name }} is {{ field.mock_value }}
193211
{% else %}
@@ -958,7 +976,16 @@ def test_{{ method_name }}_rest(request_type):
958976
{% for field in method_output.fields.values() | rejectattr('message') %}
959977
{% if not field.oneof or field.proto3_optional %}
960978
{% if field.field_pb.type in [1, 2] %}{# Use approx eq for floats #}
979+
{% if field.repeated %}
980+
for index in range(len(response.{{ field.name }})):
981+
assert math.isclose(
982+
response.{{ field.name }}[index],
983+
{{ field.mock_value }}[index],
984+
rel_tol=1e-6,
985+
)
986+
{% else %}{# field.repeated #}
961987
assert math.isclose(response.{{ field.name }}, {{ field.mock_value }}, rel_tol=1e-6)
988+
{% endif %}{# field.repeated #}
962989
{% elif field.field_pb.type == 8 %}{# Use 'is' for bools #}
963990
assert response.{{ field.name }} is {{ field.mock_value }}
964991
{% else %}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Copyright (C) 2021 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
syntax = "proto3";
16+
17+
package google.fragment;
18+
19+
import "google/protobuf/struct.proto";
20+
import "google/api/client.proto";
21+
22+
service MyServiceRepeatedDouble {
23+
option (google.api.default_host) = "my.example.com";
24+
25+
rpc MyMethod(MethodRequestWithRepeatedDouble) returns (MethodResponseWithRepeatedDouble) {
26+
option (google.api.method_signature) = "parameter,items";
27+
}
28+
}
29+
30+
message MethodRequestWithRepeatedDouble {
31+
google.protobuf.Value parameter = 1;
32+
repeated google.protobuf.Value items = 2;
33+
repeated double repeated_items = 3;
34+
}
35+
36+
message MethodResponseWithRepeatedDouble {
37+
repeated double result = 1;
38+
}

0 commit comments

Comments
 (0)