/******************************************************************************* | |
* Copyright (c) 2011 Broadcom and others. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License v1.0 | |
* which accompanies this distribution, and is available at | |
* http://www.eclipse.org/legal/epl-v10.html | |
* | |
* Contributors: | |
* Broadcom - Initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.cdt.debug.edc.tests; | |
import static org.junit.Assert.assertEquals; | |
import static org.junit.Assert.assertFalse; | |
import java.util.Iterator; | |
import org.eclipse.cdt.debug.edc.internal.symbols.dwarf.RangeList; | |
import org.eclipse.cdt.debug.edc.symbols.IRangeList; | |
import org.eclipse.cdt.debug.edc.symbols.IRangeList.Entry; | |
import org.junit.BeforeClass; | |
import org.junit.Test; | |
public class TestRangeList { | |
private static RangeList first; | |
private static int low; | |
private static int high; | |
private static RangeList second; | |
private static RangeList expectedMerged; | |
@BeforeClass | |
public static void init(){ | |
low = 0; | |
high = 120; | |
first = new RangeList(); | |
first.addRange(low,10); | |
first.addRange(25,32); | |
first.addRange(60,68); | |
first.addRange(107,high); | |
second = new RangeList(); | |
second.addRange(7,18); | |
second.addRange(32,35); | |
second.addRange(52,60); | |
second.addRange(75,80); | |
second.addRange(93,high); | |
expectedMerged = new RangeList(); | |
expectedMerged.addRange(low,18); | |
expectedMerged.addRange(25,35); | |
expectedMerged.addRange(52,68); | |
expectedMerged.addRange(75,80); | |
expectedMerged.addRange(93,high); | |
} | |
@Test | |
public void lowHigh(){ | |
assertEquals(low,first.getLowAddress()); | |
assertEquals(high,first.getHighAddress()); | |
assertEquals(low,expectedMerged.getLowAddress()); | |
assertEquals(high,expectedMerged.getHighAddress()); | |
} | |
@Test | |
public void merge(){ | |
IRangeList merged = RangeList.mergeRangeLists(first, second); | |
Iterator<Entry> mergedIter = merged.iterator(); | |
Iterator<Entry> expectedIter = expectedMerged.iterator(); | |
while (mergedIter.hasNext() && expectedIter.hasNext()){ | |
assertEquals("Entries should be equal",expectedIter.next(),mergedIter.next()); | |
} | |
assertFalse("Should be finished",mergedIter.hasNext()); | |
assertFalse("Should be finished",expectedIter.hasNext()); | |
} | |
@Test | |
public void isInRange(){ | |
checkInRange(7,true,true,true); | |
checkInRange(8,true,true,true); | |
checkInRange(10,false,true,true); | |
checkInRange(20,false,false,false); | |
checkInRange(60,true,false,true); | |
} | |
private void checkInRange(int point, boolean inFirst, boolean inSecond, boolean inExpectedMerged) { | |
assertEquals(inFirst,first.isInRange(point)); | |
assertEquals(inSecond,second.isInRange(point)); | |
assertEquals(inExpectedMerged,expectedMerged.isInRange(point)); | |
} | |
} |