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

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/ISIS-1846_internal_utils by 
this push:
     new 4a90358  ISIS-1846 test cases added for new utility classes
4a90358 is described below

commit 4a90358d4d4147b69a63d750e64a8769d18c9cc4
Author: Andi Huber <ahu...@apache.org>
AuthorDate: Mon Jan 22 19:30:00 2018 +0100

    ISIS-1846 test cases added for new utility classes
---
 .../isis/applib/internal/base/_NullSafe.java       |   2 +-
 .../apache/isis/applib/internal/base/_Strings.java |  11 +-
 .../isis/applib/internal/base/NullSafeTest.java    | 116 ++++++++++++
 .../isis/applib/internal/base/StringsTest.java     | 207 +++++++++++++++++++++
 .../applib/internal/compare/ComparatorsTest.java   | 158 ++++++++++++++++
 5 files changed, 488 insertions(+), 6 deletions(-)

diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_NullSafe.java 
b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_NullSafe.java
index a51c9ed..985c19b 100644
--- 
a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_NullSafe.java
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_NullSafe.java
@@ -100,7 +100,7 @@ public final class _NullSafe {
         * @return whether {@code x} is null.
         */
        public static boolean isAbsent(Object x) {
-               return x!=null;
+               return x==null;
        }
        
        // -- EQUALS/COMPARE
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings.java 
b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings.java
index 6c43230..ae4ad23 100644
--- 
a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings.java
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings.java
@@ -108,7 +108,8 @@ public final class _Strings {
        // -- SPLITTING
        
        /**
-        * Splits the {@code input} into chunks separated by {@code separator}
+        * Splits the {@code input} into chunks separated by {@code separator}, 
+        * then puts all non-empty chunks on the stream.
         * @param input
         * @param separator
         * @return empty stream if {@code input} is null
@@ -122,7 +123,8 @@ public final class _Strings {
                if(!input.contains(separator))
                        return Stream.of(input);
                
-               return Stream.of(input.split(Pattern.quote(separator)));
+               return Stream.of(input.split(Pattern.quote(separator)))
+                               .filter(_Strings::isNotEmpty);
        }
     
     // -- REPLACEMENT OPERATORS
@@ -152,6 +154,7 @@ public final class _Strings {
        private final UnaryOperator<String> operator;
                
                private StringOperator(UnaryOperator<String> operator) {
+                       Objects.requireNonNull(operator);
                        this.operator = operator;
                }
 
@@ -160,8 +163,6 @@ public final class _Strings {
                }
                
                public StringOperator andThen(UnaryOperator<String> andThen) {
-                       if(operator==null)
-                               return new StringOperator(andThen::apply);
                        return new 
StringOperator(s->andThen.apply(operator.apply(s)));
                }
        
@@ -172,7 +173,7 @@ public final class _Strings {
      * @return
      */
     public static StringOperator operator() {
-               return new StringOperator(null);
+               return new StringOperator(UnaryOperator.identity());
     }
     
     // -- SPECIAL COMPOSITES 
diff --git 
a/core/applib/src/test/java/org/apache/isis/applib/internal/base/NullSafeTest.java
 
b/core/applib/src/test/java/org/apache/isis/applib/internal/base/NullSafeTest.java
new file mode 100644
index 0000000..2ff8422
--- /dev/null
+++ 
b/core/applib/src/test/java/org/apache/isis/applib/internal/base/NullSafeTest.java
@@ -0,0 +1,116 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.internal.base;
+
+import static org.hamcrest.CoreMatchers.is;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class NullSafeTest {
+
+       @Test
+       public void isEmptyString() throws Exception {
+               Assert.assertThat(_NullSafe.isEmpty((String)null), is(true));
+               Assert.assertThat(_NullSafe.isEmpty(""), is(true));
+               Assert.assertThat(_NullSafe.isEmpty(" 12 aBc"), is(false));
+       }
+       
+       @Test
+       public void isEmptyCollection() throws Exception {
+               Assert.assertThat(_NullSafe.isEmpty((Collection<?>)null), 
is(true));
+               Assert.assertThat(_NullSafe.isEmpty(Collections.emptyList()), 
is(true));
+               Assert.assertThat(_NullSafe.isEmpty(Arrays.asList(new String[] 
{"foo", "bar"})), is(false));
+       }
+       
+       @Test
+       public void absence() throws Exception {
+               Assert.assertThat(_NullSafe.isAbsent(null), is(true));
+               Assert.assertThat(_NullSafe.isAbsent(""), is(false));
+       }
+       
+       @Test
+       public void presence() throws Exception {
+               Assert.assertThat(_NullSafe.isPresent(null), is(false));
+               Assert.assertThat(_NullSafe.isPresent(""), is(true));
+       }
+       
+       
+       @Test
+       public void emptyStreamWithArray() throws Exception {
+               
+               Assert.assertNotNull(_NullSafe.stream((String[])null));
+               
+               Assert.assertNotNull(_NullSafe.stream(_Strings.emptyArray));
+               Assert.assertEquals(0L, 
_NullSafe.stream(_Strings.emptyArray).count());
+       }
+       
+       @Test
+       public void streamWithArray() throws Exception {
+               Assert.assertThat(
+                               _NullSafe.stream(new String[] {"foo", "bar"})
+                               .collect(Collectors.joining("|")),
+                               is("foo|bar"));
+       }
+       
+       @Test
+       public void emptyStreamWithCollection() throws Exception {
+               
+               Assert.assertNotNull(_NullSafe.stream((List<?>)null));
+               
+               
Assert.assertNotNull(_NullSafe.stream(Arrays.asList(_Strings.emptyArray)));
+               Assert.assertEquals(0L, 
_NullSafe.stream(Arrays.asList(_Strings.emptyArray)).count());
+       }
+       
+       @Test
+       public void streamWithCollection() throws Exception {
+               Assert.assertThat(
+                               _NullSafe.stream(Arrays.asList(new String[] 
{"foo", "bar"}))
+                               .collect(Collectors.joining("|")),
+                               is("foo|bar"));
+       }
+       
+       @Test
+       public void emptyStreamWithIterator() throws Exception {
+               
+               Assert.assertNotNull(_NullSafe.stream((Iterator<?>)null));
+               
+               
Assert.assertNotNull(_NullSafe.stream(Arrays.asList(_Strings.emptyArray)).iterator());
+               Assert.assertEquals(0L, 
_NullSafe.stream(Arrays.asList(_Strings.emptyArray).iterator()).count());
+       }
+       
+       @Test
+       public void streamWithIterator() throws Exception {
+               Assert.assertThat(
+                               _NullSafe.stream(Arrays.asList(new String[] 
{"foo", "bar"}).iterator())
+                               .collect(Collectors.joining("|")),
+                               is("foo|bar"));
+       }
+
+       
+       
+}
diff --git 
a/core/applib/src/test/java/org/apache/isis/applib/internal/base/StringsTest.java
 
b/core/applib/src/test/java/org/apache/isis/applib/internal/base/StringsTest.java
new file mode 100644
index 0000000..6765de9
--- /dev/null
+++ 
b/core/applib/src/test/java/org/apache/isis/applib/internal/base/StringsTest.java
@@ -0,0 +1,207 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.internal.base;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+
+import java.util.stream.Collectors;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class StringsTest {
+       
+       @Test
+       public void isEmpty() throws Exception {
+               Assert.assertThat(_Strings.isEmpty(" 12 aBc"), is(false));
+               Assert.assertThat(_Strings.isEmpty(""), is(true));
+               Assert.assertThat(_Strings.isEmpty(null), is(true));
+       }
+
+       @Test
+       public void isNotEmpty() throws Exception {
+               Assert.assertThat(_Strings.isNotEmpty(" 12 aBc"), is(true));
+               Assert.assertThat(_Strings.isNotEmpty(""), is(false));
+               Assert.assertThat(_Strings.isNotEmpty(null), is(false));
+       }
+       
+       
+       @Test
+       public void lowerWithNull() throws Exception {
+               Assert.assertThat(
+                               _Strings.lower(null), 
+                               nullValue());
+       }
+       
+       @Test
+       public void lowerMixed() throws Exception {
+               Assert.assertThat(
+                               _Strings.lower("12aBc"), 
+                               is("12abc"));
+       }
+       
+       
+       @Test
+       public void upperWithNull() throws Exception {
+               Assert.assertThat(
+                               _Strings.upper(null), 
+                               nullValue());
+       }
+       
+       @Test
+       public void upperMixed() throws Exception {
+               Assert.assertThat(
+                               _Strings.upper("12aBc"), 
+                               is("12ABC"));
+       }
+       
+       @Test
+       public void trimWithNull() throws Exception {
+               Assert.assertThat(
+                               _Strings.trim(null), 
+                               nullValue());
+       }
+       
+       @Test
+       public void trimMixed() throws Exception {
+               Assert.assertThat(
+                               _Strings.trim(" 12 aBc"), 
+                               is("12 aBc"));
+       }
+       
+       @Test
+       public void splitThenStreamWithNull() throws Exception {
+               Assert.assertThat(
+                               _Strings.splitThenStream(null, "$")
+                               .collect(Collectors.joining("|")),
+                               is(""));
+       }
+       
+       @Test
+       public void splitThenStreamSingle() throws Exception {
+               Assert.assertThat(
+                               _Strings.splitThenStream(" 12 aBc ", "$")
+                               .collect(Collectors.joining("|")),
+                               is(" 12 aBc "));
+       }
+       
+       @Test
+       public void splitThenStreamMultipleWithSeparatorAtBegin() throws 
Exception {
+               Assert.assertThat(
+                               _Strings.splitThenStream("$ 1$2 a$Bc ", "$")
+                               .collect(Collectors.joining("|")),
+                               is(" 1|2 a|Bc "));
+       }
+       
+       @Test
+       public void splitThenStreamMultipleWithSeparatorAtEnd() throws 
Exception {
+               Assert.assertThat(
+                               _Strings.splitThenStream(" 1$2 a$Bc $", "$")
+                               .collect(Collectors.joining("|")),
+                               is(" 1|2 a|Bc "));
+       }
+       
+       @Test
+       public void condenseWhitespacesWithNull() throws Exception {
+               Assert.assertThat(
+                               _Strings.condenseWhitespaces(null,"|"), 
+                               nullValue());
+       }
+       
+       @Test
+       public void condenseWhitespaces() throws Exception {
+               Assert.assertThat(
+                               _Strings.condenseWhitespaces("  12 aBc","|"), 
+                               is("|12|aBc"));
+       }
+       
+       // -- OPERATOR COMPOSITION
+       
+       @Test
+       public void composeIdentityWithNull() throws Exception {
+               Assert.assertThat(
+                               _Strings.operator().apply(null), 
+                               nullValue());
+       }
+       
+       @Test
+       public void composeIdentity() throws Exception {
+               Assert.assertThat(
+                               _Strings.operator().apply(" 12 aBc"), 
+                               is(" 12 aBc"));
+       }
+       
+       @Test
+       public void compose2WithNull() throws Exception {
+               Assert.assertThat(
+                               _Strings.operator()
+                               .andThen(_Strings::lower)
+                               .apply(null), 
+                               nullValue());
+       }
+       
+       @Test
+       public void compose2() throws Exception {
+               Assert.assertThat(
+                               _Strings.operator()
+                               .andThen(_Strings::lower)
+                               .apply(" 12 aBc"), 
+                               is(" 12 abc"));
+       }
+       
+       @Test
+       public void composeOperatorSequency_LastShouldWin() throws Exception {
+               Assert.assertThat(
+                               _Strings.operator()
+                               .andThen(_Strings::lower)
+                               .andThen(_Strings::upper)
+                               .apply(" 12 aBc"), 
+                               is(" 12 ABC"));
+       }
+       
+       // -- SPECIAL COMPOSITES
+       
+       @Test
+       public void asLowerDashed() throws Exception {
+               Assert.assertThat(
+                               _Strings.asLowerDashed
+                               .apply(" 12    aBc"), 
+                               is("-12-abc"));
+       }
+       
+       @Test
+       public void asNormalized() throws Exception {
+               Assert.assertThat(
+                               _Strings.asNormalized
+                               .apply(" 12 a B         c"), 
+                               is(" 12 a B c"));
+       }
+       
+       @Test
+       public void asNaturalName2() throws Exception {
+               Assert.assertThat(
+                               _Strings.asNaturalName2
+                               .apply("NextAvailableDate"), 
+                               is("Next Available Date"));
+       }
+       
+       
+}
diff --git 
a/core/applib/src/test/java/org/apache/isis/applib/internal/compare/ComparatorsTest.java
 
b/core/applib/src/test/java/org/apache/isis/applib/internal/compare/ComparatorsTest.java
new file mode 100644
index 0000000..e29f771
--- /dev/null
+++ 
b/core/applib/src/test/java/org/apache/isis/applib/internal/compare/ComparatorsTest.java
@@ -0,0 +1,158 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.internal.compare;
+
+import static org.hamcrest.CoreMatchers.is;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Lists;
+
+public class ComparatorsTest {
+       
+       @Rule
+       public ExpectedException expectedException = ExpectedException.none();
+
+       @Test
+       public void nullArgumentLeftAndRigth() throws Exception {
+               Assert.assertThat(
+                               _Comparators.deweyOrderCompare(null, null), 
+                               is(0));
+       }
+       
+       @Test
+       public void nullArgumentLeft() throws Exception {
+               Assert.assertThat(
+                               _Comparators.deweyOrderCompare(null, "any"), 
+                               is(1));
+       }
+       
+       @Test
+       public void nullArgumentRight() throws Exception {
+               Assert.assertThat(
+                               _Comparators.deweyOrderCompare("any", null), 
+                               is(-1));
+       }
+       
+       @Test
+       public void inOrderMixed() throws Exception {
+               assertThatSorting(
+                               ofS("1", "a"),
+                               ofL("1", "a")
+                               );
+       }
+       
+       @Test
+       public void notInOrderMixed() throws Exception {
+               assertThatSorting(
+                               ofS("b", "1"),
+                               ofL("1", "b")
+                               );
+       }
+       
+       
+       @Test
+       public void emptySet() throws Exception {
+               assertThatSorting(
+                               ofS(),
+                               ofL());
+       }
+
+       @Test
+       public void singleElement() throws Exception {
+               assertThatSorting(
+                               ofS("1"),
+                               ofL("1")
+                               );
+       }
+
+       @Test
+       public void inOrder() throws Exception {
+               assertThatSorting(
+                               ofS("1", "2"),
+                               ofL("1", "2")
+                               );
+       }
+
+       @Test
+       public void notInOrder() throws Exception {
+               assertThatSorting(
+                               ofS("2", "1"),
+                               ofL("1", "2")
+                               );
+       }
+
+       @Test
+       public void notInOrderDepth2() throws Exception {
+               assertThatSorting(
+                               ofS("1.2", "1.1"),
+                               ofL("1.1", "1.2")
+                               );
+       }
+
+       @Test
+       public void differentDepths() throws Exception {
+               assertThatSorting(
+                               ofS("2", "1.3", "1.2", "1.2.2", "1.2.1", "1.1"),
+                               ofL("1.1", "1.2", "1.2.1", "1.2.2", "1.3", "2")
+                               );
+       }
+
+       @Test
+       public void mismatchedDepth3() throws Exception {
+               assertThatSorting(
+                               ofS("1.2.2", "1.2.1", "1.1"),
+                               ofL("1.1", "1.2.1", "1.2.2")
+                               );
+       }
+
+       @Test
+       public void X() throws Exception {
+               assertThatSorting(
+                               ofS("45.1", "10.10"),
+                               ofL("10.10", "45.1")
+                               );
+       }
+
+       private static Collection<String> ofS(String... str) {
+               return Arrays.asList(str);
+       }
+
+       private static List<String> ofL(String... str) {
+               return Lists.newArrayList(ofS(str));
+       }
+
+       private static void assertThatSorting(Collection<String> input, 
List<String> expected) {
+               final SortedSet<String> treeSet = new 
TreeSet<String>(_Comparators.deweyOrderComparator);
+               treeSet.addAll(input);
+               final List<String> strings = 
Arrays.asList(Iterators.toArray(treeSet.iterator(), String.class));
+               Assert.assertThat(strings, is(expected));
+       }
+}

-- 
To stop receiving notification emails like this one, please contact
ahu...@apache.org.

Reply via email to