| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 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 #ifndef NET_BASE_NET_LOG_UNITTEST_H_ | |
| 6 #define NET_BASE_NET_LOG_UNITTEST_H_ | |
| 7 | |
| 8 #include <cstddef> | |
| 9 | |
| 10 #include "net/base/capturing_net_log.h" | |
| 11 #include "testing/gtest/include/gtest/gtest.h" | |
| 12 | |
| 13 namespace net { | |
| 14 | |
| 15 // Create a timestamp with internal value of |t| milliseconds from the epoch. | |
| 16 inline base::TimeTicks MakeTime(int t) { | |
| 17 base::TimeTicks ticks; // initialized to 0. | |
| 18 ticks += base::TimeDelta::FromMilliseconds(t); | |
| 19 return ticks; | |
| 20 } | |
| 21 | |
| 22 inline ::testing::AssertionResult LogContainsEventHelper( | |
| 23 const CapturingNetLog::CapturedEntryList& entries, | |
| 24 int i, // Negative indices are reverse indices. | |
| 25 const base::TimeTicks& expected_time, | |
| 26 bool check_time, | |
| 27 NetLog::EventType expected_event, | |
| 28 NetLog::EventPhase expected_phase) { | |
| 29 // Negative indices are reverse indices. | |
| 30 size_t j = (i < 0) ? | |
| 31 static_cast<size_t>(static_cast<int>(entries.size()) + i) : | |
| 32 static_cast<size_t>(i); | |
| 33 if (j >= entries.size()) | |
| 34 return ::testing::AssertionFailure() << j << " is out of bounds."; | |
| 35 const CapturingNetLog::CapturedEntry& entry = entries[j]; | |
| 36 if (expected_event != entry.type) { | |
| 37 return ::testing::AssertionFailure() | |
| 38 << "Actual event: " << NetLog::EventTypeToString(entry.type) | |
| 39 << ". Expected event: " << NetLog::EventTypeToString(expected_event) | |
| 40 << "."; | |
| 41 } | |
| 42 if (expected_phase != entry.phase) { | |
| 43 return ::testing::AssertionFailure() | |
| 44 << "Actual phase: " << entry.phase | |
| 45 << ". Expected phase: " << expected_phase << "."; | |
| 46 } | |
| 47 if (check_time) { | |
| 48 if (expected_time != entry.time) { | |
| 49 return ::testing::AssertionFailure() | |
| 50 << "Actual time: " << entry.time.ToInternalValue() | |
| 51 << ". Expected time: " << expected_time.ToInternalValue() | |
| 52 << "."; | |
| 53 } | |
| 54 } | |
| 55 return ::testing::AssertionSuccess(); | |
| 56 } | |
| 57 | |
| 58 inline ::testing::AssertionResult LogContainsEventAtTime( | |
| 59 const CapturingNetLog::CapturedEntryList& log, | |
| 60 int i, // Negative indices are reverse indices. | |
| 61 const base::TimeTicks& expected_time, | |
| 62 NetLog::EventType expected_event, | |
| 63 NetLog::EventPhase expected_phase) { | |
| 64 return LogContainsEventHelper(log, i, expected_time, true, | |
| 65 expected_event, expected_phase); | |
| 66 } | |
| 67 | |
| 68 // Version without timestamp. | |
| 69 inline ::testing::AssertionResult LogContainsEvent( | |
| 70 const CapturingNetLog::CapturedEntryList& log, | |
| 71 int i, // Negative indices are reverse indices. | |
| 72 NetLog::EventType expected_event, | |
| 73 NetLog::EventPhase expected_phase) { | |
| 74 return LogContainsEventHelper(log, i, base::TimeTicks(), false, | |
| 75 expected_event, expected_phase); | |
| 76 } | |
| 77 | |
| 78 // Version for PHASE_BEGIN (and no timestamp). | |
| 79 inline ::testing::AssertionResult LogContainsBeginEvent( | |
| 80 const CapturingNetLog::CapturedEntryList& log, | |
| 81 int i, // Negative indices are reverse indices. | |
| 82 NetLog::EventType expected_event) { | |
| 83 return LogContainsEvent(log, i, expected_event, NetLog::PHASE_BEGIN); | |
| 84 } | |
| 85 | |
| 86 // Version for PHASE_END (and no timestamp). | |
| 87 inline ::testing::AssertionResult LogContainsEndEvent( | |
| 88 const CapturingNetLog::CapturedEntryList& log, | |
| 89 int i, // Negative indices are reverse indices. | |
| 90 NetLog::EventType expected_event) { | |
| 91 return LogContainsEvent(log, i, expected_event, NetLog::PHASE_END); | |
| 92 } | |
| 93 | |
| 94 inline ::testing::AssertionResult LogContainsEntryWithType( | |
| 95 const CapturingNetLog::CapturedEntryList& entries, | |
| 96 int i, // Negative indices are reverse indices. | |
| 97 NetLog::EventType type) { | |
| 98 // Negative indices are reverse indices. | |
| 99 size_t j = (i < 0) ? | |
| 100 static_cast<size_t>(static_cast<int>(entries.size()) + i) : | |
| 101 static_cast<size_t>(i); | |
| 102 if (j >= entries.size()) | |
| 103 return ::testing::AssertionFailure() << j << " is out of bounds."; | |
| 104 const CapturingNetLog::CapturedEntry& entry = entries[j]; | |
| 105 if (entry.type != type) | |
| 106 return ::testing::AssertionFailure() << "Type does not match."; | |
| 107 return ::testing::AssertionSuccess(); | |
| 108 } | |
| 109 | |
| 110 // Check if the log contains any entry of the given type at |min_index| or | |
| 111 // after. | |
| 112 inline ::testing::AssertionResult LogContainsEntryWithTypeAfter( | |
| 113 const CapturingNetLog::CapturedEntryList& entries, | |
| 114 int min_index, // Negative indices are reverse indices. | |
| 115 NetLog::EventType type) { | |
| 116 // Negative indices are reverse indices. | |
| 117 size_t real_index = (min_index < 0) ? | |
| 118 static_cast<size_t>(static_cast<int>(entries.size()) + min_index) : | |
| 119 static_cast<size_t>(min_index); | |
| 120 for (size_t i = real_index; i < entries.size(); ++i) { | |
| 121 const CapturingNetLog::CapturedEntry& entry = entries[i]; | |
| 122 if (entry.type == type) | |
| 123 return ::testing::AssertionSuccess(); | |
| 124 } | |
| 125 return ::testing::AssertionFailure(); | |
| 126 } | |
| 127 | |
| 128 // Expect that the log contains an event, but don't care about where | |
| 129 // as long as the first index where it is found is at least |min_index|. | |
| 130 // Returns the position where the event was found. | |
| 131 inline size_t ExpectLogContainsSomewhere( | |
| 132 const CapturingNetLog::CapturedEntryList& entries, | |
| 133 size_t min_index, | |
| 134 NetLog::EventType expected_event, | |
| 135 NetLog::EventPhase expected_phase) { | |
| 136 size_t i = 0; | |
| 137 for (; i < entries.size(); ++i) { | |
| 138 const CapturingNetLog::CapturedEntry& entry = entries[i]; | |
| 139 if (entry.type == expected_event && | |
| 140 entry.phase == expected_phase) | |
| 141 break; | |
| 142 } | |
| 143 EXPECT_LT(i, entries.size()); | |
| 144 EXPECT_GE(i, min_index); | |
| 145 return i; | |
| 146 } | |
| 147 | |
| 148 // Expect that the log contains an event, but don't care about where | |
| 149 // as long as one index where it is found is at least |min_index|. | |
| 150 // Returns the first such position where the event was found. | |
| 151 inline size_t ExpectLogContainsSomewhereAfter( | |
| 152 const CapturingNetLog::CapturedEntryList& entries, | |
| 153 size_t min_index, | |
| 154 NetLog::EventType expected_event, | |
| 155 NetLog::EventPhase expected_phase) { | |
| 156 size_t i = min_index; | |
| 157 for (; i < entries.size(); ++i) { | |
| 158 const CapturingNetLog::CapturedEntry& entry = entries[i]; | |
| 159 if (entry.type == expected_event && | |
| 160 entry.phase == expected_phase) | |
| 161 break; | |
| 162 } | |
| 163 EXPECT_LT(i, entries.size()); | |
| 164 return i; | |
| 165 } | |
| 166 | |
| 167 } // namespace net | |
| 168 | |
| 169 #endif // NET_BASE_NET_LOG_UNITTEST_H_ | |
| OLD | NEW |