1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "net/quic/quic_utils_chromium.h" 6 7#include <map> 8 9#include "testing/gtest/include/gtest/gtest.h" 10 11using std::map; 12 13namespace net { 14namespace test { 15namespace { 16 17TEST(QuicUtilsChromiumTest, FindOrNullTest) { 18 map<int, int> m; 19 m[0] = 2; 20 21 // Check FindOrNull 22 int* p1 = FindOrNull(m, 0); 23 CHECK_EQ(*p1, 2); 24 ++(*p1); 25 const map<int, int>& const_m = m; 26 const int* p2 = FindOrNull(const_m, 0); 27 CHECK_EQ(*p2, 3); 28 CHECK(FindOrNull(m, 1) == NULL); 29} 30 31TEST(QuicUtilsChromiumTest, FindOrDieTest) { 32 std::map<int, int> m; 33 m[10] = 15; 34 EXPECT_EQ(15, FindOrDie(m, 10)); 35 // TODO(rtenneti): Use the latest DEATH macros after merging with latest rch's 36 // changes. 37 // ASSERT_DEATH(FindOrDie(m, 8), "Map key not found: 8"); 38 39 // Make sure the non-const reference returning version works. 40 FindOrDie(m, 10) = 20; 41 EXPECT_EQ(20, FindOrDie(m, 10)); 42 43 // Make sure we can lookup values in a const map. 44 const map<int, int>& const_m = m; 45 EXPECT_EQ(20, FindOrDie(const_m, 10)); 46} 47 48} // namespace 49} // namespace test 50} // namespace net 51