blob: d1bd5f432d89b8b1ba81c00358b1fde8ee42b9ca [file] [log] [blame]
<!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>