This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 7a6cfe28ad Unit tests
7a6cfe28ad is described below

commit 7a6cfe28ad06436c37ca8482f2544177ead6b5aa
Author: James Bognar <[email protected]>
AuthorDate: Wed Dec 3 12:10:25 2025 -0800

    Unit tests
---
 .../juneau/commons/utils/CollectionUtils.java      |   50 +-
 .../juneau/commons/utils/CollectionUtils_Test.java | 1500 +++++++++++++++-----
 2 files changed, 1185 insertions(+), 365 deletions(-)

diff --git 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/CollectionUtils.java
 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/CollectionUtils.java
index 8b3b28c96b..acd8c58bd1 100644
--- 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/CollectionUtils.java
+++ 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/CollectionUtils.java
@@ -374,8 +374,7 @@ public class CollectionUtils {
         */
        @SuppressWarnings("unchecked")
        public static <E> E[] array(Collection<E> value, Class<E> 
componentType) {
-               if (value == null)
-                       return null;
+               assertArgNotNull("value", value);
                var array = (E[])Array.newInstance(componentType, value.size());
                return value.toArray(array);
        }
@@ -389,10 +388,7 @@ public class CollectionUtils {
         * @throws IllegalArgumentException if the input is not an array.
         */
        public static List<Object> arrayToList(Object array) {
-               if (array == null) {
-                       return null;  // NOSONAR
-               }
-
+               assertArgNotNull("array", array);
                assertArg(isArray(array), "Input must be an array but was {0}", 
cn(array));
 
                var componentType = array.getClass().getComponentType();
@@ -609,9 +605,7 @@ public class CollectionUtils {
         * @return A new list with the same values as the specified list, but 
with values transformed by the specified function.  Null if the list being 
copied was null.
         */
        public static <E> List<E> copyOf(List<E> l, Function<? super E,? 
extends E> valueMapper, Supplier<List<E>> listFactory) {
-               if (l == null)
-                       return null;  // NOSONAR - Intentional.
-               return 
l.stream().map(valueMapper).collect(toCollection(listFactory));
+               return l == null ? null : 
l.stream().map(valueMapper).collect(toCollection(listFactory));
        }
 
        /**
@@ -650,9 +644,7 @@ public class CollectionUtils {
         * @return A new map with the same keys as the specified map, but with 
values transformed by the specified function.  Null if the map being copied was 
null.
         */
        public static <K,V> Map<K,V> copyOf(Map<K,V> m, Function<? super V,? 
extends V> valueMapper, Supplier<Map<K,V>> mapFactory) {
-               if (m == null)
-                       return null;  // NOSONAR - Intentional.
-               return m.entrySet().stream().collect(toMap(Map.Entry::getKey, e 
-> valueMapper.apply(e.getValue()), (a, b) -> b, mapFactory));
+               return m == null ? null : 
m.entrySet().stream().collect(toMap(Map.Entry::getKey, e -> 
valueMapper.apply(e.getValue()), (a, b) -> b, mapFactory));
        }
 
        /**
@@ -688,9 +680,7 @@ public class CollectionUtils {
         * @return A new list with the same values as the specified list, but 
with values transformed by the specified function.  Null if the list being 
copied was null.
         */
        public static <E> Set<E> copyOf(Set<E> l, Function<? super E,? extends 
E> valueMapper, Supplier<Set<E>> setFactory) {
-               if (l == null)
-                       return null;  // NOSONAR - Intentional.
-               return 
l.stream().map(valueMapper).collect(toCollection(setFactory));
+               return l == null ? null : 
l.stream().map(valueMapper).collect(toCollection(setFactory));
        }
 
        /**
@@ -719,22 +709,6 @@ public class CollectionUtils {
                return value;
        }
 
-       /**
-        * Returns <jk>true</jk> if the following sorted arrays are equals.
-        *
-        * @param a1 Array #1.
-        * @param a2 Array #2.
-        * @return <jk>true</jk> if the following sorted arrays are equals.
-        */
-       public static boolean equals(String[] a1, String[] a2) {
-               if (a1.length != a2.length)
-                       return false;
-               for (var i = 0; i < a1.length; i++)
-                       if (ne(a1[i], a2[i]))
-                               return false;
-               return true;
-       }
-
        /**
         * Returns the first element in a list.
         *
@@ -743,9 +717,7 @@ public class CollectionUtils {
         * @return The first element in the list, or <jk>null</jk> if the list 
is <jk>null</jk> or empty.
         */
        public static <E> E first(List<E> l) {
-               if (l == null || l.isEmpty())
-                       return null;
-               return l.get(0);
+               return isEmpty(l) ? null : l.get(0);
        }
 
        /**
@@ -866,9 +838,7 @@ public class CollectionUtils {
         * @return The last element, or <jk>null</jk> if the array is 
<jk>null</jk> or empty.
         */
        public static <E> E last(E[] l) {
-               if (l == null || l.length == 0)
-                       return null;
-               return l[l.length - 1];
+               return (l == null || l.length == 0) ? null : l[l.length - 1];
        }
 
        /**
@@ -879,9 +849,7 @@ public class CollectionUtils {
         * @return The last element, or <jk>null</jk> if the list is 
<jk>null</jk> or empty.
         */
        public static <E> E last(List<E> l) {
-               if (l == null || l.isEmpty())
-                       return null;
-               return l.get(l.size() - 1);
+               return isEmpty(l) ? null : l.get(l.size() - 1);
        }
 
        /**
@@ -1930,7 +1898,7 @@ public class CollectionUtils {
         * @return A new array.
         */
        public static <E> Object toArray(Collection<?> c, Class<E> elementType) 
{
-               Object a = Array.newInstance(elementType, c.size());
+               var a = Array.newInstance(elementType, c.size());
                Iterator<?> it = c.iterator();
                int i = 0;
                while (it.hasNext())
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/commons/utils/CollectionUtils_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/commons/utils/CollectionUtils_Test.java
index 32744ba4d3..1c9f35c140 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/commons/utils/CollectionUtils_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/commons/utils/CollectionUtils_Test.java
@@ -24,6 +24,7 @@ import static org.junit.jupiter.api.Assertions.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.commons.collections.*;
 import org.junit.jupiter.api.*;
 
 class CollectionUtils_Test extends TestBase {
@@ -31,563 +32,1414 @@ class CollectionUtils_Test extends TestBase {
        
//====================================================================================================
        // Constructor (line 126)
        
//====================================================================================================
-       // Note: CollectionUtils has a private constructor, so it cannot be 
instantiated.
-       // Line 126 (class declaration) is covered by using the class's static 
methods.
+       @Test
+       void a00_constructor() {
+               // Test line 126: class instantiation
+               // CollectionUtils has a private constructor, so it cannot be 
instantiated.
+               // Line 126 (class declaration) is covered by using the class's 
static methods.
+       }
 
        
//====================================================================================================
-       // treeSet(Set)
+       // a(T...)
        
//====================================================================================================
        @Test
-       void a01_treeSet_fromSet() {
-               LinkedHashSet<String> input = new LinkedHashSet<>(l("c", "a", 
"b"));
-               TreeSet<String> result = toSortedSet(input);
-
+       void a001_a() {
+               String[] result = a("a", "b", "c");
                assertNotNull(result);
-               assertEquals(l("a", "b", "c"), new ArrayList<>(result));
-
-               // Null input
-               assertNull(toSortedSet((Set<String>)null));
+               assertEquals(3, result.length);
+               assertEquals("a", result[0]);
+               assertEquals("b", result[1]);
+               assertEquals("c", result[2]);
+               
+               // Empty array
+               String[] empty = a();
+               assertNotNull(empty);
+               assertEquals(0, empty.length);
        }
 
+       
//====================================================================================================
+       // a2(E[]...)
+       
//====================================================================================================
        @Test
-       void a02_treeSet_fromSet_numbers() {
-               LinkedHashSet<Integer> input = new LinkedHashSet<>(l(3, 1, 2));
-               TreeSet<Integer> result = toSortedSet(input);
-
+       void a002_a2() {
+               String[][] result = a2(a("a", "b"), a("c", "d"));
                assertNotNull(result);
-               assertEquals(l(1, 2, 3), new ArrayList<>(result));
+               assertEquals(2, result.length);
+               assertEquals(2, result[0].length);
+               assertEquals("a", result[0][0]);
+               assertEquals("b", result[0][1]);
+               assertEquals("c", result[1][0]);
+               assertEquals("d", result[1][1]);
+               
+               // Single row
+               String[][] single = a2(a("x", "y", "z"));
+               assertEquals(1, single.length);
+               assertEquals(3, single[0].length);
+               
+               // Empty
+               String[][] empty = a2();
+               assertNotNull(empty);
+               assertEquals(0, empty.length);
        }
 
        
//====================================================================================================
-       // treeSet(T...)
+       // accumulate(Object)
        
//====================================================================================================
        @Test
-       void a03_treeSet_varargs() {
-               TreeSet<String> result = sortedSet("c", "a", "b");
-
+       void a003_accumulate() {
+               List<String> list = list("a", "b", "c");
+               List<?> result = accumulate(list);
                assertNotNull(result);
-               assertEquals(l("a", "b", "c"), new ArrayList<>(result));
+               assertEquals(3, result.size());
+               assertTrue(result.contains("a"));
+               assertTrue(result.contains("b"));
+               assertTrue(result.contains("c"));
        }
 
+       
//====================================================================================================
+       // addAll(List<E>, E...)
+       
//====================================================================================================
        @Test
-       void a04_treeSet_varargs_empty() {
-               TreeSet<String> result = sortedSet();
+       void a004_addAll_listVarargs() {
+               // Null value creates new list
+               var result1 = addAll((List<String>)null, "a", "b");
+               assertNotNull(result1);
+               assertEquals(list("a", "b"), result1);
+               
+               // Existing list adds to it
+               var list = list("x");
+               var result2 = addAll(list, "a", "b");
+               assertSame(list, result2);
+               assertEquals(list("x", "a", "b"), result2);
+               
+               // Null entries returns original
+               var list2 = list("a", "b");
+               var result3 = addAll(list2, (String[])null);
+               assertSame(list2, result3);
+       }
 
-               assertNotNull(result);
-               assertEmpty(result);
+       
//====================================================================================================
+       // addAll(List<E>, List<E>)
+       
//====================================================================================================
+       @Test
+       void a005_addAll_listToList() {
+               // Null entries returns original
+               var list = list("a", "b");
+               var result1 = addAll(list, (List<String>)null);
+               assertSame(list, result1);
+               assertEquals(list("a", "b"), result1);
+               
+               // Null value creates copy
+               var entries = list("x", "y", "z");
+               var result2 = addAll(null, entries);
+               assertNotNull(result2);
+               assertEquals(list("x", "y", "z"), result2);
+               assertNotSame(entries, result2);
+               
+               // Both not null adds to existing
+               var list2 = list("a", "b");
+               var entries2 = list("c", "d");
+               var result3 = addAll(list2, entries2);
+               assertSame(list2, result3);
+               assertEquals(list("a", "b", "c", "d"), result3);
        }
 
+       
//====================================================================================================
+       // addAll(Set<E>, E...)
+       
//====================================================================================================
        @Test
-       void a05_treeSet_varargs_single() {
-               TreeSet<String> result = sortedSet("a");
+       void a006_addAll_setVarargs() {
+               // Null entries returns original
+               var set = set("a", "b");
+               var result1 = addAll(set, (String[])null);
+               assertSame(set, result1);
+               assertEquals(set("a", "b"), result1);
+               
+               // Null value creates new set
+               var result2 = addAll((Set<String>)null, "x", "y", "z");
+               assertNotNull(result2);
+               assertEquals(set("x", "y", "z"), result2);
+               
+               // Both not null adds to existing
+               var set2 = set("a", "b");
+               var result3 = addAll(set2, "c", "d");
+               assertSame(set2, result3);
+               assertEquals(set("a", "b", "c", "d"), result3);
+       }
 
-               assertNotNull(result);
-               assertEquals(l("a"), new ArrayList<>(result));
+       
//====================================================================================================
+       // addAll(SortedSet<E>, E...)
+       
//====================================================================================================
+       @Test
+       void a007_addAll_sortedSetVarargs() {
+               // Null entries returns original
+               var set = sortedSet("a", "b");
+               var result1 = addAll(set, (String[])null);
+               assertSame(set, result1);
+               assertEquals(sortedSet("a", "b"), result1);
+               
+               // Null value creates new sorted set
+               var result2 = addAll((SortedSet<String>)null, "x", "y", "z");
+               assertNotNull(result2);
+               assertEquals(sortedSet("x", "y", "z"), result2);
+               
+               // Both not null adds to existing
+               var set2 = sortedSet("a", "b");
+               var result3 = addAll(set2, "c", "d");
+               assertSame(set2, result3);
+               assertEquals(sortedSet("a", "b", "c", "d"), result3);
        }
 
+       
//====================================================================================================
+       // addAll(T[], T...)
+       
//====================================================================================================
        @Test
-       void a06_treeSet_varargs_numbers() {
-               TreeSet<Integer> result = sortedSet(3, 1, 2, 5, 4);
+       void a008_addAll_array() {
+               String[] s = {};
+               s = addAll(s, "a", "b");
+               assertList(s, "a", "b");
+               
+               s = addAll(s, "c");
+               assertList(s, "a", "b", "c");
+               
+               s = addAll(s);
+               assertList(s, "a", "b", "c");
+               
+               var o = addAll((Object[])null);
+               assertEmpty(o);
+               
+               s = addAll((String[])null, "a", "b");
+               assertList(s, "a", "b");
+       }
 
+       
//====================================================================================================
+       // ao(Object...)
+       
//====================================================================================================
+       @Test
+       void a009_ao() {
+               Object[] result = ao("string", 42, true, 3.14, null);
                assertNotNull(result);
-               assertEquals(l(1, 2, 3, 4, 5), new ArrayList<>(result));
+               assertEquals(5, result.length);
+               assertEquals("string", result[0]);
+               assertEquals(42, result[1]);
+               assertEquals(true, result[2]);
+               assertEquals(3.14, result[3]);
+               assertNull(result[4]);
+               
+               // Empty
+               Object[] empty = ao();
+               assertNotNull(empty);
+               assertEquals(0, empty.length);
        }
 
        
//====================================================================================================
-       // map(K,V,K,V,K,V,K,V)
+       // array(Class<E>, int)
        
//====================================================================================================
        @Test
-       void a07_map_4pairs() {
-               LinkedHashMap<String, Integer> result = map("a", 1, "b", 2, 
"c", 3, "d", 4);
-
+       void a010_array_classLength() {
+               String[] result = array(String.class, 5);
                assertNotNull(result);
-               assertSize(4, result);
-               assertEquals(1, result.get("a"));
-               assertEquals(2, result.get("b"));
-               assertEquals(3, result.get("c"));
-               assertEquals(4, result.get("d"));
-
-               // Verify order (LinkedHashMap maintains insertion order)
-               var keys = new ArrayList<>(result.keySet());
-               assertEquals(l("a", "b", "c", "d"), keys);
+               assertEquals(5, result.length);
+               for (String s : result) {
+                       assertNull(s);
+               }
        }
 
        
//====================================================================================================
-       // map(K,V,K,V,K,V,K,V,K,V)
+       // array(Collection<E>, Class<E>)
        
//====================================================================================================
        @Test
-       void a08_map_5pairs() {
-               LinkedHashMap<String, Integer> result = map("a", 1, "b", 2, 
"c", 3, "d", 4, "e", 5);
-
+       void a011_array_collection() {
+               List<String> list = list("a", "b", "c");
+               String[] result = array(list, String.class);
                assertNotNull(result);
-               assertSize(5, result);
-               assertEquals(1, result.get("a"));
-               assertEquals(2, result.get("b"));
-               assertEquals(3, result.get("c"));
-               assertEquals(4, result.get("d"));
-               assertEquals(5, result.get("e"));
-
-               // Verify order (LinkedHashMap maintains insertion order)
-               var keys = new ArrayList<>(result.keySet());
-               assertEquals(l("a", "b", "c", "d", "e"), keys);
+               assertEquals(3, result.length);
+               assertEquals("a", result[0]);
+               assertEquals("b", result[1]);
+               assertEquals("c", result[2]);
        }
 
+       
//====================================================================================================
+       // arrayToList(Object)
+       
//====================================================================================================
        @Test
-       void a09_map_4pairs_nullValues() {
-               LinkedHashMap<String, String> result = map("a", "val1", "b", 
null, "c", "val3", "d", null);
-
+       void a012_arrayToList() {
+               String[] arr = {"a", "b", "c"};
+               List<Object> result = arrayToList(arr);
                assertNotNull(result);
-               assertSize(4, result);
-               assertEquals("val1", result.get("a"));
-               assertNull(result.get("b"));
-               assertEquals("val3", result.get("c"));
-               assertNull(result.get("d"));
+               assertEquals(3, result.size());
+               assertEquals("a", result.get(0));
+               assertEquals("b", result.get(1));
+               assertEquals("c", result.get(2));
+               
+               // Primitive array
+               int[] intArr = {1, 2, 3};
+               List<Object> intResult = arrayToList(intArr);
+               assertEquals(3, intResult.size());
+               assertEquals(1, intResult.get(0));
+               assertEquals(2, intResult.get(1));
+               assertEquals(3, intResult.get(2));
        }
 
+       
//====================================================================================================
+       // booleans(boolean...)
+       
//====================================================================================================
        @Test
-       void a10_map_5pairs_nullValues() {
-               LinkedHashMap<String, String> result = map("a", "val1", "b", 
null, "c", "val3", "d", null, "e", "val5");
-
+       void a013_booleans() {
+               boolean[] result = booleans(true, false, true);
                assertNotNull(result);
-               assertSize(5, result);
-               assertEquals("val1", result.get("a"));
-               assertNull(result.get("b"));
-               assertEquals("val3", result.get("c"));
-               assertNull(result.get("d"));
-               assertEquals("val5", result.get("e"));
+               assertEquals(3, result.length);
+               assertTrue(result[0]);
+               assertFalse(result[1]);
+               assertTrue(result[2]);
        }
 
        
//====================================================================================================
-       // m() - unmodifiable maps
+       // bytes(int...)
        
//====================================================================================================
        @Test
-       void a11_m_empty() {
-               Map<String, Integer> result = m();
-
+       void a014_bytes() {
+               byte[] result = bytes(1, 2, 3);
                assertNotNull(result);
-               assertEmpty(result);
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", 1));
+               assertEquals(3, result.length);
+               assertEquals(1, result[0]);
+               assertEquals(2, result[1]);
+               assertEquals(3, result[2]);
        }
 
+       
//====================================================================================================
+       // chars(char...)
+       
//====================================================================================================
        @Test
-       void a12_m_1pair() {
-               Map<String, Integer> result = m("a", 1);
-
+       void a015_chars() {
+               char[] result = chars('a', 'b', 'c');
                assertNotNull(result);
-               assertSize(1, result);
-               assertEquals(1, result.get("a"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", 2));
+               assertEquals(3, result.length);
+               assertEquals('a', result[0]);
+               assertEquals('b', result[1]);
+               assertEquals('c', result[2]);
        }
 
+       
//====================================================================================================
+       // combine(E[]...)
+       
//====================================================================================================
        @Test
-       void a13_m_2pairs() {
-               Map<String, Integer> result = m("a", 1, "b", 2);
+       void a016_combine() {
+               var s1 = a("a");
+               var s2 = a("b");
+               
+               assertList(combine(s1, s2), "a", "b");
+               assertList(combine(s1), "a");
+               assertList(combine(s2), "b");
+               assertList(combine(s1, null), "a");
+               assertList(combine(null, s2), "b");
+               assertNull(combine(null, null));
+               assertNull(combine());
+       }
 
-               assertNotNull(result);
-               assertSize(2, result);
-               assertEquals(1, result.get("a"));
-               assertEquals(2, result.get("b"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", 3));
+       
//====================================================================================================
+       // contains(T, T[])
+       
//====================================================================================================
+       @Test
+       void a017_contains() {
+               String[] arr = {"a", "b", "c"};
+               assertTrue(contains("a", arr));
+               assertTrue(contains("b", arr));
+               assertFalse(contains("d", arr));
+               assertFalse(contains(null, arr));
+               assertFalse(contains("a", null));
        }
 
+       
//====================================================================================================
+       // copyArrayToList(Object, List)
+       
//====================================================================================================
        @Test
-       void a14_m_3pairs() {
-               Map<String, Integer> result = m("a", 1, "b", 2, "c", 3);
+       void a018_copyArrayToList() {
+               String[] arr = {"a", "b", "c"};
+               List<Object> list = new ArrayList<>();
+               List result = copyArrayToList(arr, list);
+               assertSame(list, result);
+               assertEquals(3, list.size());
+               assertEquals("a", list.get(0));
+               assertEquals("b", list.get(1));
+               assertEquals("c", list.get(2));
+               
+               // Null array
+               List<Object> list2 = new ArrayList<>();
+               copyArrayToList(null, list2);
+               assertTrue(list2.isEmpty());
+       }
 
+       
//====================================================================================================
+       // copyOf(Collection<E>)
+       
//====================================================================================================
+       @Test
+       void a019_copyOf_collection() {
+               Collection<String> col = list("a", "b", "c");
+               Collection<String> result = copyOf(col);
                assertNotNull(result);
-               assertSize(3, result);
-               assertEquals(1, result.get("a"));
-               assertEquals(2, result.get("b"));
-               assertEquals(3, result.get("c"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", 4));
+               assertEquals(3, result.size());
+               assertTrue(result.contains("a"));
+               assertTrue(result.contains("b"));
+               assertTrue(result.contains("c"));
+               assertNotSame(col, result);
+               
+               assertNull(copyOf((Collection<String>)null));
        }
 
+       
//====================================================================================================
+       // copyOf(List<E>)
+       
//====================================================================================================
        @Test
-       void a15_m_4pairs() {
-               Map<String, Integer> result = m("a", 1, "b", 2, "c", 3, "d", 4);
+       void a020_copyOf_list() {
+               List<String> list = list("a", "b", "c");
+               ArrayList<String> result = copyOf(list);
+               assertNotNull(result);
+               assertEquals(3, result.size());
+               assertEquals("a", result.get(0));
+               assertEquals("b", result.get(1));
+               assertEquals("c", result.get(2));
+               assertNotSame(list, result);
+               
+               assertNull(copyOf((List<String>)null));
+       }
 
+       
//====================================================================================================
+       // copyOf(List<E>, Function)
+       
//====================================================================================================
+       @Test
+       void a021_copyOf_listFunction() {
+               List<String> list = list("a", "b", "c");
+               List<String> result = copyOf(list, s -> s.toUpperCase());
                assertNotNull(result);
-               assertSize(4, result);
-               assertEquals(1, result.get("a"));
-               assertEquals(2, result.get("b"));
-               assertEquals(3, result.get("c"));
-               assertEquals(4, result.get("d"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", 5));
+               assertEquals(3, result.size());
+               assertEquals("A", result.get(0));
+               assertEquals("B", result.get(1));
+               assertEquals("C", result.get(2));
+               
+               assertNull(copyOf((List<String>)null, s -> s));
        }
 
+       
//====================================================================================================
+       // copyOf(List<E>, Function, Supplier)
+       
//====================================================================================================
        @Test
-       void a16_m_5pairs() {
-               Map<String, Integer> result = m("a", 1, "b", 2, "c", 3, "d", 4, 
"e", 5);
+       void a022_copyOf_listFunctionSupplier() {
+               List<String> list = list("a", "b");
+               List<String> result = copyOf(list, s -> s.toUpperCase(), 
LinkedList::new);
+               assertNotNull(result);
+               assertTrue(result instanceof LinkedList);
+               assertEquals(2, result.size());
+               assertEquals("A", result.get(0));
+               assertEquals("B", result.get(1));
+       }
 
+       
//====================================================================================================
+       // copyOf(Map<K,V>)
+       
//====================================================================================================
+       @Test
+       void a023_copyOf_map() {
+               Map<String, Integer> map = map("a", 1, "b", 2);
+               Map<String, Integer> result = copyOf(map);
                assertNotNull(result);
-               assertSize(5, result);
+               assertEquals(2, result.size());
                assertEquals(1, result.get("a"));
                assertEquals(2, result.get("b"));
-               assertEquals(3, result.get("c"));
-               assertEquals(4, result.get("d"));
-               assertEquals(5, result.get("e"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", 6));
+               assertNotSame(map, result);
+               
+               assertNull(copyOf((Map<String, Integer>)null));
        }
 
+       
//====================================================================================================
+       // copyOf(Map<K,V>, Function)
+       
//====================================================================================================
        @Test
-       void a17_m_mixedTypes() {
-               Map<String, Object> result = m("name", "Alice", "age", 30, 
"active", true);
-
+       void a024_copyOf_mapFunction() {
+               Map<String, Integer> map = map("a", 1, "b", 2);
+               Map<String, Integer> result = copyOf(map, v -> v * 2);
                assertNotNull(result);
-               assertSize(3, result);
-               assertEquals("Alice", result.get("name"));
-               assertEquals(30, result.get("age"));
-               assertEquals(true, result.get("active"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", "y"));
+               assertEquals(2, result.size());
+               assertEquals(2, result.get("a"));
+               assertEquals(4, result.get("b"));
        }
 
        
//====================================================================================================
-       // map() and m() - 6 to 10 pairs
+       // copyOf(Map<K,V>, Function, Supplier)
        
//====================================================================================================
        @Test
-       void a18_map_6pairs() {
-               LinkedHashMap<String, Integer> result = map("a", 1, "b", 2, 
"c", 3, "d", 4, "e", 5, "f", 6);
+       void a025_copyOf_mapFunctionSupplier() {
+               Map<String, Integer> map = map("a", 1);
+               Map<String, Integer> result = copyOf(map, v -> v, TreeMap::new);
+               assertNotNull(result);
+               assertTrue(result instanceof TreeMap);
+               assertEquals(1, result.size());
+       }
 
+       
//====================================================================================================
+       // copyOf(Set<E>)
+       
//====================================================================================================
+       @Test
+       void a026_copyOf_set() {
+               Set<String> set = set("a", "b", "c");
+               Set<String> result = copyOf(set);
                assertNotNull(result);
-               assertSize(6, result);
-               assertEquals(6, result.get("f"));
-               assertEquals(l("a", "b", "c", "d", "e", "f"), new 
ArrayList<>(result.keySet()));
+               assertEquals(3, result.size());
+               assertTrue(result.contains("a"));
+               assertNotSame(set, result);
+               
+               assertNull(copyOf((Set<String>)null));
        }
 
+       
//====================================================================================================
+       // copyOf(Set<E>, Function)
+       
//====================================================================================================
        @Test
-       void a19_map_7pairs() {
-               LinkedHashMap<String, Integer> result = map("a", 1, "b", 2, 
"c", 3, "d", 4, "e", 5, "f", 6, "g", 7);
+       void a027_copyOf_setFunction() {
+               Set<String> set = set("a", "b");
+               Set<String> result = copyOf(set, s -> s.toUpperCase());
+               assertNotNull(result);
+               assertEquals(2, result.size());
+               assertTrue(result.contains("A"));
+               assertTrue(result.contains("B"));
+       }
 
+       
//====================================================================================================
+       // copyOf(Set<E>, Function, Supplier)
+       
//====================================================================================================
+       @Test
+       void a028_copyOf_setFunctionSupplier() {
+               Set<String> set = set("a", "b");
+               Set<String> result = copyOf(set, s -> s, TreeSet::new);
                assertNotNull(result);
-               assertSize(7, result);
-               assertEquals(7, result.get("g"));
+               assertTrue(result instanceof TreeSet);
+               assertEquals(2, result.size());
        }
 
+       
//====================================================================================================
+       // copyOf(T[])
+       
//====================================================================================================
        @Test
-       void a20_map_8pairs() {
-               LinkedHashMap<String, Integer> result = map("a", 1, "b", 2, 
"c", 3, "d", 4, "e", 5, "f", 6, "g", 7, "h", 8);
+       void a029_copyOf_array() {
+               String[] arr = {"a", "b", "c"};
+               String[] result = copyOf(arr);
+               assertNotNull(result);
+               assertEquals(3, result.length);
+               assertEquals("a", result[0]);
+               assertNotSame(arr, result);
+               
+               assertNull(copyOf((String[])null));
+       }
 
+       
//====================================================================================================
+       // doubles(double...)
+       
//====================================================================================================
+       @Test
+       void a030_doubles() {
+               double[] result = doubles(1.0, 2.0, 3.0);
                assertNotNull(result);
-               assertSize(8, result);
-               assertEquals(8, result.get("h"));
+               assertEquals(3, result.length);
+               assertEquals(1.0, result[0]);
+               assertEquals(2.0, result[1]);
+               assertEquals(3.0, result[2]);
        }
 
+       
//====================================================================================================
+       // first(List<E>)
+       
//====================================================================================================
        @Test
-       void a21_map_9pairs() {
-               LinkedHashMap<String, Integer> result = map("a", 1, "b", 2, 
"c", 3, "d", 4, "e", 5, "f", 6, "g", 7, "h", 8, "i", 9);
+       void a031_first() {
+               List<String> list = list("a", "b", "c");
+               assertEquals("a", first(list));
+               
+               assertNull(first(null));
+               assertNull(first(list()));
+       }
 
+       
//====================================================================================================
+       // floats(float...)
+       
//====================================================================================================
+       @Test
+       void a032_floats() {
+               float[] result = floats(1.0f, 2.0f, 3.0f);
                assertNotNull(result);
-               assertSize(9, result);
-               assertEquals(9, result.get("i"));
+               assertEquals(3, result.length);
+               assertEquals(1.0f, result[0]);
+               assertEquals(2.0f, result[1]);
+               assertEquals(3.0f, result[2]);
        }
 
+       
//====================================================================================================
+       // forEachReverse(E[], Consumer)
+       
//====================================================================================================
        @Test
-       void a22_map_10pairs() {
-               LinkedHashMap<String, Integer> result = map("a", 1, "b", 2, 
"c", 3, "d", 4, "e", 5, "f", 6, "g", 7, "h", 8, "i", 9, "j", 10);
+       void a033_forEachReverse_array() {
+               String[] arr = {"a", "b", "c"};
+               List<String> result = new ArrayList<>();
+               forEachReverse(arr, result::add);
+               assertEquals(list("c", "b", "a"), result);
+       }
 
-               assertNotNull(result);
-               assertSize(10, result);
-               assertEquals(10, result.get("j"));
-               assertEquals(l("a", "b", "c", "d", "e", "f", "g", "h", "i", 
"j"), new ArrayList<>(result.keySet()));
+       
//====================================================================================================
+       // forEachReverse(List<E>, Consumer)
+       
//====================================================================================================
+       @Test
+       void a034_forEachReverse_list() {
+               List<String> list = list("a", "b", "c");
+               List<String> result = new ArrayList<>();
+               forEachReverse(list, result::add);
+               assertEquals(list("c", "b", "a"), result);
        }
 
+       
//====================================================================================================
+       // indexOf(T, T[])
+       
//====================================================================================================
        @Test
-       void a23_m_6pairs() {
-               Map<String, Integer> result = m("a", 1, "b", 2, "c", 3, "d", 4, 
"e", 5, "f", 6);
+       void a035_indexOf() {
+               String[] arr = {"a", "b", "c"};
+               assertEquals(0, indexOf("a", arr));
+               assertEquals(1, indexOf("b", arr));
+               assertEquals(2, indexOf("c", arr));
+               assertEquals(-1, indexOf("d", arr));
+               assertEquals(-1, indexOf(null, arr));
+               assertEquals(-1, indexOf("a", null));
+       }
 
+       
//====================================================================================================
+       // ints(int...)
+       
//====================================================================================================
+       @Test
+       void a036_ints() {
+               int[] result = ints(1, 2, 3);
                assertNotNull(result);
-               assertSize(6, result);
-               assertEquals(6, result.get("f"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", 7));
+               assertEquals(3, result.length);
+               assertEquals(1, result[0]);
+               assertEquals(2, result[1]);
+               assertEquals(3, result[2]);
+       }
+
+       
//====================================================================================================
+       // isEmptyArray(Object[])
+       
//====================================================================================================
+       @Test
+       void a037_isEmptyArray() {
+               assertTrue(isEmptyArray(null));
+               assertTrue(isEmptyArray(new String[0]));
+               assertFalse(isEmptyArray(new String[]{"a"}));
        }
 
+       
//====================================================================================================
+       // isNotEmptyArray(Object[])
+       
//====================================================================================================
        @Test
-       void a24_m_7pairs() {
-               Map<String, Integer> result = m("a", 1, "b", 2, "c", 3, "d", 4, 
"e", 5, "f", 6, "g", 7);
+       void a038_isNotEmptyArray() {
+               assertFalse(isNotEmptyArray(null));
+               assertFalse(isNotEmptyArray(new String[0]));
+               assertTrue(isNotEmptyArray(new String[]{"a"}));
+       }
 
+       
//====================================================================================================
+       // l(T...)
+       
//====================================================================================================
+       @Test
+       void a039_l() {
+               List<String> result = l("a", "b", "c");
                assertNotNull(result);
-               assertSize(7, result);
-               assertEquals(7, result.get("g"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", 8));
+               assertEquals(3, result.size());
+               assertEquals("a", result.get(0));
+               assertThrows(UnsupportedOperationException.class, () -> 
result.add("d"));
+               
+               assertNull(l((String[])null));
        }
 
+       
//====================================================================================================
+       // last(E[])
+       
//====================================================================================================
        @Test
-       void a25_m_8pairs() {
-               Map<String, Integer> result = m("a", 1, "b", 2, "c", 3, "d", 4, 
"e", 5, "f", 6, "g", 7, "h", 8);
+       void a040_last_array() {
+               String[] arr = {"a", "b", "c"};
+               assertEquals("c", last(arr));
+               String[] nullArr = null;
+               assertNull(last(nullArr));
+               assertNull(last(new String[0]));
+       }
 
-               assertNotNull(result);
-               assertSize(8, result);
-               assertEquals(8, result.get("h"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", 9));
+       
//====================================================================================================
+       // last(List<E>)
+       
//====================================================================================================
+       @Test
+       void a041_last_list() {
+               List<String> list = list("a", "b", "c");
+               assertEquals("c", last(list));
+               List<String> nullList = null;
+               assertNull(last(nullList));
+               assertNull(last(list()));
        }
 
+       
//====================================================================================================
+       // length(Object)
+       
//====================================================================================================
        @Test
-       void a26_m_9pairs() {
-               Map<String, Integer> result = m("a", 1, "b", 2, "c", 3, "d", 4, 
"e", 5, "f", 6, "g", 7, "h", 8, "i", 9);
+       void a042_length() {
+               String[] arr = {"a", "b", "c"};
+               assertEquals(3, length(arr));
+               assertEquals(0, length(null));
+               int[] intArr = {1, 2, 3, 4};
+               assertEquals(4, length(intArr));
+       }
 
+       
//====================================================================================================
+       // list(T...)
+       
//====================================================================================================
+       @Test
+       void a043_list() {
+               List<String> result = list("a", "b", "c");
                assertNotNull(result);
-               assertSize(9, result);
-               assertEquals(9, result.get("i"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", 10));
+               assertTrue(result instanceof ArrayList);
+               assertEquals(3, result.size());
+               assertEquals("a", result.get(0));
+               result.add("d"); // Modifiable
+               assertEquals(4, result.size());
        }
 
+       
//====================================================================================================
+       // listb(Class<E>, Converter...)
+       
//====================================================================================================
        @Test
-       void a27_m_10pairs() {
-               Map<String, Integer> result = m("a", 1, "b", 2, "c", 3, "d", 4, 
"e", 5, "f", 6, "g", 7, "h", 8, "i", 9, "j", 10);
+       void a044_listb() {
+               ListBuilder<String> builder = listb(String.class);
+               assertNotNull(builder);
+               List<String> result = builder.add("a").add("b").build();
+               assertEquals(2, result.size());
+               assertEquals("a", result.get(0));
+               assertEquals("b", result.get(1));
+       }
 
+       
//====================================================================================================
+       // liste()
+       
//====================================================================================================
+       @Test
+       void a045_liste() {
+               List<String> result = liste();
                assertNotNull(result);
-               assertSize(10, result);
-               assertEquals(10, result.get("j"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", 11));
+               assertTrue(result.isEmpty());
+               assertThrows(UnsupportedOperationException.class, () -> 
result.add("a"));
        }
 
        
//====================================================================================================
-       // m() - null handling
+       // liste(Class<T>)
        
//====================================================================================================
        @Test
-       void a28_m_nullKey() {
-               Map<String, Integer> result = m(null, 1);
-
+       void a046_liste_class() {
+               List<String> result = liste(String.class);
                assertNotNull(result);
-               assertSize(1, result);
-               assertEquals(1, result.get(null));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", 2));
+               assertTrue(result.isEmpty());
+               assertThrows(UnsupportedOperationException.class, () -> 
result.add("a"));
        }
 
+       
//====================================================================================================
+       // listn(Class<T>)
+       
//====================================================================================================
        @Test
-       void a29_m_nullValue() {
-               Map<String, Integer> result = m("a", null);
+       void a047_listn() {
+               assertNull(listn(String.class));
+       }
 
+       
//====================================================================================================
+       // listOf(Class<E>, E...)
+       
//====================================================================================================
+       @Test
+       void a048_listOf() {
+               List<String> result = listOf(String.class, "a", "b", "c");
                assertNotNull(result);
-               assertSize(1, result);
-               assertNull(result.get("a"));
-               assertTrue(result.containsKey("a"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", 2));
+               assertEquals(3, result.size());
+               assertEquals("a", result.get(0));
        }
 
+       
//====================================================================================================
+       // listOfSize(int)
+       
//====================================================================================================
        @Test
-       void a30_m_multipleNulls() {
-               Map<String, String> result = m("a", "val1", "b", null, "c", 
"val3", null, "val4");
+       void a049_listOfSize() {
+               ArrayList<String> result = listOfSize(5);
+               assertNotNull(result);
+               assertEquals(0, result.size());
+               result.add("a");
+               assertEquals(1, result.size());
+       }
 
+       
//====================================================================================================
+       // longs(long...)
+       
//====================================================================================================
+       @Test
+       void a050_longs() {
+               long[] result = longs(1L, 2L, 3L);
                assertNotNull(result);
-               assertSize(4, result);
-               assertEquals("val1", result.get("a"));
-               assertNull(result.get("b"));
-               assertEquals("val3", result.get("c"));
-               assertEquals("val4", result.get(null));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", "y"));
+               assertEquals(3, result.length);
+               assertEquals(1L, result[0]);
+               assertEquals(2L, result[1]);
+               assertEquals(3L, result[2]);
        }
 
+       
//====================================================================================================
+       // m() - all overloads
+       
//====================================================================================================
        @Test
-       void a31_m_allNulls_duplicateKeys() {
-               // This should throw because we have duplicate null keys
-               assertThrows(IllegalArgumentException.class, () -> {
-                       m(null, null, null, null);
+       void a051_m() {
+               // Empty
+               Map<String, Integer> empty = m();
+               assertNotNull(empty);
+               assertTrue(empty.isEmpty());
+               assertThrows(UnsupportedOperationException.class, () -> 
empty.put("x", 1));
+               
+               // 1 pair
+               Map<String, Integer> m1 = m("a", 1);
+               assertEquals(1, m1.size());
+               assertEquals(1, m1.get("a"));
+               
+               // 2 pairs
+               Map<String, Integer> m2 = m("a", 1, "b", 2);
+               assertEquals(2, m2.size());
+               assertEquals(1, m2.get("a"));
+               assertEquals(2, m2.get("b"));
+               
+               // 3 pairs
+               Map<String, Integer> m3 = m("a", 1, "b", 2, "c", 3);
+               assertEquals(3, m3.size());
+               
+               // 4 pairs
+               Map<String, Integer> m4 = m("a", 1, "b", 2, "c", 3, "d", 4);
+               assertEquals(4, m4.size());
+               
+               // 5 pairs
+               Map<String, Integer> m5 = m("a", 1, "b", 2, "c", 3, "d", 4, 
"e", 5);
+               assertEquals(5, m5.size());
+               
+               // 6 pairs
+               Map<String, Integer> m6 = m("a", 1, "b", 2, "c", 3, "d", 4, 
"e", 5, "f", 6);
+               assertEquals(6, m6.size());
+               
+               // 7 pairs
+               Map<String, Integer> m7 = m("a", 1, "b", 2, "c", 3, "d", 4, 
"e", 5, "f", 6, "g", 7);
+               assertEquals(7, m7.size());
+               
+               // 8 pairs
+               Map<String, Integer> m8 = m("a", 1, "b", 2, "c", 3, "d", 4, 
"e", 5, "f", 6, "g", 7, "h", 8);
+               assertEquals(8, m8.size());
+               
+               // 9 pairs
+               Map<String, Integer> m9 = m("a", 1, "b", 2, "c", 3, "d", 4, 
"e", 5, "f", 6, "g", 7, "h", 8, "i", 9);
+               assertEquals(9, m9.size());
+               
+               // 10 pairs
+               Map<String, Integer> m10 = m("a", 1, "b", 2, "c", 3, "d", 4, 
"e", 5, "f", 6, "g", 7, "h", 8, "i", 9, "j", 10);
+               assertEquals(10, m10.size());
+               
+               // Null handling
+               Map<String, Integer> nullKey = m(null, 1);
+               assertEquals(1, nullKey.get(null));
+               
+               Map<String, Integer> nullValue = m("a", null);
+               assertNull(nullValue.get("a"));
+               assertTrue(nullValue.containsKey("a"));
+               
+               // Duplicate key detection
+               assertThrowsWithMessage(IllegalArgumentException.class, 
"Duplicate key found: key1", () -> {
+                       m("key1", "value1", "key2", "value2", "key1", "value3");
                });
+               
+               // Insertion order preservation
+               Map<String, Integer> ordered = m("z", 1, "a", 2, "m", 3, "b", 
4);
+               var keys = new ArrayList<>(ordered.keySet());
+               assertEquals(list("z", "a", "m", "b"), keys);
+               
+               // Immutability
+               assertThrows(UnsupportedOperationException.class, () -> 
m1.put("x", 2));
+               assertThrows(UnsupportedOperationException.class, () -> 
m1.remove("a"));
+               assertThrows(UnsupportedOperationException.class, () -> 
m1.clear());
        }
 
+       
//====================================================================================================
+       // map() - all overloads
+       
//====================================================================================================
        @Test
-       void a32_m_singleNullKeyValue() {
-               Map<String, String> result = m(null, null);
+       void a052_map() {
+               // Empty
+               LinkedHashMap<String, Integer> empty = map();
+               assertNotNull(empty);
+               assertTrue(empty.isEmpty());
+               empty.put("x", 1); // Modifiable
+               assertEquals(1, empty.size());
+               
+               // 1 pair
+               LinkedHashMap<String, Integer> m1 = map("a", 1);
+               assertEquals(1, m1.size());
+               assertEquals(1, m1.get("a"));
+               
+               // 2 pairs
+               LinkedHashMap<String, Integer> m2 = map("a", 1, "b", 2);
+               assertEquals(2, m2.size());
+               
+               // 3 pairs
+               LinkedHashMap<String, Integer> m3 = map("a", 1, "b", 2, "c", 3);
+               assertEquals(3, m3.size());
+               
+               // 4 pairs
+               LinkedHashMap<String, Integer> m4 = map("a", 1, "b", 2, "c", 3, 
"d", 4);
+               assertEquals(4, m4.size());
+               var keys = new ArrayList<>(m4.keySet());
+               assertEquals(l("a", "b", "c", "d"), keys);
+               
+               // 5 pairs
+               LinkedHashMap<String, Integer> m5 = map("a", 1, "b", 2, "c", 3, 
"d", 4, "e", 5);
+               assertEquals(5, m5.size());
+               
+               // 6-10 pairs
+               LinkedHashMap<String, Integer> m6 = map("a", 1, "b", 2, "c", 3, 
"d", 4, "e", 5, "f", 6);
+               assertEquals(6, m6.size());
+               
+               LinkedHashMap<String, Integer> m10 = map("a", 1, "b", 2, "c", 
3, "d", 4, "e", 5, "f", 6, "g", 7, "h", 8, "i", 9, "j", 10);
+               assertEquals(10, m10.size());
+               assertEquals(l("a", "b", "c", "d", "e", "f", "g", "h", "i", 
"j"), new ArrayList<>(m10.keySet()));
+               
+               // Null values
+               LinkedHashMap<String, String> nullVals = map("a", "val1", "b", 
null, "c", "val3", "d", null);
+               assertEquals(4, nullVals.size());
+               assertNull(nullVals.get("b"));
+       }
 
-               assertNotNull(result);
-               assertSize(1, result);
-               assertNull(result.get(null));
-               assertTrue(result.containsKey(null));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", "y"));
+       
//====================================================================================================
+       // mapb()
+       
//====================================================================================================
+       @Test
+       void a053_mapb() {
+               MapBuilder<String, Object> builder = mapb();
+               assertNotNull(builder);
+               Map<String, Object> result = builder.add("a", 1).add("b", 
2).build();
+               assertEquals(2, result.size());
+               assertEquals(1, result.get("a"));
+               assertEquals(2, result.get("b"));
        }
 
        
//====================================================================================================
-       // m() - insertion order preservation
+       // mapb(Class<K>, Class<V>, Converter...)
        
//====================================================================================================
        @Test
-       void a33_m_insertionOrder_simpleKeys() {
-               Map<String, Integer> result = m("z", 1, "a", 2, "m", 3, "b", 4);
+       void a054_mapb_class() {
+               MapBuilder<String, Integer> builder = mapb(String.class, 
Integer.class);
+               assertNotNull(builder);
+               Map<String, Integer> result = builder.add("a", 1).build();
+               assertEquals(1, result.size());
+       }
 
+       
//====================================================================================================
+       // mape(Class<K>, Class<V>)
+       
//====================================================================================================
+       @Test
+       void a055_mape() {
+               Map<String, Integer> result = mape(String.class, Integer.class);
                assertNotNull(result);
-               assertSize(4, result);
-
-               // Verify insertion order is preserved
-               var keys = new ArrayList<>(result.keySet());
-               assertEquals(list("z", "a", "m", "b"), keys);
+               assertTrue(result.isEmpty());
+               assertThrows(UnsupportedOperationException.class, () -> 
result.put("a", 1));
        }
 
+       
//====================================================================================================
+       // mapn(Class<K>, Class<V>)
+       
//====================================================================================================
        @Test
-       void a34_m_insertionOrder_withNullKey() {
-               Map<String, Integer> result = m("first", 1, null, 2, "last", 3);
+       void a056_mapn() {
+               assertNull(mapn(String.class, Integer.class));
+       }
 
+       
//====================================================================================================
+       // mapOf(Class<K>, Class<V>)
+       
//====================================================================================================
+       @Test
+       void a057_mapOf() {
+               LinkedHashMap<String, Integer> result = mapOf(String.class, 
Integer.class);
                assertNotNull(result);
-               assertSize(3, result);
+               assertTrue(result.isEmpty());
+               result.put("a", 1); // Modifiable
+               assertEquals(1, result.size());
+       }
 
-               // Verify insertion order is preserved, including null
-               var keys = new ArrayList<>(result.keySet());
-               assertEquals(list("first", null, "last"), keys);
+       
//====================================================================================================
+       // na(Class<T>)
+       
//====================================================================================================
+       @Test
+       void a058_na() {
+               assertNull(na(String.class));
        }
 
+       
//====================================================================================================
+       // prependAll(List<E>, E...)
+       
//====================================================================================================
        @Test
-       void a35_m_insertionOrder_allPairs() {
-               // Test with 10 pairs to ensure order is preserved for larger 
maps
-               Map<Integer, String> result = m(10, "ten", 9, "nine", 8, 
"eight", 7, "seven",
-                                                6, "six", 5, "five", 4, 
"four", 3, "three",
-                                                2, "two", 1, "one");
+       void a059_prependAll() {
+               // Null value creates new list
+               var result1 = prependAll((List<String>)null, "a", "b");
+               assertNotNull(result1);
+               assertEquals(list("a", "b"), result1);
+               
+               // Existing list prepends to it
+               var list = list("x");
+               var result2 = prependAll(list, "a", "b");
+               assertSame(list, result2);
+               assertEquals(list("a", "b", "x"), result2);
+               
+               // Null entries returns original
+               var list2 = list("a", "b");
+               var result3 = prependAll(list2, (String[])null);
+               assertSame(list2, result3);
+       }
 
+       
//====================================================================================================
+       // reverse(E[])
+       
//====================================================================================================
+       @Test
+       void a060_reverse_array() {
+               String[] arr = {"a", "b", "c"};
+               String[] result = reverse(arr);
+               assertSame(arr, result);
+               assertEquals("c", arr[0]);
+               assertEquals("b", arr[1]);
+               assertEquals("a", arr[2]);
+       }
+
+       
//====================================================================================================
+       // reverse(List<E>)
+       
//====================================================================================================
+       @Test
+       void a061_reverse_list() {
+               List<String> list = list("a", "b", "c");
+               List<String> result = reverse(list);
                assertNotNull(result);
-               assertSize(10, result);
+               assertEquals("c", result.get(0));
+               assertEquals("b", result.get(1));
+               assertEquals("a", result.get(2));
+               // View reflects changes - adding to original list adds to end, 
which appears at index 0 in reversed view
+               list.add("d");
+               assertEquals(4, result.size());
+               assertEquals("d", result.get(0)); // New element appears at 
start of reversed view
+               assertEquals("a", result.get(3)); // Original first element now 
at end
+       }
 
-               // Verify insertion order
-               var keys = new ArrayList<>(result.keySet());
-               assertEquals(l(10, 9, 8, 7, 6, 5, 4, 3, 2, 1), keys);
+       
//====================================================================================================
+       // rstream(List<T>)
+       
//====================================================================================================
+       @Test
+       void a062_rstream() {
+               List<String> list = list("a", "b", "c");
+               List<String> result = rstream(list).toList();
+               assertEquals(list("c", "b", "a"), result);
+               
+               assertTrue(rstream(null).toList().isEmpty());
+               assertTrue(rstream(list()).toList().isEmpty());
        }
 
+       
//====================================================================================================
+       // set(T...)
+       
//====================================================================================================
        @Test
-       void a36_m_insertionOrder_entrySet() {
-               Map<String, String> result = m("key1", "val1", "key2", "val2", 
"key3", "val3");
+       void a063_set() {
+               LinkedHashSet<String> result = set("a", "b", "c");
+               assertNotNull(result);
+               assertEquals(3, result.size());
+               assertTrue(result.contains("a"));
+               assertTrue(result.contains("b"));
+               assertTrue(result.contains("c"));
+               result.add("d"); // Modifiable
+               assertEquals(4, result.size());
+       }
 
-               // Verify order in entrySet
-               List<String> orderedKeys = list();
-               for (var entry : result.entrySet()) {
-                       orderedKeys.add(entry.getKey());
-               }
+       
//====================================================================================================
+       // setb(Class<E>, Converter...)
+       
//====================================================================================================
+       @Test
+       void a064_setb() {
+               SetBuilder<String> builder = setb(String.class);
+               assertNotNull(builder);
+               Set<String> result = builder.add("a").add("b").build();
+               assertEquals(2, result.size());
+               assertTrue(result.contains("a"));
+               assertTrue(result.contains("b"));
+       }
 
-               assertEquals(l("key1", "key2", "key3"), orderedKeys);
+       
//====================================================================================================
+       // setOf(Class<E>, E...)
+       
//====================================================================================================
+       @Test
+       void a065_setOf() {
+               LinkedHashSet<String> result = setOf(String.class, "a", "b", 
"c");
+               assertNotNull(result);
+               assertEquals(3, result.size());
+               assertTrue(result.contains("a"));
        }
 
        
//====================================================================================================
-       // m() - duplicate key detection
+       // shorts(int...)
        
//====================================================================================================
        @Test
-       void a37_m_duplicateKey_nonNull() {
-               assertThrowsWithMessage(IllegalArgumentException.class, 
"Duplicate key found: key1", () -> {
-                       m("key1", "value1", "key2", "value2", "key1", "value3");
-               });
+       void a066_shorts() {
+               short[] result = shorts(1, 2, 3);
+               assertNotNull(result);
+               assertEquals(3, result.length);
+               assertEquals(1, result[0]);
+               assertEquals(2, result[1]);
+               assertEquals(3, result[2]);
        }
 
+       
//====================================================================================================
+       // sortedList(Comparator<E>, Collection<E>)
+       
//====================================================================================================
        @Test
-       void a38_m_duplicateKey_nullKeys() {
-               assertThrowsWithMessage(IllegalArgumentException.class, 
"Duplicate key found: null", () -> {
-                       m(null, "value1", "key2", "value2", null, "value3");
-               });
+       void a067_sortedList_comparatorCollection() {
+               List<String> list = list("c", "a", "b");
+               List<String> result = sortedList(Comparator.naturalOrder(), 
list);
+               assertNotNull(result);
+               assertEquals(list("a", "b", "c"), result);
        }
 
+       
//====================================================================================================
+       // sortedList(Comparator<E>, E[])
+       
//====================================================================================================
        @Test
-       void a39_m_duplicateKey_inLargerMap() {
-               assertThrowsWithMessage(IllegalArgumentException.class, 
"Duplicate key found: a", () -> {
-                       m("a", 1, "b", 2, "c", 3, "d", 4, "e", 5, "a", 6);
-               });
+       void a068_sortedList_comparatorArray() {
+               String[] arr = {"c", "a", "b"};
+               List<String> result = sortedList(Comparator.naturalOrder(), 
arr);
+               assertNotNull(result);
+               assertEquals(list("a", "b", "c"), result);
        }
 
+       
//====================================================================================================
+       // sortedList(E...)
+       
//====================================================================================================
        @Test
-       void a40_m_noDuplicates_success() {
-               Map<String, Integer> result = assertDoesNotThrow(() ->
-                       m("key1", 1, null, 2, "key3", 3, "key4", 4)
-               );
+       void a069_sortedList() {
+               List<String> result = sortedList("c", "a", "b");
+               assertNotNull(result);
+               assertEquals(list("a", "b", "c"), result);
+       }
 
-               assertSize(4, result);
-               assertEquals(1, result.get("key1"));
-               assertEquals(2, result.get(null));
-               assertEquals(3, result.get("key3"));
-               assertEquals(4, result.get("key4"));
+       
//====================================================================================================
+       // sortedMap()
+       
//====================================================================================================
+       @Test
+       void a070_sortedMap() {
+               TreeMap<String, Integer> result = sortedMap();
+               assertNotNull(result);
+               assertTrue(result.isEmpty());
+               result.put("a", 1);
+               assertEquals(1, result.size());
        }
 
        
//====================================================================================================
-       // m() - comprehensive integration tests
+       // sortedSet(E...)
        
//====================================================================================================
        @Test
-       void a41_m_nullKey_preservesOrder_immutable() {
-               Map<String, String> result = m("first", "1st", null, 
"null-value", "last", "final");
+       void a071_sortedSet() {
+               TreeSet<String> result = sortedSet("c", "a", "b");
+               assertNotNull(result);
+               assertEquals(3, result.size());
+               assertEquals(list("a", "b", "c"), new ArrayList<>(result));
+               
+               // Empty
+               TreeSet<String> empty = sortedSet();
+               assertNotNull(empty);
+               assertTrue(empty.isEmpty());
+               
+               // Single
+               TreeSet<String> single = sortedSet("a");
+               assertEquals(1, single.size());
+               
+               // Numbers
+               TreeSet<Integer> numbers = sortedSet(3, 1, 2, 5, 4);
+               assertEquals(list(1, 2, 3, 4, 5), new ArrayList<>(numbers));
+       }
 
-               // Check null key works
-               assertEquals("null-value", result.get(null));
+       
//====================================================================================================
+       // stream(T[])
+       
//====================================================================================================
+       @Test
+       void a072_stream() {
+               String[] arr = {"a", "b", "c"};
+               List<String> result = stream(arr).toList();
+               assertEquals(list("a", "b", "c"), result);
+               
+               assertTrue(stream(null).toList().isEmpty());
+       }
 
-               // Check insertion order
-               var keys = new ArrayList<>(result.keySet());
-               assertEquals(list("first", null, "last"), keys);
+       
//====================================================================================================
+       // synced(List<E>)
+       
//====================================================================================================
+       @Test
+       void a073_synced_list() {
+               List<String> list = list("a", "b");
+               List<String> result = synced(list);
+               assertNotNull(result);
+               assertEquals(2, result.size());
+               assertTrue(result.contains("a"));
+               assertTrue(result.contains("b"));
+               assertNull(synced((List<String>)null));
+       }
 
-               // Check immutability
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("new", "value"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.remove("first"));
-               assertThrows(UnsupportedOperationException.class, () -> 
result.clear());
+       
//====================================================================================================
+       // synced(Map<K,V>)
+       
//====================================================================================================
+       @Test
+       void a074_synced_map() {
+               Map<String, Integer> map = map("a", 1);
+               Map<String, Integer> result = synced(map);
+               assertNotNull(result);
+               assertEquals(1, result.size());
+               assertEquals(1, result.get("a"));
+               assertNull(synced((Map<String, Integer>)null));
        }
 
+       
//====================================================================================================
+       // synced(Set<E>)
+       
//====================================================================================================
        @Test
-       void a42_m_complexScenario() {
-               // Test with various types, nulls, and verify all properties
-               Map<Object, Object> result = m(
-                       "string", "value",
-                       null, "null-key",
-                       42, "number",
-                       true, "boolean"
-               );
+       void a075_synced_set() {
+               Set<String> set = set("a", "b");
+               Set<String> result = synced(set);
+               assertNotNull(result);
+               assertEquals(2, result.size());
+               assertTrue(result.contains("a"));
+               assertTrue(result.contains("b"));
+               assertNull(synced((Set<String>)null));
+       }
 
-               // Verify all entries
-               assertSize(4, result);
-               assertEquals("value", result.get("string"));
-               assertEquals("null-key", result.get(null));
-               assertEquals("number", result.get(42));
-               assertEquals("boolean", result.get(true));
+       
//====================================================================================================
+       // toArray(Collection<?>, Class<E>)
+       
//====================================================================================================
+       @Test
+       void a076_toArray() {
+               List<String> list = list("a", "b", "c");
+               Object result = toArray(list, String.class);
+               assertNotNull(result);
+               assertTrue(result instanceof String[]);
+               String[] arr = (String[])result;
+               assertEquals(3, arr.length);
+               assertEquals("a", arr[0]);
+       }
 
-               // Verify order
-               var keys = new ArrayList<>(result.keySet());
-               assertEquals(list("string", null, 42, true), keys);
+       
//====================================================================================================
+       // toList(Collection<E>)
+       
//====================================================================================================
+       @Test
+       void a077_toList_collection() {
+               Collection<String> col = set("a", "b", "c");
+               ArrayList<String> result = toList(col);
+               assertNotNull(result);
+               assertEquals(3, result.size());
+               assertTrue(result.contains("a"));
+       }
 
-               // Verify immutability
-               assertThrows(UnsupportedOperationException.class, () -> 
result.put("x", "y"));
+       
//====================================================================================================
+       // toList(Collection<E>, boolean)
+       
//====================================================================================================
+       @Test
+       void a078_toList_collectionBoolean() {
+               Collection<String> col = list("a", "b");
+               ArrayList<String> result1 = toList(col, false);
+               assertNotNull(result1);
+               assertEquals(2, result1.size());
+               
+               ArrayList<String> result2 = toList(col, true);
+               assertNotNull(result2);
+               assertEquals(2, result2.size());
+               
+               Collection<String> empty = list();
+               assertNull(toList(empty, true));
+               assertNotNull(toList(empty, false));
+               assertNull(toList(null, false));
        }
 
        
//====================================================================================================
-       // addAll(T[], T...) - Array utilities from deprecated ArrayUtils
+       // toList(Object)
        
//====================================================================================================
        @Test
-       void a43_addAll_arrayToArray() {
-               String[] s = {};
+       void a079_toList_object() {
+               // List returns as-is
+               ArrayList<String> arrayList = new ArrayList<>();
+               arrayList.add("a");
+               arrayList.add("b");
+               List<?> result1 = toList((Object)arrayList);
+               assertSame(arrayList, result1);
+               
+               // Set converts to list
+               Set<String> set = set("a", "b", "c");
+               List<?> result2 = toList(set);
+               assertNotNull(result2);
+               assertEquals(3, result2.size());
+               assertTrue(result2.contains("a"));
+               assertTrue(result2.contains("b"));
+               assertTrue(result2.contains("c"));
+               
+               // Array converts to list
+               String[] arr = {"a", "b", "c"};
+               List<?> result3 = toList(arr);
+               assertEquals(3, result3.size());
+               assertEquals("a", result3.get(0));
+       }
 
-               s = addAll(s, "a", "b");
-               assertList(s, "a", "b");
+       
//====================================================================================================
+       // toSet(E[])
+       
//====================================================================================================
+       @Test
+       void a080_toSet() {
+               String[] arr = {"a", "b", "c"};
+               Set<String> result = toSet(arr);
+               assertNotNull(result);
+               assertEquals(3, result.size());
+               assertTrue(result.contains("a"));
+               assertThrows(UnsupportedOperationException.class, () -> 
result.add("d"));
+               
+               assertThrows(IllegalArgumentException.class, () -> 
toSet((String[])null));
+       }
 
-               s = addAll(s, "c");
-               assertList(s, "a", "b", "c");
+       
//====================================================================================================
+       // toSortedSet(Set<E>)
+       
//====================================================================================================
+       @Test
+       void a081_toSortedSet() {
+               LinkedHashSet<String> input = new LinkedHashSet<>(l("c", "a", 
"b"));
+               TreeSet<String> result = toSortedSet(input);
+               assertNotNull(result);
+               assertEquals(l("a", "b", "c"), new ArrayList<>(result));
+               
+               LinkedHashSet<Integer> input2 = new LinkedHashSet<>(l(3, 1, 2));
+               TreeSet<Integer> result2 = toSortedSet(input2);
+               assertEquals(l(1, 2, 3), new ArrayList<>(result2));
+               
+               assertNull(toSortedSet((Set<String>)null));
+       }
 
-               s = addAll(s);
-               assertList(s, "a", "b", "c");
+       
//====================================================================================================
+       // traverse(Object, Consumer<T>)
+       
//====================================================================================================
+       @Test
+       void a082_traverse() {
+               List<String> list = list("a", "b", "c");
+               List<Object> result = new ArrayList<>();
+               traverse(list, result::add);
+               assertEquals(3, result.size());
+               assertTrue(result.contains("a"));
+               assertTrue(result.contains("b"));
+               assertTrue(result.contains("c"));
+       }
 
-               var o = addAll((Object[])null);
-               assertEmpty(o);
+       
//====================================================================================================
+       // toList(Object, Class<E>)
+       
//====================================================================================================
+       @Test
+       void a083_toList_objectClass() {
+               String[] arr = {"a", "b", "c"};
+               List<String> result = toList(arr, String.class);
+               assertNotNull(result);
+               assertEquals(3, result.size());
+               assertEquals("a", result.get(0));
+       }
 
-               s = addAll((String[])null, "a", "b");
-               assertList(s, "a", "b");
+       
//====================================================================================================
+       // toObjectList(Object)
+       
//====================================================================================================
+       @Test
+       void a084_toObjectList() {
+               String[] arr = {"a", "b", "c"};
+               List<Object> result = toObjectList(arr);
+               assertNotNull(result);
+               assertEquals(3, result.size());
+               assertEquals("a", result.get(0));
        }
 
        
//====================================================================================================
-       // toSet(T[]) - Array utilities from deprecated ArrayUtils
+       // toSet(Collection<E>)
        
//====================================================================================================
        @Test
-       void a44_toSet_fromArray() {
-               assertThrows(IllegalArgumentException.class, 
()->toSet((String[])null));
+       void a085_toSet_collection() {
+               Collection<String> col = list("a", "b", "c");
+               Set<String> result = toSet(col);
+               assertNotNull(result);
+               assertEquals(3, result.size());
+               assertTrue(result.contains("a"));
+               assertNull(toSet((Collection<String>)null));
+       }
 
-               var s = a("a");
-               var i = toSet(s).iterator();
-               assertEquals("a", i.next());
+       
//====================================================================================================
+       // toSortedSet(Collection<E>, boolean)
+       
//====================================================================================================
+       @Test
+       void a086_toSortedSet_collectionBoolean() {
+               Collection<String> col = list("c", "a", "b");
+               TreeSet<String> result1 = toSortedSet(col, false);
+               assertNotNull(result1);
+               assertEquals(3, result1.size());
+               
+               Collection<String> empty = list();
+               assertNull(toSortedSet(empty, true));
+               assertNotNull(toSortedSet(empty, false));
+               assertNull(toSortedSet((Collection<String>)null, false));
+       }
 
-               assertThrows(UnsupportedOperationException.class, i::remove);
-               assertThrows(NoSuchElementException.class, i::next);
+       
//====================================================================================================
+       // toStream(Object)
+       
//====================================================================================================
+       @Test
+       void a087_toStream() {
+               String[] arr = {"a", "b", "c"};
+               List<Object> result = toStream(arr).toList();
+               assertEquals(3, result.size());
+               assertEquals("a", result.get(0));
        }
 
        
//====================================================================================================
-       // combine(T[]...) - Array utilities from deprecated ArrayUtils
+       // toStringArray(Collection<?>)
        
//====================================================================================================
        @Test
-       void a45_combine_arrays() {
-               var s1 = a("a");
-               var s2 = a("b");
+       void a088_toStringArray() {
+               Collection<Integer> col = list(1, 2, 3);
+               String[] result = toStringArray(col);
+               assertNotNull(result);
+               assertEquals(3, result.length);
+               assertEquals("1", result[0]);
+               assertEquals("2", result[1]);
+               assertEquals("3", result[2]);
+       }
 
-               assertList(combine(s1, s2), "a", "b");
-               assertList(combine(s1), "a");
-               assertList(combine(s2), "b");
-               assertList(combine(s1,null), "a");
-               assertList(combine(null,s2), "b");
-               assertNull(combine(null,null));
-               assertNull(combine());
+       
//====================================================================================================
+       // u(List<? extends T>)
+       
//====================================================================================================
+       @Test
+       void a089_u_list() {
+               List<String> list = list("a", "b");
+               List<String> result = u(list);
+               assertNotNull(result);
+               assertThrows(UnsupportedOperationException.class, () -> 
result.add("c"));
+               assertNull(u((List<String>)null));
        }
-}
 
+       
//====================================================================================================
+       // u(Map<? extends K,? extends V>)
+       
//====================================================================================================
+       @Test
+       void a090_u_map() {
+               Map<String, Integer> map = map("a", 1);
+               Map<String, Integer> result = u(map);
+               assertNotNull(result);
+               assertThrows(UnsupportedOperationException.class, () -> 
result.put("b", 2));
+               assertNull(u((Map<String, Integer>)null));
+       }
 
+       
//====================================================================================================
+       // u(Set<? extends T>)
+       
//====================================================================================================
+       @Test
+       void a091_u_set() {
+               Set<String> set = set("a", "b");
+               Set<String> result = u(set);
+               assertNotNull(result);
+               assertThrows(UnsupportedOperationException.class, () -> 
result.add("c"));
+               assertNull(u((Set<String>)null));
+       }
+}

Reply via email to