tree 958f7aed60e163faa1bcec5a3ed229e7e64f194f
parent 75c7ea51042b3846ccd0276a686f5bad440ea906
author bnc <bnc@google.com> 1623438564 -0700
committer Copybara-Service <copybara-worker@google.com> 1623438641 -0700

Add QuicCryptoClientConfigTest.MultipleCanonicalEntries.

When working on cl/378863627 I originally wrote:

  auto it = canonical_server_map_.lower_bound(suffix_server_id);
  if (it == canonical_server_map_.end() || it->first < suffix_server_id) {
    canonical_server_map_.insert(...);
    return false;
  }

This is incorrect: lower_bound() never returns an iterator with key less than
its argument.  No tests caught this.  The statement should have been
  if (it == canonical_server_map_.end() || suffix_server_id < it->first) {
or simply
  if (it == canonical_server_map_.end() || it->first != suffix_server_id) {

This CL adds a test that would have failed with the incorrect statement.

PiperOrigin-RevId: 378922152
