/*
* Copyright (c) 2013, the Dart project authors.
*
* Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.eclipse.org/legal/epl-v10.html
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.dart.engine.utilities.source;
import junit.framework.TestCase;
public class SourceRangeTest extends TestCase {
public void test_access() throws Exception {
SourceRange r = new SourceRange(10, 1);
assertEquals(10, r.getOffset());
assertEquals(1, r.getLength());
assertEquals(10 + 1, r.getEnd());
// to check
r.hashCode();
}
public void test_contains() throws Exception {
SourceRange r = new SourceRange(5, 10);
assertTrue(r.contains(5));
assertTrue(r.contains(10));
assertTrue(r.contains(14));
assertFalse(r.contains(0));
assertFalse(r.contains(15));
}
public void test_containsExclusive() throws Exception {
SourceRange r = new SourceRange(5, 10);
assertFalse(r.containsExclusive(5));
assertTrue(r.containsExclusive(10));
assertTrue(r.containsExclusive(14));
assertFalse(r.containsExclusive(0));
assertFalse(r.containsExclusive(15));
}
public void test_coveredBy() throws Exception {
SourceRange r = new SourceRange(5, 10);
// ends before
assertFalse(r.coveredBy(new SourceRange(20, 10)));
// starts after
assertFalse(r.coveredBy(new SourceRange(0, 3)));
// only intersects
assertFalse(r.coveredBy(new SourceRange(0, 10)));
assertFalse(r.coveredBy(new SourceRange(10, 10)));
// covered
assertTrue(r.coveredBy(new SourceRange(0, 20)));
assertTrue(r.coveredBy(new SourceRange(5, 10)));
}
public void test_covers() throws Exception {
SourceRange r = new SourceRange(5, 10);
// ends before
assertFalse(r.covers(new SourceRange(0, 3)));
// starts after
assertFalse(r.covers(new SourceRange(20, 3)));
// only intersects
assertFalse(r.covers(new SourceRange(0, 10)));
assertFalse(r.covers(new SourceRange(10, 10)));
// covers
assertTrue(r.covers(new SourceRange(5, 10)));
assertTrue(r.covers(new SourceRange(6, 9)));
assertTrue(r.covers(new SourceRange(6, 8)));
}
public void test_endsIn() throws Exception {
SourceRange r = new SourceRange(5, 10);
// ends before
assertFalse(r.endsIn(new SourceRange(20, 10)));
// starts after
assertFalse(r.endsIn(new SourceRange(0, 3)));
// ends
assertTrue(r.endsIn(new SourceRange(10, 20)));
assertTrue(r.endsIn(new SourceRange(0, 20)));
}
public void test_equals() throws Exception {
SourceRange r = new SourceRange(10, 1);
assertFalse(r.equals(null));
assertFalse(r.equals(this));
assertFalse(r.equals(new SourceRange(20, 2)));
assertTrue(r.equals(new SourceRange(10, 1)));
assertTrue(r.equals(r));
}
public void test_getExpanded() throws Exception {
SourceRange r = new SourceRange(5, 3);
assertEquals(r, r.getExpanded(0));
assertEquals(new SourceRange(3, 7), r.getExpanded(2));
assertEquals(new SourceRange(6, 1), r.getExpanded(-1));
}
public void test_getMoveEnd() throws Exception {
SourceRange r = new SourceRange(5, 3);
assertEquals(r, r.getMoveEnd(0));
assertEquals(new SourceRange(5, 6), r.getMoveEnd(3));
assertEquals(new SourceRange(5, 2), r.getMoveEnd(-1));
}
public void test_getTranslated() throws Exception {
SourceRange r = new SourceRange(5, 3);
assertEquals(r, r.getTranslated(0));
assertEquals(new SourceRange(7, 3), r.getTranslated(2));
assertEquals(new SourceRange(4, 3), r.getTranslated(-1));
}
public void test_getUnion() throws Exception {
assertEquals(new SourceRange(10, 15), new SourceRange(10, 10).getUnion(new SourceRange(15, 10)));
assertEquals(new SourceRange(10, 15), new SourceRange(15, 10).getUnion(new SourceRange(10, 10)));
// "other" is covered/covers
assertEquals(new SourceRange(10, 10), new SourceRange(10, 10).getUnion(new SourceRange(15, 2)));
assertEquals(new SourceRange(10, 10), new SourceRange(15, 2).getUnion(new SourceRange(10, 10)));
}
public void test_intersects() throws Exception {
SourceRange r = new SourceRange(5, 3);
// null
assertFalse(r.intersects(null));
// ends before
assertFalse(r.intersects(new SourceRange(0, 5)));
// begins after
assertFalse(r.intersects(new SourceRange(8, 5)));
// begins on same offset
assertTrue(r.intersects(new SourceRange(5, 1)));
// begins inside, ends inside
assertTrue(r.intersects(new SourceRange(6, 1)));
// begins inside, ends after
assertTrue(r.intersects(new SourceRange(6, 10)));
// begins before, ends after
assertTrue(r.intersects(new SourceRange(0, 10)));
}
public void test_startsIn() throws Exception {
SourceRange r = new SourceRange(5, 10);
// ends before
assertFalse(r.startsIn(new SourceRange(20, 10)));
// starts after
assertFalse(r.startsIn(new SourceRange(0, 3)));
// starts
assertTrue(r.startsIn(new SourceRange(5, 1)));
assertTrue(r.startsIn(new SourceRange(0, 20)));
}
public void test_toString() throws Exception {
SourceRange r = new SourceRange(10, 1);
assertEquals("[offset=10, length=1]", r.toString());
}
}