test('Range, union', function() { let ran1 = new types.Range(0, 0, 5, 5); assert.ok(ran1.union(new types.Range(0, 0, 1, 1)) === ran1); let res: types.Range; res = ran1.union(new types.Range(2, 2, 9, 9)); assert.ok(res.start === ran1.start); assert.equal(res.end.line, 9); assert.equal(res.end.character, 9); ran1 = new types.Range(2, 1, 5, 3); res = ran1.union(new types.Range(1, 0, 4, 2)); assert.ok(res.end === ran1.end); assert.equal(res.start.line, 1); assert.equal(res.start.character, 0); });
test('Range, contains', function() { let range = new types.Range(1, 1, 2, 11); assert.ok(range.contains(range.start)); assert.ok(range.contains(range.end)); assert.ok(range.contains(range)); assert.ok(!range.contains(new types.Range(1, 0, 2, 11))); assert.ok(!range.contains(new types.Range(0, 1, 2, 11))); assert.ok(!range.contains(new types.Range(1, 1, 2, 12))); assert.ok(!range.contains(new types.Range(1, 1, 3, 11))); });
test('Range, intersection', function() { let range = new types.Range(1, 1, 2, 11); let res: types.Range; res = range.intersection(range); assert.equal(res.start.line, 1); assert.equal(res.start.character, 1); assert.equal(res.end.line, 2); assert.equal(res.end.character, 11); res = range.intersection(new types.Range(2, 12, 4, 0)); assert.equal(res, undefined); res = range.intersection(new types.Range(0, 0, 1, 0)); assert.equal(res, undefined); res = range.intersection(new types.Range(0, 0, 1, 1)); assert.ok(res.isEmpty); assert.equal(res.start.line, 1); assert.equal(res.start.character, 1); res = range.intersection(new types.Range(2, 11, 61, 1)); assert.ok(res.isEmpty); assert.equal(res.start.line, 2); assert.equal(res.start.character, 11); assert.throws(() => range.intersection(null)); assert.throws(() => range.intersection(undefined)); });
test('Range, with', function() { let range = new types.Range(1, 1, 2, 11); assert.ok(range.with(range.start) === range); assert.ok(range.with(undefined, range.end) === range); assert.ok(range.with(range.start, range.end) === range); assert.ok(range.with(new types.Position(1, 1)) === range); assert.ok(range.with(undefined, new types.Position(2, 11)) === range); let res = range.with(undefined, new types.Position(9, 8)); assert.equal(res.end.line, 9); assert.equal(res.end.character, 8); assert.equal(res.start.line, 1); assert.equal(res.start.character, 1); assert.throws(() => range.with(null)); assert.throws(() => range.with(undefined, null)); });
assert.throws(() => range.with(undefined, null));
assert.throws(() => range.with(null));
assert.throws(() => range.intersection(undefined));
assert.throws(() => range.intersection(null));