working on bencode lists, test covering
This commit is contained in:
parent
7df116d02b
commit
ee8b20097d
2 changed files with 78 additions and 0 deletions
62
src/main/java/com/mykola2312/retracker/bencode/BList.java
Normal file
62
src/main/java/com/mykola2312/retracker/bencode/BList.java
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
package com.mykola2312.retracker.bencode;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
public class BList extends BValue {
|
||||
private BValue last = null;
|
||||
private int length = 0;
|
||||
|
||||
@Override()
|
||||
public BType getType() {
|
||||
return BType.LIST;
|
||||
}
|
||||
|
||||
protected BValue getFirst() {
|
||||
return getChild();
|
||||
}
|
||||
|
||||
protected void setFirst(BValue first) {
|
||||
setChild(first);
|
||||
}
|
||||
|
||||
protected BValue getLast() {
|
||||
return last;
|
||||
}
|
||||
|
||||
protected void setLast(BValue last) {
|
||||
this.last = last;
|
||||
}
|
||||
|
||||
// builder
|
||||
public BList append(BValue item) {
|
||||
BValue first = getFirst();
|
||||
if (first == null) {
|
||||
setFirst(item);
|
||||
setLast(item);
|
||||
} else {
|
||||
BValue last = getLast();
|
||||
last.setNext(item);
|
||||
setLast(item);
|
||||
}
|
||||
|
||||
length++;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getLength() {
|
||||
return length;
|
||||
}
|
||||
|
||||
public BValue get(int index) throws IndexOutOfBoundsException {
|
||||
Iterator<BValue> it = iterator();
|
||||
if (index < 0 || index >= length) {
|
||||
throw new IndexOutOfBoundsException();
|
||||
}
|
||||
|
||||
while (--index > 0) {
|
||||
it.next();
|
||||
}
|
||||
|
||||
return it.next();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package com.mykola2312.retracker.bencode;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class BListTest {
|
||||
@Test
|
||||
public void testEmptyList() {
|
||||
BList empty = new BList();
|
||||
|
||||
assertEquals(0, empty.getLength());
|
||||
assertNull(empty.getChild());
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue