package net.varkhan.base.containers.array;
import junit.framework.TestCase;
/**
* <b></b>.
* <p/>
*
* @author varkhan
* @date 3/24/12
* @time 9:39 PM
*/
public class BoolArraysTest extends TestCase {
public static void assertArrayEquals(String message, boolean[] expected, boolean[] actual) {
if(expected==null) { if(actual==null) return; }
else if(expected.length==actual.length) {
boolean same = true;
for(int i=0; i<expected.length; i++) if(expected[i]!=actual[i]) { same=false; break; }
if(same) return;
}
fail(message+";\n expected: ["+BoolArrays.join(",",expected)+"];\n actual: ["+BoolArrays.join(",",actual)+"]");
}
public void testEquals() throws Exception {
assertTrue("equals([],[])", BoolArrays.equals(new boolean[] { }, new boolean[] { }));
assertTrue("equals([true, true, false],[true, true, false])", BoolArrays.equals(new boolean[] { true, true, false }, new boolean[] { true, true, false }));
assertFalse("equals([true, true, false],[true, false, false])", BoolArrays.equals(new boolean[] { true, true, false }, new boolean[] { true, false, false }));
assertFalse("equals([true, true, false],[true, true, false, true ])", BoolArrays.equals(new boolean[] { true, true, false }, new boolean[] { true, true, false, true }));
}
public void testIndexOf() throws Exception {
assertEquals("indexOf(true, true, true, false)", 0, BoolArrays.indexOf(true, true, true, false));
assertEquals("indexOf(false, true, true, false)", 2, BoolArrays.indexOf(false, true, true, false));
assertEquals("indexOf(false, true, true, true)", -1, BoolArrays.indexOf(false, true, true, true));
}
public void testIndexOfArray() throws Exception {
assertEquals("indexOf([], 0, [true, true, false])", 0, BoolArrays.indexOf(new boolean[]{}, 0, new boolean[]{true, true, false}));
assertEquals("indexOf([true], 0, [true, true, false])", 0, BoolArrays.indexOf(new boolean[]{true}, 0, new boolean[]{true, true, false}));
assertEquals("indexOf([false, true], 0, [true, false, true])", 1, BoolArrays.indexOf(new boolean[]{false, true}, 0, new boolean[]{true, false, true}));
assertEquals("indexOf([false, true], 2, [true, false, true])", -1, BoolArrays.indexOf(new boolean[]{false, true}, 2, new boolean[]{true, false, true}));
assertEquals("indexOf([false, true], 0, [true, true, false])", -1, BoolArrays.indexOf(new boolean[]{false, true}, 0, new boolean[]{true, true, false}));
}
public void testAppend() throws Exception {
assertArrayEquals("",
new boolean[]{true, true, false, false, true, true, false},
BoolArrays.append(new boolean[]{true, true, false}, false, true, true, false));
assertArrayEquals("",
new boolean[]{true, true, false, false, true, true, false},
BoolArrays.append(new boolean[]{}, true, true, false, false, true, true, false));
assertArrayEquals("",
new boolean[]{},
BoolArrays.append(new boolean[]{}));
assertArrayEquals("",
new boolean[]{true, true, false},
BoolArrays.append(new boolean[]{true, true, false}));
}
public void testPrepend() throws Exception {
assertArrayEquals("",
new boolean[]{false, true, true, false, true, true, false},
BoolArrays.prepend(new boolean[] { true, true, false }, false, true, true, false));
assertArrayEquals("",
new boolean[]{true, true, false, false, true, true, false},
BoolArrays.prepend(new boolean[] { }, true, true, false, false, true, true, false));
assertArrayEquals("",
new boolean[]{},
BoolArrays.prepend(new boolean[]{}));
assertArrayEquals("",
new boolean[]{true, true, false},
BoolArrays.prepend(new boolean[]{true, true, false}));
}
public void testConcat() throws Exception {
assertArrayEquals("",
new boolean[]{false, true, true, false, true, true, false},
BoolArrays.concat(new boolean[]{false, true, true}, new boolean[]{false, true, true, false}));
assertArrayEquals("",
new boolean[]{false, true, true, false, true, true, false},
BoolArrays.concat(new boolean[]{}, new boolean[]{false, true, true, false, true, true, false}));
assertArrayEquals("",
new boolean[]{},
BoolArrays.concat(new boolean[]{}));
assertArrayEquals("",
new boolean[]{false, true, true, false, true, true, false},
BoolArrays.concat(new boolean[]{false, true, true}, new boolean[]{false, true}, new boolean[]{true, false}));
assertArrayEquals("",
new boolean[]{false, true, true, false, true, true, false},
BoolArrays.concat(new boolean[]{false, true, true}, new boolean[]{}, new boolean[]{false, true}, new boolean[]{true, false}));
assertArrayEquals("",
new boolean[]{false, true, true, false, true, true, false},
BoolArrays.concat(new boolean[]{}, new boolean[]{false, true, true}, new boolean[]{false, true}, new boolean[]{true, false}));
}
public void testSubarray() throws Exception {
assertArrayEquals("subarray([],0,0)", new boolean[] { }, BoolArrays.subarray(new boolean[]{}, 0, 0));
assertArrayEquals("subarray([1,2,3,4,5,6],0,0)", new boolean[] { }, BoolArrays.subarray(new boolean[] { false, true, true, false, true, true }, 0, 0));
assertArrayEquals("subarray([1,2,3,4,5,6],6,6)", new boolean[] { }, BoolArrays.subarray(new boolean[] { false, true, true, false, true, true }, 6, 6));
assertArrayEquals("subarray([1,2,3,4,5,6],1,4)", new boolean[] { true, true, false }, BoolArrays.subarray(new boolean[] { false, true, true, false, true, true }, 1, 4));
assertArrayEquals("subarray([1,2,3,4,5,6],2,3)", new boolean[] { true }, BoolArrays.subarray(new boolean[] { false, true, true, false, true, true }, 2, 3));
assertArrayEquals("subarray([1,2,3,4,5,6],0,6)", new boolean[] { false, true, true, false, true, true }, BoolArrays.subarray(new boolean[] { false, true, true, false, true, true }, 0, 6));
assertArrayEquals("subarray([1,2,3,4,5,6],1,1)", new boolean[] { }, BoolArrays.subarray(new boolean[] { false, true, true, false, true, true}, 1, 1));
try {
BoolArrays.subarray(new boolean[] { }, 0, 1);
fail("subarray([],0,1)");
} catch (ArrayIndexOutOfBoundsException e) {
}
try {
BoolArrays.subarray(new boolean[] { }, 1, 0);
fail("subarray([],1,0)");
} catch (ArrayIndexOutOfBoundsException e) {
}
try {
BoolArrays.subarray(new boolean[] { false, true, true, false, true, true }, 3, 7);
fail("subarray([1,2,3,4,5,6],3,7)");
} catch (ArrayIndexOutOfBoundsException e) {
}
}
public void testStrgBool() throws Exception {
assertEquals("[0|]",BoolArrays.toString(new boolean[]{}));
assertEquals("[1|0]",BoolArrays.toString(new boolean[]{false}));
assertEquals("[1|1]",BoolArrays.toString(new boolean[]{true}));
assertEquals("[5|0,1,1,0,1]",BoolArrays.toString(new boolean[]{false,true,true,false,true}));
assertEquals("[5|0,1,1,0,1]",BoolArrays.toString(new StringBuilder(),new boolean[]{false,true,true,false,true}).toString());
assertEquals("[5|0,1,1,0,1]",BoolArrays.toString(new StringBuffer(),new boolean[]{false,true,true,false,true}).toString());
}
public void testJoinBool() throws Exception {
assertEquals("",BoolArrays.join(":",new boolean[]{}));
assertEquals("0",BoolArrays.join(":",new boolean[]{false}));
assertEquals("1",BoolArrays.join(":",new boolean[]{true}));
assertEquals("0:1:1:0:1",BoolArrays.join(":",new boolean[]{false,true,true,false,true}));
assertEquals("0:1:1:0:1",BoolArrays.join(new StringBuilder(),":",new boolean[]{false,true,true,false,true}).toString());
assertEquals("0:1:1:0:1",BoolArrays.join(new StringBuffer(),":",new boolean[]{false,true,true,false,true}).toString());
assertEquals("01101",BoolArrays.join(null,new boolean[]{false,true,true,false,true}));
assertEquals("01101",BoolArrays.join(new StringBuilder(),null,new boolean[]{false,true,true,false,true}).toString());
assertEquals("01101",BoolArrays.join(new StringBuffer(),null,new boolean[]{false,true,true,false,true}).toString());
}
}