mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 02:39:44 +02:00
Merge remote-tracking branch 'origin/patch'
This commit is contained in:
commit
dbae97450a
5 changed files with 141 additions and 25 deletions
|
@ -1232,6 +1232,7 @@ public class AddressSet implements AddressSetView {
|
|||
private class AddressRangeIteratorAdapter implements AddressRangeIterator {
|
||||
|
||||
private Iterator<RedBlackEntry<Address, Address>> iterator;
|
||||
private AddressRange lastReturnedRange;
|
||||
|
||||
public AddressRangeIteratorAdapter(Iterator<RedBlackEntry<Address, Address>> iterator) {
|
||||
this.iterator = iterator;
|
||||
|
@ -1248,12 +1249,14 @@ public class AddressSet implements AddressSetView {
|
|||
if (next == null) {
|
||||
throw new NoSuchElementException();
|
||||
}
|
||||
return new AddressRangeImpl(next.getKey(), next.getValue());
|
||||
lastReturnedRange = new AddressRangeImpl(next.getKey(), next.getValue());
|
||||
return lastReturnedRange;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
iterator.remove();
|
||||
addressCount -= lastReturnedRange.getLength();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -762,6 +762,28 @@ public class AddressSetTest extends AbstractGenericTest {
|
|||
assertTrue(!it.hasNext());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testForwardRangeIteratorRemove() {
|
||||
AddressSet set = set(0x100, 0x110, 0x200, 0x210, 0x300, 0x305);
|
||||
assertEquals(40, set.getNumAddresses());
|
||||
assertEquals(3, set.getNumAddressRanges());
|
||||
|
||||
Iterator<AddressRange> it = set.iterator(true);
|
||||
Assert.assertEquals(range(0x100, 0x110), it.next());
|
||||
Assert.assertEquals(range(0x200, 0x210), it.next());
|
||||
it.remove();
|
||||
Assert.assertEquals(range(0x300, 0x305), it.next());
|
||||
assertTrue(!it.hasNext());
|
||||
|
||||
it = set.iterator(true);
|
||||
Assert.assertEquals(range(0x100, 0x110), it.next());
|
||||
Assert.assertEquals(range(0x300, 0x305), it.next());
|
||||
assertTrue(!it.hasNext());
|
||||
|
||||
assertEquals(23, set.getNumAddresses());
|
||||
assertEquals(2, set.getNumAddressRanges());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBackwardRangeIterator() {
|
||||
AddressSet set = set(0x100, 0x110, 0x200, 0x210, 0x300, 0x305);
|
||||
|
@ -772,6 +794,28 @@ public class AddressSetTest extends AbstractGenericTest {
|
|||
assertTrue(!it.hasNext());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBackwardRangeIteratorRemove() {
|
||||
AddressSet set = set(0x100, 0x110, 0x200, 0x210, 0x300, 0x305);
|
||||
assertEquals(40, set.getNumAddresses());
|
||||
assertEquals(3, set.getNumAddressRanges());
|
||||
|
||||
Iterator<AddressRange> it = set.iterator(false);
|
||||
Assert.assertEquals(range(0x300, 0x305), it.next());
|
||||
Assert.assertEquals(range(0x200, 0x210), it.next());
|
||||
it.remove();
|
||||
Assert.assertEquals(range(0x100, 0x110), it.next());
|
||||
assertTrue(!it.hasNext());
|
||||
|
||||
it = set.iterator(false);
|
||||
Assert.assertEquals(range(0x300, 0x305), it.next());
|
||||
Assert.assertEquals(range(0x100, 0x110), it.next());
|
||||
assertTrue(!it.hasNext());
|
||||
|
||||
assertEquals(23, set.getNumAddresses());
|
||||
assertEquals(2, set.getNumAddressRanges());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetRangeContaining() {
|
||||
AddressSet set = set(0x100, 0x110, 0x200, 0x210, 0x300, 0x305);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue