feat: AggregatedObservableListTest

This commit is contained in:
huanghongxun
2021-09-21 06:50:31 +08:00
parent 33b9d37250
commit 87944a4934
2 changed files with 98 additions and 0 deletions

View File

@@ -187,6 +187,10 @@ public class AggregatedObservableList<T> {
}
public String dump() {
return dump(x -> x);
}
public String dump(Function<T, Object> function) {
StringBuilder sb = new StringBuilder();
sb.append("[");

View File

@@ -0,0 +1,94 @@
package org.jackhuang.hmcl.util;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
/**
* Testing the AggregatedObservableList
*/
public class AggregatedObservableListTest {
@Test
public void testInteger() {
final AggregatedObservableList<Integer> aggregatedWrapper = new AggregatedObservableList<>();
final ObservableList<Integer> aggregatedList = aggregatedWrapper.getAggregatedList();
final ObservableList<Integer> list1 = FXCollections.observableArrayList();
final ObservableList<Integer> list2 = FXCollections.observableArrayList();
final ObservableList<Integer> list3 = FXCollections.observableArrayList();
list1.addAll(1, 2, 3, 4, 5);
list2.addAll(10, 11, 12, 13, 14, 15);
list3.addAll(100, 110, 120, 130, 140, 150);
// adding list 1 to aggregate
aggregatedWrapper.appendList(list1);
assertEquals("[1,2,3,4,5]", aggregatedWrapper.dump());
// removing elems from list1
list1.remove(2, 4);
assertEquals("[1,2,5]", aggregatedWrapper.dump());
// adding second List
aggregatedWrapper.appendList(list2);
assertEquals("[1,2,5,10,11,12,13,14,15]", aggregatedWrapper.dump());
// removing elems from second List
list2.remove(1, 3);
assertEquals("[1,2,5,10,13,14,15]", aggregatedWrapper.dump());
// replacing element in first list
list1.set(1, 3);
assertEquals("[1,3,5,10,13,14,15]", aggregatedWrapper.dump());
// adding third List
aggregatedWrapper.appendList(list3);
assertEquals("[1,3,5,10,13,14,15,100,110,120,130,140,150]", aggregatedWrapper.dump());
// emptying second list
list2.clear();
assertEquals("[1,3,5,100,110,120,130,140,150]", aggregatedWrapper.dump());
// adding new elements to second list
list2.addAll(203, 202, 201);
assertEquals("[1,3,5,203,202,201,100,110,120,130,140,150]", aggregatedWrapper.dump());
// sorting list2. this results in permutation
list2.sort(Integer::compareTo);
assertEquals("[1,3,5,201,202,203,100,110,120,130,140,150]", aggregatedWrapper.dump());
// removing list2 completely
aggregatedWrapper.removeList(list2);
assertEquals("[1,3,5,100,110,120,130,140,150]", aggregatedWrapper.dump());
// updating one integer value in list 3
list3.set(0, 1);
assertEquals("[1,3,5,1,110,120,130,140,150]", aggregatedWrapper.dump());
// prepending list 2 again
aggregatedWrapper.prependList(list2);
assertEquals("[201,202,203,1,3,5,1,110,120,130,140,150]", aggregatedWrapper.dump());
}
@Test
public void testSetAll() {
final AggregatedObservableList<Integer> aggregatedWrapper = new AggregatedObservableList<>();
final ObservableList<Integer> aggregatedList = aggregatedWrapper.getAggregatedList();
final ObservableList<Integer> a = FXCollections.singletonObservableList(1);
final ObservableList<Integer> b = FXCollections.observableArrayList(2, 3, 4);
aggregatedWrapper.appendList(a);
aggregatedWrapper.appendList(b);
assertEquals("[1,2,3,4]", aggregatedWrapper.dump());
b.setAll(7, 8, 9);
assertEquals("[1,7,8,9]", aggregatedWrapper.dump());
}
}