Add map test cases to no_field_presence_test. #18120
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add map test cases to no_field_presence_test.
Maps behave in a very interesting way if they are set to be implicit-presence
fields.
First of all they present the possibility that the key or value (or both) can
be the default zero value. When that happens, the gencode behaviour and the
reflection behaviour is actually different.
For example, gencode would not count zero entries in the map. However,
reflection APIs such as HasField will return true for zero map entry fields. In
essence, for maps, reflection behaves like explicit presence, but gencode
behaves like implicit presence.
(Note that this is not exactly intended, but it's just hard to change...)
I'm adding unit tests in no_field_presence_test to cover this quirk.