| OLD | NEW |
| (Empty) |
| 1 <!DOCTYPE html> | |
| 2 <!-- | |
| 3 Copyright (c) 2014 The Chromium Authors. All rights reserved. | |
| 4 Use of this source code is governed by a BSD-style license that can be | |
| 5 found in the LICENSE file. | |
| 6 --> | |
| 7 | |
| 8 <link rel="import" href="/tracing/base/range.html"> | |
| 9 | |
| 10 <script> | |
| 11 'use strict'; | |
| 12 | |
| 13 tr.b.unittest.testSuite(function() { | |
| 14 var Range = tr.b.Range; | |
| 15 | |
| 16 test('addValue', function() { | |
| 17 var range = new Range(); | |
| 18 assert.isTrue(range.isEmpty); | |
| 19 range.addValue(1); | |
| 20 assert.isFalse(range.isEmpty); | |
| 21 assert.equal(1, range.min); | |
| 22 assert.equal(1, range.max); | |
| 23 | |
| 24 range.addValue(2); | |
| 25 assert.isFalse(range.isEmpty); | |
| 26 assert.equal(1, range.min); | |
| 27 assert.equal(2, range.max); | |
| 28 }); | |
| 29 | |
| 30 test('addNonEmptyRange', function() { | |
| 31 var r1 = new Range(); | |
| 32 r1.addValue(1); | |
| 33 r1.addValue(2); | |
| 34 | |
| 35 var r = new Range(); | |
| 36 r.addRange(r1); | |
| 37 assert.equal(1, r.min); | |
| 38 assert.equal(2, r.max); | |
| 39 | |
| 40 var r2 = Range.fromDict(r.toJSON()); | |
| 41 assert.equal(r2.isEmpty, r.isEmpty); | |
| 42 assert.equal(r2.max, r.max); | |
| 43 assert.equal(r2.min, r.min); | |
| 44 }); | |
| 45 | |
| 46 test('addEmptyRange', function() { | |
| 47 var r1 = new Range(); | |
| 48 | |
| 49 var r = new Range(); | |
| 50 r.addRange(r1); | |
| 51 assert.isTrue(r.isEmpty); | |
| 52 assert.isUndefined(r.min); | |
| 53 assert.isUndefined(r.max); | |
| 54 | |
| 55 var r2 = Range.fromDict(r.toJSON()); | |
| 56 assert.equal(r2.isEmpty, r.isEmpty); | |
| 57 assert.isUndefined(r2.max); | |
| 58 assert.isUndefined(r2.min); | |
| 59 }); | |
| 60 | |
| 61 test('addRangeToRange', function() { | |
| 62 var r1 = new Range(); | |
| 63 r1.addValue(1); | |
| 64 r1.addValue(2); | |
| 65 | |
| 66 var r = new Range(); | |
| 67 r.addValue(3); | |
| 68 r.addRange(r1); | |
| 69 | |
| 70 assert.isFalse(r.isEmpty); | |
| 71 assert.equal(1, r.min); | |
| 72 assert.equal(3, r.max); | |
| 73 }); | |
| 74 | |
| 75 test('containsRange', function() { | |
| 76 var r1 = Range.fromExplicitRange(0, 3); | |
| 77 var r2 = Range.fromExplicitRange(1, 2); | |
| 78 | |
| 79 assert.isTrue(r1.containsRangeInclusive(r2)); | |
| 80 assert.isFalse(r2.containsRangeInclusive(r1)); | |
| 81 assert.isTrue(r1.containsRangeExclusive(r2)); | |
| 82 assert.isFalse(r2.containsRangeExclusive(r1)); | |
| 83 }); | |
| 84 | |
| 85 test('containsRange_emptyRange', function() { | |
| 86 var r1 = Range.fromExplicitRange(0, 3); | |
| 87 var r2 = new Range(); | |
| 88 | |
| 89 assert.isFalse(r1.containsRangeInclusive(r2)); | |
| 90 assert.isFalse(r2.containsRangeInclusive(r1)); | |
| 91 assert.isFalse(r1.containsRangeExclusive(r2)); | |
| 92 assert.isFalse(r2.containsRangeExclusive(r1)); | |
| 93 }); | |
| 94 | |
| 95 test('containsRange_overlapping', function() { | |
| 96 var r1 = Range.fromExplicitRange(0, 3); | |
| 97 var r2 = Range.fromExplicitRange(2, 4); | |
| 98 | |
| 99 assert.isFalse(r1.containsRangeInclusive(r2)); | |
| 100 assert.isFalse(r2.containsRangeInclusive(r1)); | |
| 101 assert.isFalse(r1.containsRangeExclusive(r2)); | |
| 102 assert.isFalse(r2.containsRangeExclusive(r1)); | |
| 103 }); | |
| 104 | |
| 105 test('containsRange_disjoint', function() { | |
| 106 var r1 = Range.fromExplicitRange(0, 2); | |
| 107 var r2 = Range.fromExplicitRange(3, 5); | |
| 108 | |
| 109 assert.isFalse(r1.containsRangeInclusive(r2)); | |
| 110 assert.isFalse(r2.containsRangeInclusive(r1)); | |
| 111 assert.isFalse(r1.containsRangeExclusive(r2)); | |
| 112 assert.isFalse(r2.containsRangeExclusive(r1)); | |
| 113 }); | |
| 114 | |
| 115 test('containsRange_singlePointRange', function() { | |
| 116 var r1 = Range.fromExplicitRange(0, 2); | |
| 117 var r2 = Range.fromExplicitRange(1, 1); | |
| 118 | |
| 119 assert.isTrue(r1.containsRangeInclusive(r2)); | |
| 120 assert.isFalse(r2.containsRangeInclusive(r1)); | |
| 121 assert.isTrue(r1.containsRangeExclusive(r2)); | |
| 122 assert.isFalse(r2.containsRangeExclusive(r1)); | |
| 123 }); | |
| 124 | |
| 125 test('containsRange_singlePointRangeAtBorder', function() { | |
| 126 var r1 = Range.fromExplicitRange(0, 2); | |
| 127 var r2 = Range.fromExplicitRange(2, 2); | |
| 128 | |
| 129 assert.isTrue(r1.containsRangeInclusive(r2)); | |
| 130 assert.isFalse(r2.containsRangeInclusive(r1)); | |
| 131 assert.isFalse(r1.containsRangeExclusive(r2)); | |
| 132 assert.isFalse(r2.containsRangeExclusive(r1)); | |
| 133 }); | |
| 134 | |
| 135 test('containsExplicitRange', function() { | |
| 136 var r1 = Range.fromExplicitRange(0, 3); | |
| 137 var r2 = Range.fromExplicitRange(1, 2); | |
| 138 | |
| 139 assert.isTrue(r1.containsExplicitRangeInclusive(1, 2)); | |
| 140 assert.isFalse(r2.containsExplicitRangeInclusive(0, 3)); | |
| 141 assert.isTrue(r1.containsExplicitRangeExclusive(1, 2)); | |
| 142 assert.isFalse(r2.containsExplicitRangeExclusive(0, 3)); | |
| 143 }); | |
| 144 | |
| 145 test('containsExplicitRange_overlapping', function() { | |
| 146 var r1 = Range.fromExplicitRange(0, 3); | |
| 147 var r2 = Range.fromExplicitRange(2, 4); | |
| 148 | |
| 149 assert.isFalse(r1.containsExplicitRangeInclusive(2, 4)); | |
| 150 assert.isFalse(r2.containsExplicitRangeInclusive(0, 3)); | |
| 151 assert.isFalse(r1.containsExplicitRangeExclusive(2, 4)); | |
| 152 assert.isFalse(r2.containsExplicitRangeExclusive(0, 3)); | |
| 153 }); | |
| 154 | |
| 155 test('containsExplicitRange_disjoint', function() { | |
| 156 var r1 = Range.fromExplicitRange(0, 2); | |
| 157 var r2 = Range.fromExplicitRange(3, 5); | |
| 158 | |
| 159 assert.isFalse(r1.containsExplicitRangeInclusive(3, 5)); | |
| 160 assert.isFalse(r2.containsExplicitRangeInclusive(0, 2)); | |
| 161 assert.isFalse(r1.containsExplicitRangeExclusive(3, 5)); | |
| 162 assert.isFalse(r2.containsExplicitRangeExclusive(0, 2)); | |
| 163 }); | |
| 164 | |
| 165 test('containsExplicitRange_singlePointRange', function() { | |
| 166 var r1 = Range.fromExplicitRange(0, 2); | |
| 167 var r2 = Range.fromExplicitRange(1, 1); | |
| 168 | |
| 169 assert.isTrue(r1.containsExplicitRangeInclusive(1, 1)); | |
| 170 assert.isFalse(r2.containsExplicitRangeInclusive(0, 2)); | |
| 171 assert.isTrue(r1.containsExplicitRangeExclusive(1, 1)); | |
| 172 assert.isFalse(r2.containsExplicitRangeExclusive(0, 2)); | |
| 173 }); | |
| 174 | |
| 175 test('containsExplicitRange_singlePointRangeAtBorder', function() { | |
| 176 var r1 = Range.fromExplicitRange(0, 2); | |
| 177 var r2 = Range.fromExplicitRange(2, 2); | |
| 178 | |
| 179 assert.isTrue(r1.containsExplicitRangeInclusive(2, 2)); | |
| 180 assert.isFalse(r2.containsExplicitRangeInclusive(0, 2)); | |
| 181 assert.isFalse(r1.containsExplicitRangeExclusive(2, 2)); | |
| 182 assert.isFalse(r2.containsExplicitRangeExclusive(0, 2)); | |
| 183 }); | |
| 184 | |
| 185 test('intersectsRange', function() { | |
| 186 var r1 = Range.fromExplicitRange(0, 3); | |
| 187 var r2 = Range.fromExplicitRange(1, 2); | |
| 188 | |
| 189 assert.isTrue(r1.intersectsRangeInclusive(r2)); | |
| 190 assert.isTrue(r2.intersectsRangeInclusive(r1)); | |
| 191 assert.isTrue(r1.intersectsRangeExclusive(r2)); | |
| 192 assert.isTrue(r2.intersectsRangeExclusive(r1)); | |
| 193 }); | |
| 194 | |
| 195 test('intersectsRange_emptyRange', function() { | |
| 196 var r1 = Range.fromExplicitRange(0, 3); | |
| 197 var r2 = new Range(); | |
| 198 | |
| 199 assert.isFalse(r1.intersectsRangeInclusive(r2)); | |
| 200 assert.isFalse(r2.intersectsRangeInclusive(r1)); | |
| 201 assert.isFalse(r1.intersectsRangeExclusive(r2)); | |
| 202 assert.isFalse(r2.intersectsRangeExclusive(r1)); | |
| 203 }); | |
| 204 | |
| 205 test('intersectsRange_overlapping', function() { | |
| 206 var r1 = Range.fromExplicitRange(0, 3); | |
| 207 var r2 = Range.fromExplicitRange(2, 4); | |
| 208 | |
| 209 assert.isTrue(r1.intersectsRangeInclusive(r2)); | |
| 210 assert.isTrue(r2.intersectsRangeInclusive(r1)); | |
| 211 assert.isTrue(r1.intersectsRangeExclusive(r2)); | |
| 212 assert.isTrue(r2.intersectsRangeExclusive(r1)); | |
| 213 }); | |
| 214 | |
| 215 test('intersectsRange_disjoint', function() { | |
| 216 var r1 = Range.fromExplicitRange(0, 2); | |
| 217 var r2 = Range.fromExplicitRange(3, 5); | |
| 218 | |
| 219 assert.isFalse(r1.intersectsRangeInclusive(r2)); | |
| 220 assert.isFalse(r2.intersectsRangeInclusive(r1)); | |
| 221 assert.isFalse(r1.intersectsRangeExclusive(r2)); | |
| 222 assert.isFalse(r2.intersectsRangeExclusive(r1)); | |
| 223 }); | |
| 224 | |
| 225 test('intersectsRange_singlePointRange', function() { | |
| 226 var r1 = Range.fromExplicitRange(0, 2); | |
| 227 var r2 = Range.fromExplicitRange(1, 1); | |
| 228 | |
| 229 assert.isTrue(r1.intersectsRangeInclusive(r2)); | |
| 230 assert.isTrue(r2.intersectsRangeInclusive(r1)); | |
| 231 assert.isTrue(r1.intersectsRangeExclusive(r2)); | |
| 232 assert.isTrue(r2.intersectsRangeExclusive(r1)); | |
| 233 }); | |
| 234 | |
| 235 test('intersectsRange_singlePointRangeAtBorder', function() { | |
| 236 var r1 = Range.fromExplicitRange(0, 2); | |
| 237 var r2 = Range.fromExplicitRange(2, 2); | |
| 238 | |
| 239 assert.isTrue(r1.intersectsRangeInclusive(r2)); | |
| 240 assert.isTrue(r2.intersectsRangeInclusive(r1)); | |
| 241 assert.isFalse(r1.intersectsRangeExclusive(r2)); | |
| 242 assert.isFalse(r2.intersectsRangeExclusive(r1)); | |
| 243 }); | |
| 244 | |
| 245 test('intersectsExplicitRange', function() { | |
| 246 var r1 = Range.fromExplicitRange(0, 3); | |
| 247 var r2 = Range.fromExplicitRange(1, 2); | |
| 248 | |
| 249 assert.isTrue(r1.intersectsExplicitRangeInclusive(1, 2)); | |
| 250 assert.isTrue(r2.intersectsExplicitRangeInclusive(0, 3)); | |
| 251 assert.isTrue(r1.intersectsExplicitRangeExclusive(1, 2)); | |
| 252 assert.isTrue(r2.intersectsExplicitRangeExclusive(0, 3)); | |
| 253 }); | |
| 254 | |
| 255 test('intersectsExplicitRange_overlapping', function() { | |
| 256 var r1 = Range.fromExplicitRange(0, 3); | |
| 257 var r2 = Range.fromExplicitRange(2, 4); | |
| 258 | |
| 259 assert.isTrue(r1.intersectsExplicitRangeInclusive(2, 4)); | |
| 260 assert.isTrue(r2.intersectsExplicitRangeInclusive(0, 3)); | |
| 261 assert.isTrue(r1.intersectsExplicitRangeExclusive(2, 4)); | |
| 262 assert.isTrue(r2.intersectsExplicitRangeExclusive(0, 3)); | |
| 263 }); | |
| 264 | |
| 265 test('intersectsExplicitRange_disjoint', function() { | |
| 266 var r1 = Range.fromExplicitRange(0, 2); | |
| 267 var r2 = Range.fromExplicitRange(3, 5); | |
| 268 | |
| 269 assert.isFalse(r1.intersectsExplicitRangeInclusive(3, 5)); | |
| 270 assert.isFalse(r2.intersectsExplicitRangeInclusive(0, 2)); | |
| 271 assert.isFalse(r1.intersectsExplicitRangeExclusive(3, 5)); | |
| 272 assert.isFalse(r2.intersectsExplicitRangeExclusive(0, 2)); | |
| 273 }); | |
| 274 | |
| 275 test('intersectsExplicitRange_singlePointRange', function() { | |
| 276 var r1 = Range.fromExplicitRange(0, 2); | |
| 277 var r2 = Range.fromExplicitRange(1, 1); | |
| 278 | |
| 279 assert.isTrue(r1.intersectsExplicitRangeInclusive(1, 1)); | |
| 280 assert.isTrue(r2.intersectsExplicitRangeInclusive(0, 2)); | |
| 281 assert.isTrue(r1.intersectsExplicitRangeExclusive(1, 1)); | |
| 282 assert.isTrue(r2.intersectsExplicitRangeExclusive(0, 2)); | |
| 283 }); | |
| 284 | |
| 285 test('intersectsExplicitRange_singlePointRangeAtBorder', function() { | |
| 286 var r1 = Range.fromExplicitRange(0, 2); | |
| 287 var r2 = Range.fromExplicitRange(2, 2); | |
| 288 | |
| 289 assert.isTrue(r1.intersectsExplicitRangeInclusive(2, 2)); | |
| 290 assert.isTrue(r2.intersectsExplicitRangeInclusive(0, 2)); | |
| 291 assert.isFalse(r1.intersectsExplicitRangeExclusive(2, 2)); | |
| 292 assert.isFalse(r2.intersectsExplicitRangeExclusive(0, 2)); | |
| 293 }); | |
| 294 | |
| 295 test('duration', function() { | |
| 296 assert.equal(Range.fromExplicitRange(2, 4).duration, 2); | |
| 297 }); | |
| 298 | |
| 299 test('duration_singlePointRange', function() { | |
| 300 assert.equal(Range.fromExplicitRange(2, 2).duration, 0); | |
| 301 }); | |
| 302 | |
| 303 test('duration_emptyRange', function() { | |
| 304 assert.equal(new Range().duration, 0); | |
| 305 }); | |
| 306 | |
| 307 test('findIntersection_overlapping', function() { | |
| 308 var r1 = Range.fromExplicitRange(0, 2); | |
| 309 var r2 = Range.fromExplicitRange(1, 3); | |
| 310 | |
| 311 var result = Range.fromExplicitRange(1, 2); | |
| 312 assert.deepEqual(r1.findIntersection(r2), result); | |
| 313 assert.deepEqual(r2.findIntersection(r1), result); | |
| 314 }); | |
| 315 | |
| 316 test('findIntersection_bordering', function() { | |
| 317 var r1 = Range.fromExplicitRange(0, 2); | |
| 318 var r2 = Range.fromExplicitRange(2, 4); | |
| 319 | |
| 320 var result = Range.fromExplicitRange(2, 2); | |
| 321 assert.deepEqual(r1.findIntersection(r2), result); | |
| 322 assert.deepEqual(r2.findIntersection(r1), result); | |
| 323 }); | |
| 324 | |
| 325 test('findIntersection_singlePointRange', function() { | |
| 326 var r1 = Range.fromExplicitRange(0, 2); | |
| 327 var r2 = Range.fromExplicitRange(2, 2); | |
| 328 | |
| 329 var result = Range.fromExplicitRange(2, 2); | |
| 330 assert.deepEqual(r1.findIntersection(r2), result); | |
| 331 assert.deepEqual(r2.findIntersection(r1), result); | |
| 332 }); | |
| 333 | |
| 334 test('findIntersection_disjoint', function() { | |
| 335 var r1 = Range.fromExplicitRange(0, 2); | |
| 336 var r2 = Range.fromExplicitRange(3, 5); | |
| 337 | |
| 338 assert.isTrue(r1.findIntersection(r2).isEmpty); | |
| 339 assert.isTrue(r2.findIntersection(r1).isEmpty); | |
| 340 }); | |
| 341 | |
| 342 test('findIntersection_emptyRange', function() { | |
| 343 var r1 = Range.fromExplicitRange(0, 2); | |
| 344 var r2 = new Range(); | |
| 345 | |
| 346 assert.isTrue(r1.findIntersection(r2).isEmpty); | |
| 347 assert.isTrue(r2.findIntersection(r1).isEmpty); | |
| 348 }); | |
| 349 | |
| 350 test('findExplicitIntersectionDuration_overlapping', function() { | |
| 351 var r = Range.fromExplicitRange(2, 4); | |
| 352 assert.equal(1, r.findExplicitIntersectionDuration(1, 3)); | |
| 353 assert.equal(1, r.findExplicitIntersectionDuration(3, 5)); | |
| 354 assert.equal(2, r.findExplicitIntersectionDuration(0, 5)); | |
| 355 }); | |
| 356 | |
| 357 test('findExplicitIntersectionDuration_invalidOtherRange', function() { | |
| 358 var r = Range.fromExplicitRange(2, 4); | |
| 359 assert.equal(0, r.findExplicitIntersectionDuration(3, 1)); | |
| 360 assert.equal(0, r.findExplicitIntersectionDuration(5, 3)); | |
| 361 }); | |
| 362 | |
| 363 test('findExplicitIntersectionDuration_disjoint', function() { | |
| 364 var r = Range.fromExplicitRange(2, 4); | |
| 365 assert.equal(0, r.findExplicitIntersectionDuration(0, 1)); | |
| 366 assert.equal(0, r.findExplicitIntersectionDuration(4.5, 5)); | |
| 367 }); | |
| 368 | |
| 369 test('filter_numericField', function() { | |
| 370 var r = Range.fromExplicitRange(2, 3); | |
| 371 var array = [{start: 1}, | |
| 372 {start: 2}, | |
| 373 {start: 3}, | |
| 374 {start: 4}]; | |
| 375 assert.deepEqual([{start: 2}, {start: 3}], r.filterArray( | |
| 376 array, function(value) {return value.start;})); | |
| 377 }); | |
| 378 | |
| 379 test('filter_noNumericField', function() { | |
| 380 var r = Range.fromExplicitRange(2, 3); | |
| 381 assert.deepEqual([2, 3], r.filterArray([1, 2, 3, 4])); | |
| 382 }); | |
| 383 | |
| 384 test('filter_empty', function() { | |
| 385 var r = new Range(); | |
| 386 assert.deepEqual([], r.filterArray([1, 2, 3, 4])); | |
| 387 }); | |
| 388 | |
| 389 test('filter_oneSided', function() { | |
| 390 var r = new Range(); | |
| 391 r.min = 2; | |
| 392 assert.deepEqual([2, 3, 4], r.filterArray([1, 2, 3, 4])); | |
| 393 }); | |
| 394 | |
| 395 test('left_boundary_corner_case1', function() { | |
| 396 var r = Range.fromExplicitRange(1, 2); | |
| 397 var array = [{start: 1}, | |
| 398 {start: 2}, | |
| 399 {start: 3}, | |
| 400 {start: 4}]; | |
| 401 assert.deepEqual([{start: 1}, {start: 2}], r.filterArray( | |
| 402 array, function(value) {return value.start;})); | |
| 403 }); | |
| 404 | |
| 405 test('left_boundary_corner_case2', function() { | |
| 406 var r = Range.fromExplicitRange(0, 2); | |
| 407 var array = [{start: 1}, | |
| 408 {start: 2}, | |
| 409 {start: 3}, | |
| 410 {start: 4}]; | |
| 411 assert.deepEqual([{start: 1}, {start: 2}], r.filterArray( | |
| 412 array, function(value) {return value.start;})); | |
| 413 }); | |
| 414 | |
| 415 test('left_boundary_corner_case3', function() { | |
| 416 var r = Range.fromExplicitRange(1, 1); | |
| 417 var array = [{start: 1}, | |
| 418 {start: 2}, | |
| 419 {start: 3}, | |
| 420 {start: 4}]; | |
| 421 assert.deepEqual([{start: 1}], r.filterArray( | |
| 422 array, function(value) {return value.start;})); | |
| 423 }); | |
| 424 | |
| 425 test('left_boundary_corner_case4', function() { | |
| 426 var r = Range.fromExplicitRange(0, 0); | |
| 427 var array = [{start: 1}, | |
| 428 {start: 2}, | |
| 429 {start: 3}, | |
| 430 {start: 4}]; | |
| 431 assert.deepEqual([], r.filterArray( | |
| 432 array, function(value) {return value.start;})); | |
| 433 }); | |
| 434 | |
| 435 test('right_boundary_corner_case1', function() { | |
| 436 var r = Range.fromExplicitRange(4, 5); | |
| 437 var array = [{start: 1}, | |
| 438 {start: 2}, | |
| 439 {start: 3}, | |
| 440 {start: 4}]; | |
| 441 assert.deepEqual([{start: 4}], r.filterArray( | |
| 442 array, function(value) {return value.start;})); | |
| 443 }); | |
| 444 | |
| 445 test('right_boundary_corner_case2', function() { | |
| 446 var r = Range.fromExplicitRange(4, 4); | |
| 447 var array = [{start: 1}, | |
| 448 {start: 2}, | |
| 449 {start: 3}, | |
| 450 {start: 4}]; | |
| 451 assert.deepEqual([{start: 4}], r.filterArray( | |
| 452 array, function(value) {return value.start;})); | |
| 453 }); | |
| 454 | |
| 455 test('right_boundary_corner_case3', function() { | |
| 456 var r = Range.fromExplicitRange(5, 5); | |
| 457 var array = [{start: 1}, | |
| 458 {start: 2}, | |
| 459 {start: 3}, | |
| 460 {start: 4}]; | |
| 461 assert.deepEqual([], r.filterArray( | |
| 462 array, function(value) {return value.start;})); | |
| 463 }); | |
| 464 }); | |
| 465 </script> | |
| OLD | NEW |