| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2013, Google Inc. All rights reserved. | 2 * Copyright (c) 2013, Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 #include "config.h" | 31 #include "config.h" |
| 32 #include "core/html/TimeRanges.h" | 32 #include "core/html/TimeRanges.h" |
| 33 | 33 |
| 34 #include "bindings/core/v8/ExceptionStatePlaceholder.h" | 34 #include "bindings/core/v8/ExceptionStatePlaceholder.h" |
| 35 #include <gtest/gtest.h> | 35 #include <gtest/gtest.h> |
| 36 | |
| 37 #include <sstream> | 36 #include <sstream> |
| 38 | 37 |
| 39 using blink::TimeRanges; | 38 namespace blink { |
| 40 | 39 |
| 41 static std::string ToString(const TimeRanges& ranges) | 40 static std::string ToString(const TimeRanges& ranges) |
| 42 { | 41 { |
| 43 std::stringstream ss; | 42 std::stringstream ss; |
| 44 ss << "{"; | 43 ss << "{"; |
| 45 for (unsigned i = 0; i < ranges.length(); ++i) | 44 for (unsigned i = 0; i < ranges.length(); ++i) |
| 46 ss << " [" << ranges.start(i, IGNORE_EXCEPTION) << "," << ranges.end(i,
IGNORE_EXCEPTION) << ")"; | 45 ss << " [" << ranges.start(i, IGNORE_EXCEPTION) << "," << ranges.end(i,
IGNORE_EXCEPTION) << ")"; |
| 47 ss << " }"; | 46 ss << " }"; |
| 48 | 47 |
| 49 return ss.str(); | 48 return ss.str(); |
| 50 } | 49 } |
| 51 | 50 |
| 52 #define ASSERT_RANGE(expected, range) ASSERT_EQ(expected, ToString(*range)) | 51 #define ASSERT_RANGE(expected, range) ASSERT_EQ(expected, ToString(*range)) |
| 53 | 52 |
| 54 TEST(TimeRanges, Empty) | 53 TEST(TimeRangesTest, Empty) |
| 55 { | 54 { |
| 56 ASSERT_RANGE("{ }", TimeRanges::create()); | 55 ASSERT_RANGE("{ }", TimeRanges::create()); |
| 57 } | 56 } |
| 58 | 57 |
| 59 TEST(TimeRanges, SingleRange) | 58 TEST(TimeRangesTest, SingleRange) |
| 60 { | 59 { |
| 61 ASSERT_RANGE("{ [1,2) }", TimeRanges::create(1, 2)); | 60 ASSERT_RANGE("{ [1,2) }", TimeRanges::create(1, 2)); |
| 62 } | 61 } |
| 63 | 62 |
| 64 TEST(TimeRanges, CreateFromWebTimeRanges) | 63 TEST(TimeRangesTest, CreateFromWebTimeRanges) |
| 65 { | 64 { |
| 66 blink::WebTimeRanges webRanges(static_cast<size_t>(2)); | 65 blink::WebTimeRanges webRanges(static_cast<size_t>(2)); |
| 67 webRanges[0].start = 0; | 66 webRanges[0].start = 0; |
| 68 webRanges[0].end = 1; | 67 webRanges[0].end = 1; |
| 69 webRanges[1].start = 2; | 68 webRanges[1].start = 2; |
| 70 webRanges[1].end = 3; | 69 webRanges[1].end = 3; |
| 71 ASSERT_RANGE("{ [0,1) [2,3) }", TimeRanges::create(webRanges)); | 70 ASSERT_RANGE("{ [0,1) [2,3) }", TimeRanges::create(webRanges)); |
| 72 } | 71 } |
| 73 | 72 |
| 74 TEST(TimeRanges, AddOrder) | 73 TEST(TimeRangesTest, AddOrder) |
| 75 { | 74 { |
| 76 RefPtrWillBeRawPtr<TimeRanges> rangeA = TimeRanges::create(); | 75 RefPtrWillBeRawPtr<TimeRanges> rangeA = TimeRanges::create(); |
| 77 RefPtrWillBeRawPtr<TimeRanges> rangeB = TimeRanges::create(); | 76 RefPtrWillBeRawPtr<TimeRanges> rangeB = TimeRanges::create(); |
| 78 | 77 |
| 79 rangeA->add(0, 2); | 78 rangeA->add(0, 2); |
| 80 rangeA->add(3, 4); | 79 rangeA->add(3, 4); |
| 81 rangeA->add(5, 100); | 80 rangeA->add(5, 100); |
| 82 | 81 |
| 83 std::string expected = "{ [0,2) [3,4) [5,100) }"; | 82 std::string expected = "{ [0,2) [3,4) [5,100) }"; |
| 84 ASSERT_RANGE(expected, rangeA); | 83 ASSERT_RANGE(expected, rangeA); |
| 85 | 84 |
| 86 // Add the values in rangeA to rangeB in reverse order. | 85 // Add the values in rangeA to rangeB in reverse order. |
| 87 for (int i = rangeA->length() - 1; i >= 0; --i) | 86 for (int i = rangeA->length() - 1; i >= 0; --i) |
| 88 rangeB->add(rangeA->start(i, IGNORE_EXCEPTION), rangeA->end(i, IGNORE_EX
CEPTION)); | 87 rangeB->add(rangeA->start(i, IGNORE_EXCEPTION), rangeA->end(i, IGNORE_EX
CEPTION)); |
| 89 | 88 |
| 90 ASSERT_RANGE(expected, rangeB); | 89 ASSERT_RANGE(expected, rangeB); |
| 91 } | 90 } |
| 92 | 91 |
| 93 TEST(TimeRanges, OverlappingAdds) | 92 TEST(TimeRangesTest, OverlappingAdds) |
| 94 { | 93 { |
| 95 RefPtrWillBeRawPtr<TimeRanges> ranges = TimeRanges::create(); | 94 RefPtrWillBeRawPtr<TimeRanges> ranges = TimeRanges::create(); |
| 96 | 95 |
| 97 ranges->add(0, 2); | 96 ranges->add(0, 2); |
| 98 ranges->add(10, 11); | 97 ranges->add(10, 11); |
| 99 ASSERT_RANGE("{ [0,2) [10,11) }", ranges); | 98 ASSERT_RANGE("{ [0,2) [10,11) }", ranges); |
| 100 | 99 |
| 101 ranges->add(0, 2); | 100 ranges->add(0, 2); |
| 102 ASSERT_RANGE("{ [0,2) [10,11) }", ranges); | 101 ASSERT_RANGE("{ [0,2) [10,11) }", ranges); |
| 103 | 102 |
| 104 ranges->add(2, 3); | 103 ranges->add(2, 3); |
| 105 ASSERT_RANGE("{ [0,3) [10,11) }", ranges); | 104 ASSERT_RANGE("{ [0,3) [10,11) }", ranges); |
| 106 | 105 |
| 107 ranges->add(2, 6); | 106 ranges->add(2, 6); |
| 108 ASSERT_RANGE("{ [0,6) [10,11) }", ranges); | 107 ASSERT_RANGE("{ [0,6) [10,11) }", ranges); |
| 109 | 108 |
| 110 ranges->add(9, 10); | 109 ranges->add(9, 10); |
| 111 ASSERT_RANGE("{ [0,6) [9,11) }", ranges); | 110 ASSERT_RANGE("{ [0,6) [9,11) }", ranges); |
| 112 | 111 |
| 113 ranges->add(8, 10); | 112 ranges->add(8, 10); |
| 114 ASSERT_RANGE("{ [0,6) [8,11) }", ranges); | 113 ASSERT_RANGE("{ [0,6) [8,11) }", ranges); |
| 115 | 114 |
| 116 ranges->add(-1, 7); | 115 ranges->add(-1, 7); |
| 117 ASSERT_RANGE("{ [-1,7) [8,11) }", ranges); | 116 ASSERT_RANGE("{ [-1,7) [8,11) }", ranges); |
| 118 | 117 |
| 119 ranges->add(6, 9); | 118 ranges->add(6, 9); |
| 120 ASSERT_RANGE("{ [-1,11) }", ranges); | 119 ASSERT_RANGE("{ [-1,11) }", ranges); |
| 121 } | 120 } |
| 122 | 121 |
| 123 TEST(TimeRanges, IntersectWith_Self) | 122 TEST(TimeRangesTest, IntersectWith_Self) |
| 124 { | 123 { |
| 125 RefPtrWillBeRawPtr<TimeRanges> ranges = TimeRanges::create(0, 2); | 124 RefPtrWillBeRawPtr<TimeRanges> ranges = TimeRanges::create(0, 2); |
| 126 | 125 |
| 127 ASSERT_RANGE("{ [0,2) }", ranges); | 126 ASSERT_RANGE("{ [0,2) }", ranges); |
| 128 | 127 |
| 129 ranges->intersectWith(ranges.get()); | 128 ranges->intersectWith(ranges.get()); |
| 130 | 129 |
| 131 ASSERT_RANGE("{ [0,2) }", ranges); | 130 ASSERT_RANGE("{ [0,2) }", ranges); |
| 132 } | 131 } |
| 133 | 132 |
| 134 TEST(TimeRanges, IntersectWith_IdenticalRange) | 133 TEST(TimeRangesTest, IntersectWith_IdenticalRange) |
| 135 { | 134 { |
| 136 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(0, 2); | 135 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(0, 2); |
| 137 RefPtrWillBeRawPtr<TimeRanges> rangesB = rangesA->copy(); | 136 RefPtrWillBeRawPtr<TimeRanges> rangesB = rangesA->copy(); |
| 138 | 137 |
| 139 ASSERT_RANGE("{ [0,2) }", rangesA); | 138 ASSERT_RANGE("{ [0,2) }", rangesA); |
| 140 ASSERT_RANGE("{ [0,2) }", rangesB); | 139 ASSERT_RANGE("{ [0,2) }", rangesB); |
| 141 | 140 |
| 142 rangesA->intersectWith(rangesB.get()); | 141 rangesA->intersectWith(rangesB.get()); |
| 143 | 142 |
| 144 ASSERT_RANGE("{ [0,2) }", rangesA); | 143 ASSERT_RANGE("{ [0,2) }", rangesA); |
| 145 ASSERT_RANGE("{ [0,2) }", rangesB); | 144 ASSERT_RANGE("{ [0,2) }", rangesB); |
| 146 } | 145 } |
| 147 | 146 |
| 148 TEST(TimeRanges, IntersectWith_Empty) | 147 TEST(TimeRangesTest, IntersectWith_Empty) |
| 149 { | 148 { |
| 150 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(0, 2); | 149 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(0, 2); |
| 151 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); | 150 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); |
| 152 | 151 |
| 153 ASSERT_RANGE("{ [0,2) }", rangesA); | 152 ASSERT_RANGE("{ [0,2) }", rangesA); |
| 154 ASSERT_RANGE("{ }", rangesB); | 153 ASSERT_RANGE("{ }", rangesB); |
| 155 | 154 |
| 156 rangesA->intersectWith(rangesB.get()); | 155 rangesA->intersectWith(rangesB.get()); |
| 157 | 156 |
| 158 ASSERT_RANGE("{ }", rangesA); | 157 ASSERT_RANGE("{ }", rangesA); |
| 159 ASSERT_RANGE("{ }", rangesB); | 158 ASSERT_RANGE("{ }", rangesB); |
| 160 } | 159 } |
| 161 | 160 |
| 162 TEST(TimeRanges, IntersectWith_DisjointRanges1) | 161 TEST(TimeRangesTest, IntersectWith_DisjointRanges1) |
| 163 { | 162 { |
| 164 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); | 163 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); |
| 165 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); | 164 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); |
| 166 | 165 |
| 167 rangesA->add(0, 1); | 166 rangesA->add(0, 1); |
| 168 rangesA->add(4, 5); | 167 rangesA->add(4, 5); |
| 169 | 168 |
| 170 rangesB->add(2, 3); | 169 rangesB->add(2, 3); |
| 171 rangesB->add(6, 7); | 170 rangesB->add(6, 7); |
| 172 | 171 |
| 173 ASSERT_RANGE("{ [0,1) [4,5) }", rangesA); | 172 ASSERT_RANGE("{ [0,1) [4,5) }", rangesA); |
| 174 ASSERT_RANGE("{ [2,3) [6,7) }", rangesB); | 173 ASSERT_RANGE("{ [2,3) [6,7) }", rangesB); |
| 175 | 174 |
| 176 rangesA->intersectWith(rangesB.get()); | 175 rangesA->intersectWith(rangesB.get()); |
| 177 | 176 |
| 178 ASSERT_RANGE("{ }", rangesA); | 177 ASSERT_RANGE("{ }", rangesA); |
| 179 ASSERT_RANGE("{ [2,3) [6,7) }", rangesB); | 178 ASSERT_RANGE("{ [2,3) [6,7) }", rangesB); |
| 180 } | 179 } |
| 181 | 180 |
| 182 TEST(TimeRanges, IntersectWith_DisjointRanges2) | 181 TEST(TimeRangesTest, IntersectWith_DisjointRanges2) |
| 183 { | 182 { |
| 184 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); | 183 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); |
| 185 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); | 184 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); |
| 186 | 185 |
| 187 rangesA->add(0, 1); | 186 rangesA->add(0, 1); |
| 188 rangesA->add(4, 5); | 187 rangesA->add(4, 5); |
| 189 | 188 |
| 190 rangesB->add(1, 4); | 189 rangesB->add(1, 4); |
| 191 rangesB->add(5, 7); | 190 rangesB->add(5, 7); |
| 192 | 191 |
| 193 ASSERT_RANGE("{ [0,1) [4,5) }", rangesA); | 192 ASSERT_RANGE("{ [0,1) [4,5) }", rangesA); |
| 194 ASSERT_RANGE("{ [1,4) [5,7) }", rangesB); | 193 ASSERT_RANGE("{ [1,4) [5,7) }", rangesB); |
| 195 | 194 |
| 196 rangesA->intersectWith(rangesB.get()); | 195 rangesA->intersectWith(rangesB.get()); |
| 197 | 196 |
| 198 ASSERT_RANGE("{ }", rangesA); | 197 ASSERT_RANGE("{ }", rangesA); |
| 199 ASSERT_RANGE("{ [1,4) [5,7) }", rangesB); | 198 ASSERT_RANGE("{ [1,4) [5,7) }", rangesB); |
| 200 } | 199 } |
| 201 | 200 |
| 202 TEST(TimeRanges, IntersectWith_CompleteOverlap1) | 201 TEST(TimeRangesTest, IntersectWith_CompleteOverlap1) |
| 203 { | 202 { |
| 204 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); | 203 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); |
| 205 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); | 204 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); |
| 206 | 205 |
| 207 rangesA->add(1, 3); | 206 rangesA->add(1, 3); |
| 208 rangesA->add(4, 5); | 207 rangesA->add(4, 5); |
| 209 rangesA->add(6, 9); | 208 rangesA->add(6, 9); |
| 210 | 209 |
| 211 rangesB->add(0, 10); | 210 rangesB->add(0, 10); |
| 212 | 211 |
| 213 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA); | 212 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA); |
| 214 ASSERT_RANGE("{ [0,10) }", rangesB); | 213 ASSERT_RANGE("{ [0,10) }", rangesB); |
| 215 | 214 |
| 216 rangesA->intersectWith(rangesB.get()); | 215 rangesA->intersectWith(rangesB.get()); |
| 217 | 216 |
| 218 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA); | 217 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA); |
| 219 ASSERT_RANGE("{ [0,10) }", rangesB); | 218 ASSERT_RANGE("{ [0,10) }", rangesB); |
| 220 } | 219 } |
| 221 | 220 |
| 222 TEST(TimeRanges, IntersectWith_CompleteOverlap2) | 221 TEST(TimeRangesTest, IntersectWith_CompleteOverlap2) |
| 223 { | 222 { |
| 224 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); | 223 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); |
| 225 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); | 224 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); |
| 226 | 225 |
| 227 rangesA->add(1, 3); | 226 rangesA->add(1, 3); |
| 228 rangesA->add(4, 5); | 227 rangesA->add(4, 5); |
| 229 rangesA->add(6, 9); | 228 rangesA->add(6, 9); |
| 230 | 229 |
| 231 rangesB->add(1, 9); | 230 rangesB->add(1, 9); |
| 232 | 231 |
| 233 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA); | 232 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA); |
| 234 ASSERT_RANGE("{ [1,9) }", rangesB); | 233 ASSERT_RANGE("{ [1,9) }", rangesB); |
| 235 | 234 |
| 236 rangesA->intersectWith(rangesB.get()); | 235 rangesA->intersectWith(rangesB.get()); |
| 237 | 236 |
| 238 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA); | 237 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA); |
| 239 ASSERT_RANGE("{ [1,9) }", rangesB); | 238 ASSERT_RANGE("{ [1,9) }", rangesB); |
| 240 } | 239 } |
| 241 | 240 |
| 242 TEST(TimeRanges, IntersectWith_Gaps1) | 241 TEST(TimeRangesTest, IntersectWith_Gaps1) |
| 243 { | 242 { |
| 244 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); | 243 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); |
| 245 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); | 244 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); |
| 246 | 245 |
| 247 rangesA->add(0, 2); | 246 rangesA->add(0, 2); |
| 248 rangesA->add(4, 6); | 247 rangesA->add(4, 6); |
| 249 | 248 |
| 250 rangesB->add(1, 5); | 249 rangesB->add(1, 5); |
| 251 | 250 |
| 252 ASSERT_RANGE("{ [0,2) [4,6) }", rangesA); | 251 ASSERT_RANGE("{ [0,2) [4,6) }", rangesA); |
| 253 ASSERT_RANGE("{ [1,5) }", rangesB); | 252 ASSERT_RANGE("{ [1,5) }", rangesB); |
| 254 | 253 |
| 255 rangesA->intersectWith(rangesB.get()); | 254 rangesA->intersectWith(rangesB.get()); |
| 256 | 255 |
| 257 ASSERT_RANGE("{ [1,2) [4,5) }", rangesA); | 256 ASSERT_RANGE("{ [1,2) [4,5) }", rangesA); |
| 258 ASSERT_RANGE("{ [1,5) }", rangesB); | 257 ASSERT_RANGE("{ [1,5) }", rangesB); |
| 259 } | 258 } |
| 260 | 259 |
| 261 TEST(TimeRanges, IntersectWith_Gaps2) | 260 TEST(TimeRangesTest, IntersectWith_Gaps2) |
| 262 { | 261 { |
| 263 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); | 262 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); |
| 264 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); | 263 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); |
| 265 | 264 |
| 266 rangesA->add(0, 2); | 265 rangesA->add(0, 2); |
| 267 rangesA->add(4, 6); | 266 rangesA->add(4, 6); |
| 268 rangesA->add(8, 10); | 267 rangesA->add(8, 10); |
| 269 | 268 |
| 270 rangesB->add(1, 9); | 269 rangesB->add(1, 9); |
| 271 | 270 |
| 272 ASSERT_RANGE("{ [0,2) [4,6) [8,10) }", rangesA); | 271 ASSERT_RANGE("{ [0,2) [4,6) [8,10) }", rangesA); |
| 273 ASSERT_RANGE("{ [1,9) }", rangesB); | 272 ASSERT_RANGE("{ [1,9) }", rangesB); |
| 274 | 273 |
| 275 rangesA->intersectWith(rangesB.get()); | 274 rangesA->intersectWith(rangesB.get()); |
| 276 | 275 |
| 277 ASSERT_RANGE("{ [1,2) [4,6) [8,9) }", rangesA); | 276 ASSERT_RANGE("{ [1,2) [4,6) [8,9) }", rangesA); |
| 278 ASSERT_RANGE("{ [1,9) }", rangesB); | 277 ASSERT_RANGE("{ [1,9) }", rangesB); |
| 279 } | 278 } |
| 280 | 279 |
| 281 TEST(TimeRanges, IntersectWith_Gaps3) | 280 TEST(TimeRangesTest, IntersectWith_Gaps3) |
| 282 { | 281 { |
| 283 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); | 282 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); |
| 284 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); | 283 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); |
| 285 | 284 |
| 286 rangesA->add(0, 2); | 285 rangesA->add(0, 2); |
| 287 rangesA->add(4, 7); | 286 rangesA->add(4, 7); |
| 288 rangesA->add(8, 10); | 287 rangesA->add(8, 10); |
| 289 | 288 |
| 290 rangesB->add(1, 5); | 289 rangesB->add(1, 5); |
| 291 rangesB->add(6, 9); | 290 rangesB->add(6, 9); |
| 292 | 291 |
| 293 ASSERT_RANGE("{ [0,2) [4,7) [8,10) }", rangesA); | 292 ASSERT_RANGE("{ [0,2) [4,7) [8,10) }", rangesA); |
| 294 ASSERT_RANGE("{ [1,5) [6,9) }", rangesB); | 293 ASSERT_RANGE("{ [1,5) [6,9) }", rangesB); |
| 295 | 294 |
| 296 rangesA->intersectWith(rangesB.get()); | 295 rangesA->intersectWith(rangesB.get()); |
| 297 | 296 |
| 298 ASSERT_RANGE("{ [1,2) [4,5) [6,7) [8,9) }", rangesA); | 297 ASSERT_RANGE("{ [1,2) [4,5) [6,7) [8,9) }", rangesA); |
| 299 ASSERT_RANGE("{ [1,5) [6,9) }", rangesB); | 298 ASSERT_RANGE("{ [1,5) [6,9) }", rangesB); |
| 300 } | 299 } |
| 301 | 300 |
| 302 TEST(TimeRanges, Nearest) | 301 TEST(TimeRangesTest, Nearest) |
| 303 { | 302 { |
| 304 RefPtrWillBeRawPtr<TimeRanges> ranges = TimeRanges::create(); | 303 RefPtrWillBeRawPtr<TimeRanges> ranges = TimeRanges::create(); |
| 305 ranges->add(0, 2); | 304 ranges->add(0, 2); |
| 306 ranges->add(5, 7); | 305 ranges->add(5, 7); |
| 307 | 306 |
| 308 ASSERT_EQ(0, ranges->nearest(0, 0)); | 307 ASSERT_EQ(0, ranges->nearest(0, 0)); |
| 309 ASSERT_EQ(1, ranges->nearest(1, 0)); | 308 ASSERT_EQ(1, ranges->nearest(1, 0)); |
| 310 ASSERT_EQ(2, ranges->nearest(2, 0)); | 309 ASSERT_EQ(2, ranges->nearest(2, 0)); |
| 311 ASSERT_EQ(2, ranges->nearest(3, 0)); | 310 ASSERT_EQ(2, ranges->nearest(3, 0)); |
| 312 ASSERT_EQ(5, ranges->nearest(4, 0)); | 311 ASSERT_EQ(5, ranges->nearest(4, 0)); |
| 313 ASSERT_EQ(5, ranges->nearest(5, 0)); | 312 ASSERT_EQ(5, ranges->nearest(5, 0)); |
| 314 ASSERT_EQ(7, ranges->nearest(8, 0)); | 313 ASSERT_EQ(7, ranges->nearest(8, 0)); |
| 315 | 314 |
| 316 ranges->add(9, 11); | 315 ranges->add(9, 11); |
| 317 ASSERT_EQ(7, ranges->nearest(8, 6)); | 316 ASSERT_EQ(7, ranges->nearest(8, 6)); |
| 318 ASSERT_EQ(7, ranges->nearest(8, 8)); | 317 ASSERT_EQ(7, ranges->nearest(8, 8)); |
| 319 ASSERT_EQ(9, ranges->nearest(8, 10)); | 318 ASSERT_EQ(9, ranges->nearest(8, 10)); |
| 320 } | 319 } |
| 320 |
| 321 } // namespace blink |
| OLD | NEW |