|
|
Nested Lists API
AboutThe Nested Lists API is a generic Java library which simplifies functional programming for nested lists (i.e. the nested lists build a tree of the form [[...],...]). Features
Project LinksDownload: Javadoc: Discussion Forum: View CVS: ExamplesJUnit testcase for some nested lists functions:
package org.matheclipse.generic.test.nested;
import java.util.Arrays;
import junit.framework.TestCase;
import org.matheclipse.generic.nested.Generating;
import org.matheclipse.generic.nested.IndexFunctionDiagonal;
import org.matheclipse.generic.nested.IndexTableGenerator;
import org.matheclipse.generic.nested.LevelSpec;
import org.matheclipse.generic.util.IElement;
import org.matheclipse.generic.util.IntegerElement;
import org.matheclipse.generic.util.NestedArrayList;
import org.matheclipse.generic.util.StringElement;
public class NestedArrayListTest extends TestCase {
final StringElement a = new StringElement("a");
final StringElement b = new StringElement("b");
final StringElement c = new StringElement("c");
final StringElement d = new StringElement("d");
final StringElement e = new StringElement("e");
final StringElement f = new StringElement("f");
final StringElement g = new StringElement("g");
final IntegerElement x0 = new IntegerElement(0);
final IntegerElement x1 = new IntegerElement(1);
final IntegerElement x2 = new IntegerElement(2);
final IntegerElement x3 = new IntegerElement(3);
final IntegerElement x4 = new IntegerElement(4);
final IntegerElement x5 = new IntegerElement(5);
final IntegerElement x6 = new IntegerElement(6);
final IntegerElement x7 = new IntegerElement(7);
final NestedArrayList<IElement> list = new NestedArrayList<IElement>(Arrays.asList(a, b, c));
final NestedArrayList<IElement> list2;
final NestedArrayList<IElement> list3 = new NestedArrayList<IElement>(Arrays.asList(d, e, f));
final NestedArrayList<IElement> xlist = new NestedArrayList<IElement>(Arrays.asList(x1, x2, x3));
final NestedArrayList<IElement> xlist2;
final NestedArrayList<IElement> xlist3 = new NestedArrayList<IElement>(Arrays.asList(x4, x5, x6));
public NestedArrayListTest() {
super("NestedArrayListTest");
list2 = NestedCopy.COPY_ELEMENT.clone(list);
list.add(list2);
list.add(list3);
list.add(g);
xlist2 = NestedCopy.COPY_ELEMENT.clone(xlist);
xlist.add(xlist2);
xlist.add(xlist3);
xlist.add(x7);
}
@Override
protected void setUp() throws Exception {
super.setUp();
}
public void test001() {
// check the initial string lists
assertEquals("[a, b, c, [a, b, c], [d, e, f], g]", list.toString());
assertEquals("[a, b, c]", list2.toString());
// check the depth of the nested list
assertEquals(3, NestedCopy.COPY_ELEMENT.depth(list, 1));
final NestedArrayList<IElement> result = new NestedArrayList<IElement>(10);
// add a "dummy element" at start of result list
result.add(f);
// get all elements of Level 2 from the list
NestedCopy.COPY_ELEMENT.level(list, new LevelSpec(2), result);
assertEquals("[f, a, b, c, d, e, f]", result.toString());
}
public void test002() {
// check the initial integer lists
assertEquals("[1, 2, 3, [1, 2, 3], [4, 5, 6], 7]", xlist.toString());
assertEquals("[1, 2, 3]", xlist2.toString());
// check the depth of the nested list
assertEquals(3, NestedCopy.COPY_ELEMENT.depth(xlist, 1));
final NestedArrayList<IElement> result = new NestedArrayList<IElement>(10);
// add a "dummy element" at start of result list
result.add(x6);
// get all elements of Level 2 from the list
NestedCopy.COPY_ELEMENT.level(xlist, new LevelSpec(2), result);
assertEquals("[6, 1, 2, 3, 4, 5, 6]", result.toString());
}
public void test003() {
int num = NestedCopy.COPY_ELEMENT.countIf(list, new StringEQa());
assertEquals(2, num);
num = NestedCopy.COPY_ELEMENT.countIf(list2, new StringEQa());
assertEquals(1, num);
}
public void test004() {
NestedArrayList<IElement> result1 = new NestedArrayList<IElement>();
result1.add(a);
boolean isEvaled = false;
isEvaled = NestedCopy.COPY_ELEMENT.flatten(a, list, result1, 1);
assertEquals("[a, b, c, b, c, [d, e, f], g]", result1.toString());
NestedArrayList<IElement> result2 = new NestedArrayList<IElement>();
isEvaled = NestedCopy.COPY_ELEMENT.flatten(list, result2, 0);
assertEquals("[a, b, c, a, b, c, d, e, f, g]", result2.toString());
}
public void test005() {
// 5x5 identity matrix generator
final int[] indexArray = new int[2];
indexArray[0] = 5;
indexArray[1] = 5;
final IElement[] valueArray = { x0, x1 };
NestedArrayList<IElement> result = new NestedArrayList<IElement>();
final IndexTableGenerator<IElement, NestedArrayList<IElement>> generator = new IndexTableGenerator<IElement, NestedArrayList<IElement>>(
indexArray, result, new IndexFunctionDiagonal<IElement>(valueArray), NestedCopy.COPY_ELEMENT);
final NestedArrayList<IElement> matrix = (NestedArrayList<IElement>) generator.table();
assertEquals("[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]", matrix.toString());
}
public void test006() {
final int[] indexArray = new int[2];
indexArray[0] = 3;
indexArray[1] = 4;
final IElement[] valueArray = { a, b };
NestedArrayList<IElement> result = new NestedArrayList<IElement>();
final IndexTableGenerator<IElement, NestedArrayList<IElement>> generator = new IndexTableGenerator<IElement, NestedArrayList<IElement>>(
indexArray, result, new IndexFunctionDiagonal<IElement>(valueArray), NestedCopy.COPY_ELEMENT);
final NestedArrayList<IElement> matrix = (NestedArrayList<IElement>) generator.table();
assertEquals("[[b, a, a, a], [a, b, a, a], [a, a, b, a]]", matrix.toString());
}
public void test007() {
final int[] indexArray = new int[3];
indexArray[0] = 3;
indexArray[1] = 4;
indexArray[2] = 5;
final IElement[] valueArray = { a, b };
NestedArrayList<IElement> result = new NestedArrayList<IElement>();
final IndexTableGenerator<IElement, NestedArrayList<IElement>> generator = new IndexTableGenerator<IElement, NestedArrayList<IElement>>(
indexArray, result, new IndexFunctionDiagonal<IElement>(valueArray), NestedCopy.COPY_ELEMENT);
final NestedArrayList<IElement> matrix = (NestedArrayList<IElement>) generator.table();
assertEquals(
"[[[b, a, a, a, a], [a, a, a, a, a], [a, a, a, a, a], [a, a, a, a, a]], [[a, a, a, a, a], [a, b, a, a, a], [a, a, a, a, a], [a, a, a, a, a]], [[a, a, a, a, a], [a, a, a, a, a], [a, a, b, a, a], [a, a, a, a, a]]]",
matrix.toString());
}
public void test008() {
NestedArrayList<IElement> fList = new NestedArrayList<IElement>();
fList.add(f);
NestedArrayList<IElement> gList = new NestedArrayList<IElement>();
gList.add(g);
Generating<IElement, NestedArrayList<IElement>> gen = new Generating<IElement, NestedArrayList<IElement>>(fList, gList, 0,
NestedCopy.COPY_ELEMENT);
NestedArrayList<IElement> res = gen.outer(list2, xlist2);
assertEquals(
"[f, [f, [g, a, 1], [g, a, 2], [g, a, 3]], [f, [g, b, 1], [g, b, 2], [g, b, 3]], [f, [g, c, 1], [g, c, 2], [g, c, 3]]]",
res.toString());
}
}
|
|
|
All contents copyright of the author. ©2007. JAMWiki Version 0.6.0 |
||