package com.foursquare.heapaudit.test;
import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class TestMULTIARRAY extends TestUtil {
// Test allocations of multi-dimensional arrays.
@Test public void MULTIARRAY_I() {
clear();
int[][] arrayI = new int[3][5];
assertTrue(expect("int",
15,
152));
assertTrue(empty());
}
@Test public void MULTIARRAY_X() {
clear();
TestChild[][] arrayL = new TestChild[1][7];
assertTrue(expect("com.foursquare.heapaudit.test.TestChild",
7,
72));
assertTrue(empty());
}
// test allocating multi-dim arrays with not all dims specified
@Test
public void MULTIARRAY_I_EmptySecondDim() {
clear();
int[][] arrayI = new int[3][];
assertTrue(expect("[I",
3,
32));
assertTrue(empty());
}
@Test
public void MULTIARRAY_I_InitiallyEmptySecondDim() {
clear();
int[][] arrayI = new int[3][];
arrayI[0] = new int[5];
arrayI[1] = new int[5];
arrayI[2] = new int[5];
assertTrue(expect("[I",
3,
32));
assertTrue(expect("int",
5,
40));
assertTrue(expect("int",
5,
40));
assertTrue(expect("int",
5,
40));
assertFalse(expect("int",
5,
40));
assertTrue(empty());
}
/**
* Similar to the previous test except that one of the secondary allocations is of a zero length array
*/
@Test
public void MULTIARRAY_I_InitiallyEmptySecondDim_andZeroLengthDims() {
clear();
int[][] arrayI = new int[3][];
arrayI[0] = new int[5];
arrayI[1] = new int[5];
arrayI[2] = new int[0]; // zero length
assertTrue(expect("[I",
3,
32));
assertTrue(expect("int",
5,
40));
assertTrue(expect("int",
5,
40));
assertTrue(expect("int",
0,
16));
assertFalse(expect("int",
0,
16));
assertTrue(empty());
}
@Test
public void MULTIARRAY_I_InitiallyEmptyThirdDim() {
clear();
int[][][] arrayI = new int[3][][];
arrayI[0] = new int[5][];
arrayI[1] = new int[5][];
arrayI[2] = new int[5][];
assertTrue(expect("[[I",
3,
32));
assertTrue(expect("[I",
5,
40));
assertTrue(expect("[I",
5,
40));
assertTrue(expect("[I",
5,
40));
assertFalse(expect("[I",
5,
40));
assertTrue(empty());
}
@Test
public void MULTIARRAY_I_EmptyThirdDim() {
clear();
int[][][] arrayI = new int[3][5][];
assertTrue(expect("[I",
15,
72));
assertTrue(empty());
arrayI[0][0] = new int[5];
assertTrue(expect("I",
5,
40));
assertTrue(empty());
}
@Test
public void MULTIARRAY_I_EmptyThirdAndFourthDim() {
clear();
int[][][][] arrayI = new int[3][5][][];
assertTrue(expect("[[I",
15,
72));
assertTrue(empty());
arrayI[2][4] = new int[5][];
assertTrue(expect("[I",
5,
40));
assertTrue(empty());
// replace last array with an int[3][]
arrayI[2][4] = new int[3][];
assertTrue(expect("[I",
3,
32));
assertTrue(empty());
// add a couple arrays
arrayI[0][0] = new int[3][];
arrayI[0][1] = new int[3][];
assertTrue(expect("[I",
3,
32));
assertTrue(expect("[I",
3,
32));
assertTrue(empty());
}
@Test
public void MULTIARRAY_X_EmptySecondDim() {
clear();
TestChild[][] arrayL = new TestChild[1][];
assertTrue(expect("com.foursquare.heapaudit.test.TestChild",
1,
24));
assertTrue(empty());
}
@Test
public void MULTIARRAY_X_InitiallyEmptySecondDim() {
clear();
TestChild[][] arrayL = new TestChild[1][];
arrayL[0] = new TestChild[7];
assertTrue(expect("com.foursquare.heapaudit.test.TestChild",
1,
24));
assertTrue(expect("com.foursquare.heapaudit.test.TestChild",
7,
48));
assertTrue(empty());
}
@Test
public void MULITMULTIARRAY_X_EmptySecondAndThirdDim() {
clear();
TestChild[][][] arrayL = new TestChild[1][][];
assertTrue(expect("com.foursquare.heapaudit.test.TestChild",
1,
24));
assertTrue(empty());
}
@Test
public void MULITMULTIARRAY_X_EmptySecondAndInitiallyEmptyThirdDim() {
clear();
TestChild[][][] arrayL = new TestChild[1][][];
arrayL[0] = new TestChild[7][];
assertTrue(expect("com.foursquare.heapaudit.test.TestChild",
1,
24));
assertTrue(expect("com.foursquare.heapaudit.test.TestChild",
7,
48));
assertTrue(empty());
}
@Test
public void MULITMULTIARRAY_X_EmptyThirdDim() {
clear();
TestChild[][][] arrayL = new TestChild[1][7][];
assertTrue(expect("com.foursquare.heapaudit.test.TestChild",
7,
72));
assertTrue(empty());
}
@Test
public void MULTIARRAY_X_Two_EmptySecondDim() {
clear();
TestChild[][] arrayL = new TestChild[1][];
assertTrue(expect("com.foursquare.heapaudit.test.TestChild",
1,
24));
TestChild[][] arrayL_2 = new TestChild[1][];
assertTrue(expect("com.foursquare.heapaudit.test.TestChild",
1,
24));
assertTrue(empty());
}
@Test
public void MULTIMULTIARRAY_C() {
clear();
char[][][][] arrayC = new char[10][10][][];
assertTrue(expect("[[C",
100,
112));
assertTrue(empty());
}
/**
* Test creating a multidim array with all zero length dimensions.
*/
@Test public void MULTIARRAY_C_zeroes() {
clear();
char[][] arrayC = new char[0][0];
assertTrue(expect("char",
0,
16));
assertTrue(empty());
}
/**
* Test creating a multidim array with 1st dim zero length, and the
* second dimension empty.
*/
@Test public void MULTIARRAY_C_zeroes_and_empty() {
clear();
char[][] arrayC = new char[0][];
assertTrue(expect("char",
0,
16));
assertTrue(empty());
}
/**
* Test creating a multidim array with 1st dim zero length, and the
* second and third dimension empty.
*/
@Test public void MULTIARRAY_C_zeroes_and_2nd_and_3rd_empty() {
clear();
char[][][] arrayC = new char[0][][];
assertTrue(expect("char",
0,
16));
assertTrue(empty());
}
/**
* Test creating a multidim array with 1st & 2nd dim zero length, and the
* third dimension empty.
*/
@Test public void MULTIARRAY_C_zeroes_and_3rd_empty() {
clear();
char[][][] arrayC = new char[0][0][];
assertTrue(expect("char",
0,
16));
assertTrue(empty());
}
/**
* Test creating a multidim array with 1st & 2nd dim zero length, and the
* third & fourth dimension empty.
*/
@Test public void FourDeep_MULTIARRAY_C_zeroes_and_3rd_and_4th_empty() {
clear();
char[][][][] arrayC = new char[0][0][][];
assertTrue(expect("char",
0,
16));
assertTrue(empty());
}
/**
* Test creating a multidim array with 1st to 3rd dim zero length, and the
* fourth dimension empty.
*/
@Test public void FourDeep_MULTIARRAY_C_zeroes_and_4th_empty() {
clear();
char[][][][] arrayC = new char[0][0][0][];
assertTrue(expect("char",
0,
16));
assertTrue(empty());
}
/**
* Test creating a multidim array with all four dims set to zero length.
*/
@Test public void FourDeep_MULTIARRAY_C_all_zero_length() {
clear();
char[][][][] arrayC = new char[0][0][0][0];
assertTrue(expect("char",
0,
16));
assertTrue(empty());
}
}