| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| |
| <link rel="import" href="/tracing/base/range.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tr.b.unittest.testSuite(function() { |
| var Range = tr.b.Range; |
| |
| test('addValue', function() { |
| var range = new Range(); |
| assert.isTrue(range.isEmpty); |
| range.addValue(1); |
| assert.isFalse(range.isEmpty); |
| assert.equal(1, range.min); |
| assert.equal(1, range.max); |
| |
| range.addValue(2); |
| assert.isFalse(range.isEmpty); |
| assert.equal(1, range.min); |
| assert.equal(2, range.max); |
| }); |
| |
| test('addNonEmptyRange', function() { |
| var r1 = new Range(); |
| r1.addValue(1); |
| r1.addValue(2); |
| |
| var r = new Range(); |
| r.addRange(r1); |
| assert.equal(1, r.min); |
| assert.equal(2, r.max); |
| |
| var r2 = Range.fromDict(r.toJSON()); |
| assert.equal(r2.isEmpty, r.isEmpty); |
| assert.equal(r2.max, r.max); |
| assert.equal(r2.min, r.min); |
| }); |
| |
| test('addEmptyRange', function() { |
| var r1 = new Range(); |
| |
| var r = new Range(); |
| r.addRange(r1); |
| assert.isTrue(r.isEmpty); |
| assert.isUndefined(r.min); |
| assert.isUndefined(r.max); |
| |
| var r2 = Range.fromDict(r.toJSON()); |
| assert.equal(r2.isEmpty, r.isEmpty); |
| assert.isUndefined(r2.max); |
| assert.isUndefined(r2.min); |
| }); |
| |
| test('addRangeToRange', function() { |
| var r1 = new Range(); |
| r1.addValue(1); |
| r1.addValue(2); |
| |
| var r = new Range(); |
| r.addValue(3); |
| r.addRange(r1); |
| |
| assert.isFalse(r.isEmpty); |
| assert.equal(1, r.min); |
| assert.equal(3, r.max); |
| }); |
| |
| test('containsRange', function() { |
| var r1 = Range.fromExplicitRange(0, 3); |
| var r2 = Range.fromExplicitRange(1, 2); |
| |
| assert.isTrue(r1.containsRange(r2)); |
| assert.isFalse(r2.containsRange(r1)); |
| }); |
| |
| test('containsRange_emptyRange', function() { |
| var r1 = Range.fromExplicitRange(0, 3); |
| var r2 = new Range(); |
| |
| assert.isFalse(r1.containsRange(r2)); |
| assert.isFalse(r2.containsRange(r1)); |
| }); |
| |
| test('containsRange_overlapping', function() { |
| var r1 = Range.fromExplicitRange(0, 3); |
| var r2 = Range.fromExplicitRange(2, 4); |
| |
| assert.isFalse(r1.containsRange(r2)); |
| assert.isFalse(r2.containsRange(r1)); |
| }); |
| |
| test('containsRange_disjoint', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(3, 5); |
| |
| assert.isFalse(r1.containsRange(r2)); |
| assert.isFalse(r2.containsRange(r1)); |
| }); |
| |
| test('containsRange_singlePointRange', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(1, 1); |
| |
| assert.isTrue(r1.containsRange(r2)); |
| assert.isFalse(r2.containsRange(r1)); |
| }); |
| |
| test('containsRange_singlePointRangeAtBorder', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(2, 2); |
| |
| assert.isTrue(r1.containsRange(r2)); |
| assert.isFalse(r2.containsRange(r1)); |
| }); |
| |
| test('containsExplicitRange', function() { |
| var r1 = Range.fromExplicitRange(0, 3); |
| var r2 = Range.fromExplicitRange(1, 2); |
| |
| assert.isTrue(r1.containsExplicitRange(1, 2)); |
| assert.isFalse(r2.containsExplicitRange(0, 3)); |
| }); |
| |
| test('containsExplicitRange_overlapping', function() { |
| var r1 = Range.fromExplicitRange(0, 3); |
| var r2 = Range.fromExplicitRange(2, 4); |
| |
| assert.isFalse(r1.containsExplicitRange(2, 4)); |
| assert.isFalse(r2.containsExplicitRange(0, 3)); |
| }); |
| |
| test('containsExplicitRange_disjoint', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(3, 5); |
| |
| assert.isFalse(r1.containsExplicitRange(3, 5)); |
| assert.isFalse(r2.containsExplicitRange(0, 2)); |
| }); |
| |
| test('containsExplicitRange_singlePointRange', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(1, 1); |
| |
| assert.isTrue(r1.containsExplicitRange(1, 1)); |
| assert.isFalse(r2.containsExplicitRange(0, 2)); |
| }); |
| |
| test('containsExplicitRange_singlePointRangeAtBorder', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(2, 2); |
| |
| assert.isTrue(r1.containsExplicitRange(2, 2)); |
| assert.isFalse(r2.containsExplicitRange(0, 2)); |
| }); |
| |
| test('intersectsRange', function() { |
| var r1 = Range.fromExplicitRange(0, 3); |
| var r2 = Range.fromExplicitRange(1, 2); |
| |
| assert.isTrue(r1.intersectsRange(r2)); |
| assert.isTrue(r2.intersectsRange(r1)); |
| }); |
| |
| test('intersectsRange_emptyRange', function() { |
| var r1 = Range.fromExplicitRange(0, 3); |
| var r2 = new Range(); |
| |
| assert.isFalse(r1.intersectsRange(r2)); |
| assert.isFalse(r2.intersectsRange(r1)); |
| }); |
| |
| test('intersectsRange_overlapping', function() { |
| var r1 = Range.fromExplicitRange(0, 3); |
| var r2 = Range.fromExplicitRange(2, 4); |
| |
| assert.isTrue(r1.intersectsRange(r2)); |
| assert.isTrue(r2.intersectsRange(r1)); |
| }); |
| |
| test('intersectsRange_disjoint', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(3, 5); |
| |
| assert.isFalse(r1.intersectsRange(r2)); |
| assert.isFalse(r2.intersectsRange(r1)); |
| }); |
| |
| test('intersectsRange_singlePointRange', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(1, 1); |
| |
| assert.isTrue(r1.intersectsRange(r2)); |
| assert.isTrue(r2.intersectsRange(r1)); |
| }); |
| |
| test('intersectsRange_singlePointRangeAtBorder', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(2, 2); |
| |
| assert.isTrue(r1.intersectsRange(r2)); |
| assert.isTrue(r2.intersectsRange(r1)); |
| }); |
| |
| test('intersectsExplicitRange', function() { |
| var r1 = Range.fromExplicitRange(0, 3); |
| var r2 = Range.fromExplicitRange(1, 2); |
| |
| assert.isTrue(r1.intersectsExplicitRange(1, 2)); |
| assert.isTrue(r2.intersectsExplicitRange(0, 3)); |
| }); |
| |
| test('intersectsExplicitRange_overlapping', function() { |
| var r1 = Range.fromExplicitRange(0, 3); |
| var r2 = Range.fromExplicitRange(2, 4); |
| |
| assert.isTrue(r1.intersectsExplicitRange(2, 4)); |
| assert.isTrue(r2.intersectsExplicitRange(0, 3)); |
| }); |
| |
| test('intersectsExplicitRange_disjoint', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(3, 5); |
| |
| assert.isFalse(r1.intersectsExplicitRange(3, 5)); |
| assert.isFalse(r2.intersectsExplicitRange(0, 2)); |
| }); |
| |
| test('intersectsExplicitRange_singlePointRange', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(1, 1); |
| |
| assert.isTrue(r1.intersectsExplicitRange(1, 1)); |
| assert.isTrue(r2.intersectsExplicitRange(0, 2)); |
| }); |
| |
| test('intersectsExplicitRange_singlePointRangeAtBorder', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(2, 2); |
| |
| assert.isTrue(r1.intersectsExplicitRange(2, 2)); |
| assert.isTrue(r2.intersectsExplicitRange(0, 2)); |
| }); |
| |
| test('duration', function() { |
| assert.equal(Range.fromExplicitRange(2, 4).duration, 2); |
| }); |
| |
| test('duration_singlePointRange', function() { |
| assert.equal(Range.fromExplicitRange(2, 2).duration, 0); |
| }); |
| |
| test('duration_emptyRange', function() { |
| assert.equal(new Range().duration, 0); |
| }); |
| |
| test('findIntersection_overlapping', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(1, 3); |
| |
| var result = Range.fromExplicitRange(1, 2); |
| assert.deepEqual(r1.findIntersection(r2), result); |
| assert.deepEqual(r2.findIntersection(r1), result); |
| }); |
| |
| test('findIntersection_bordering', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(2, 4); |
| |
| var result = Range.fromExplicitRange(2, 2); |
| assert.deepEqual(r1.findIntersection(r2), result); |
| assert.deepEqual(r2.findIntersection(r1), result); |
| }); |
| |
| test('findIntersection_singlePointRange', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(2, 2); |
| |
| var result = Range.fromExplicitRange(2, 2); |
| assert.deepEqual(r1.findIntersection(r2), result); |
| assert.deepEqual(r2.findIntersection(r1), result); |
| }); |
| |
| test('findIntersection_disjoint', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = Range.fromExplicitRange(3, 5); |
| |
| assert.isTrue(r1.findIntersection(r2).isEmpty); |
| assert.isTrue(r2.findIntersection(r1).isEmpty); |
| }); |
| |
| test('findIntersection_emptyRange', function() { |
| var r1 = Range.fromExplicitRange(0, 2); |
| var r2 = new Range(); |
| |
| assert.isTrue(r1.findIntersection(r2).isEmpty); |
| assert.isTrue(r2.findIntersection(r1).isEmpty); |
| }); |
| }); |
| </script> |