package st.gravel.support.jvm; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import org.junit.Test; import st.gravel.support.jvm.ArrayExtensions; import st.gravel.support.jvm.Block1; import st.gravel.support.jvm.Block2; import st.gravel.support.jvm.Predicate2; public class ArrayExtensionsTest { @Test public void testCopyWithAll1() { Integer[] x = new Integer[] {}; Integer[] y = new Integer[] { 4, 5, 6 }; Integer[] z = ArrayExtensions.copyWithAll_(x, y); assertTrue(ArrayExtensions.isSameAs_(z, new Integer[] { 4, 5, 6 })); } @Test public void testCopyWithAll2() { Integer[] x = new Integer[] { 1, 2, 3 }; Integer[] y = new Integer[] {}; Integer[] z = ArrayExtensions.copyWithAll_(x, y); assertTrue(ArrayExtensions.isSameAs_(z, new Integer[] { 1, 2, 3 })); } @Test public void testCopyWithAll3() { Integer[] x = new Integer[] { 1, 2, 3 }; Integer[] y = new Integer[] { 4, 5, 6 }; Integer[] z = ArrayExtensions.copyWithAll_(x, y); assertTrue(ArrayExtensions.isSameAs_(z, new Integer[] { 1, 2, 3, 4, 5, 6 })); } @Test public void testSyncWith() { final Integer[] x = new Integer[] { 1, 2, 3 }; final String[] y = new String[] { "1", "2", "4" }; final ArrayList<String> results = new ArrayList<>(); ArrayExtensions.syncWith(x, y, new Predicate2<Integer, String>() { @Override public boolean value_value_(Integer o, String n) { return o.toString().equals(n); } }, new Block2<Object, Integer, String>() { @Override public Object value_value_(Integer o, String n) { results.add("Then old:" + o + " new: " + n); return null; } } , new Block1<Object, String>() { @Override public Object value_(String n) { results.add("New: " + n); return null; } }, new Block1<Object, Integer>() { @Override public Object value_(Integer o) { results.add("Old: " + o); return null; } }); String[] resultArray = results.toArray(new String[results.size()]); assertTrue(ArrayExtensions.isSameAs_(resultArray, new String[] { "Then old:1 new: 1", "Then old:2 new: 2", "Old: 3", "New: 4" })); } }