Skip to content

Commit 7452e0d

Browse files
Merge pull request #1073 from andrewparmet:fix-fixed32-fixed64-celvalue
PiperOrigin-RevId: 926127185
2 parents 7f26293 + 2793c00 commit 7452e0d

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

common/src/main/java/dev/cel/common/values/ProtoCelValueConverter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,11 +154,13 @@ public Object fromProtoMessageFieldToCelValue(Message message, FieldDescriptor f
154154

155155
return toRuntimeValue(result);
156156
case UINT32:
157+
case FIXED32:
157158
if (!fieldDescriptor.isRepeated()) {
158159
return UnsignedLong.valueOf((int) result);
159160
}
160161
break;
161162
case UINT64:
163+
case FIXED64:
162164
if (!fieldDescriptor.isRepeated()) {
163165
return UnsignedLong.fromLongBits((long) result);
164166
}

common/src/test/java/dev/cel/common/values/ProtoMessageValueTest.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,29 @@ public void selectField_durationOutOfRange_success(int seconds, int nanos) {
303303
.isEqualTo(Duration.ofSeconds(seconds, nanos));
304304
}
305305

306+
@Test
307+
public void selectField_fixed32_returnsUnsignedLong() {
308+
TestAllTypes testAllTypes = TestAllTypes.newBuilder().setSingleFixed32(1).build();
309+
310+
ProtoMessageValue protoMessageValue =
311+
ProtoMessageValue.create(
312+
testAllTypes, DefaultDescriptorPool.INSTANCE, PROTO_CEL_VALUE_CONVERTER, false);
313+
314+
assertThat(protoMessageValue.select("single_fixed32")).isEqualTo(UnsignedLong.valueOf(1L));
315+
}
316+
317+
@Test
318+
public void selectField_fixed64_returnsUnsignedLong() {
319+
TestAllTypes testAllTypes =
320+
TestAllTypes.newBuilder().setSingleFixed64(UnsignedLong.MAX_VALUE.longValue()).build();
321+
322+
ProtoMessageValue protoMessageValue =
323+
ProtoMessageValue.create(
324+
testAllTypes, DefaultDescriptorPool.INSTANCE, PROTO_CEL_VALUE_CONVERTER, false);
325+
326+
assertThat(protoMessageValue.select("single_fixed64")).isEqualTo(UnsignedLong.MAX_VALUE);
327+
}
328+
306329
@SuppressWarnings("ImmutableEnumChecker") // Test only
307330
private enum SelectFieldJsonValueTestCase {
308331
NULL(Value.newBuilder().build(), NullValue.NULL_VALUE),

0 commit comments

Comments
 (0)