package util;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.junit.runners.MethodSorters;
import static org.junit.Assert.*;
import static util.ArrayUtils.*;
@RunWith(JUnit4.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class ArrayUtilsTests
{
@Test public void aa_concat()
{
String x = "x", y = "y", z = "z";
// concat(array, elem)
assertArrayEquals(arr(x), concat(arr(), x));
assertArrayEquals(arr(x, y), concat(arr(x), y));
assertArrayEquals(arr(x, y, z), concat(arr(x, y), z));
// concat(array, array)
assertArrayEquals(arr(), concat(arr(), arr()));
assertArrayEquals(arr(x), concat(arr(), arr(x)));
assertArrayEquals(arr(x), concat(arr(x), arr()));
assertArrayEquals(arr(x, y), concat(arr(x), arr(y)));
assertArrayEquals(arr(x, y, z), concat(arr(x, y), arr(z)));
assertArrayEquals(arr(x, y, z), concat(arr(x), arr(y, z)));
}
@Test public void ab_cartesian()
{
String x = "x", y = "y", z = "z";
assertArrayEquals(arr2(), cartesian(arr2(), arr()));
assertArrayEquals(arr2(), cartesian(arr2(arr(x)), arr()));
assertArrayEquals(arr2(arr(x, y)), cartesian(arr2(arr(x)), arr(y)));
assertArrayEquals(
arr2(arr(x, y, z)), cartesian(arr2(arr(x, y)), arr(z)));
assertArrayEquals(
arr2(arr(x, y), arr(x, z)), cartesian(arr2(arr(x)), arr(y, z)));
assertArrayEquals(
arr2(arr(x, y), arr(x, z), arr(y, y), arr(y, z)),
cartesian(arr2(arr(x), arr(y)), arr(y, z)));
}
@Test public void ac_contains()
{
String x = "x", y = "y", z = "z";
// contains(array, elem)
assertFalse (contains(arr(), x));
assertTrue (contains(arr(x), x));
assertFalse (contains(arr(x), y));
assertTrue (contains(arr(x, y), x));
assertTrue (contains(arr(x, y), y));
assertFalse (contains(arr(x, y), z));
// contains(array, array)
assertTrue (contains(arr(), arr()));
assertFalse (contains(arr(), arr(x)));
assertTrue (contains(arr(x), arr()));
assertTrue (contains(arr(x), arr(x)));
assertTrue (contains(arr(x, y), arr(x)));
assertFalse (contains(arr(x, y), arr(z)));
assertTrue (contains(arr(x, y), arr(x, y)));
assertFalse (contains(arr(x, y), arr(y, x)));
assertTrue (contains(arr(x, y, z), arr(x, y)));
assertTrue (contains(arr(x, y, z), arr(y, z)));
assertTrue (contains(arr(x, y, z), arr(x, z)));
assertFalse (contains(arr(x, y, z), arr(z, x)));
}
}