Skip to content

Commit

Permalink
Added tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
sabroe committed Apr 24, 2024
1 parent bde7700 commit a7c5bdf
Show file tree
Hide file tree
Showing 9 changed files with 324 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,55 @@ public static boolean isNonEmpty(String text) {
return !isEmpty(text);
}

public static String nonNull(String text,
String defaultText) {
return text!=null?text:defaultText;
/**
* Returns the given text if it is non-{@link null} and otherwise an alternative text.
* @param text Tested text.
* @param alternativeText Alternative text.
* @return Resulting text.
*/
public static String nonNullOrElse(String text,
String alternativeText) {
return text!=null?text:alternativeText;
}

/**
* Returns the given text if it is non-{@link null} and otherwise an alternative text.
* @param text Tested text.
* @param alternativeTextSupplier Supplier of alternative text.
* @return Resulting text.
*/
public static String nonNullOrElse(String text,
Supplier<String> alternativeTextSupplier) {
return text!=null?text:alternativeTextSupplier.get();
}

/**
* Returns the given text if it is non-empty and otherwise an alternative text.
* @param text Tested text.
* @param alternativeText Alternative text.
* @return Resulting text.
*/
public static String nonEmptyOrElse(String text,
String alternativeText) {
return isNonEmpty(text)?text:alternativeText;
}

public static String nonNull(String text,
Supplier<String> defaultTextSupplier) {
return text!=null?text:defaultTextSupplier.get();
/**
* Returns the given text if it is non-empty and otherwise an alternative text.
* @param text Tested text.
* @param alternativeTextSupplier Supplier of alternative text.
* @return Resulting text.
*/
public static String nonEmptyOrElse(String text,
Supplier<String> alternativeTextSupplier) {
return isNonEmpty(text)?text:alternativeTextSupplier.get();
}

/**
* Filters a list of texts to a reduced list containing non-{@code null}, non-empty values.
* @param texts Texts to reduce.
* @return Reduced texts.
*/
public static List<String> distinct(List<String> texts) {
return texts==null?null:texts.stream().map(Strings::trim).filter(Strings::isNonEmpty).distinct().toList();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import lombok.experimental.UtilityClass;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collector;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.yelstream.topp.standard.lang;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;

/**
* Test of {@link Comparables}.
*
* @author Morten Sabroe Mortensen
* @version 1.0
* @since 2024-04-24
*/
@Slf4j
class ComparablesTest {

@Test
void xxx() {

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.yelstream.topp.standard.lang;

import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;

/**
* Test suite for {@code com.yelstream.topp.standard.lang}.
*
* @author Morten Sabroe Mortensen
* @version 1.0
* @since 2024-04-24
*/
@Suite
@SelectClasses({ComparablesTest.class,RunnablesTest.class,ServiceLoadersTest.class,StringsTest.class})
class LangTestSuite {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.yelstream.topp.standard.lang;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;

/**
* Test of {@link Runnables}.
*
* @author Morten Sabroe Mortensen
* @version 1.0
* @since 2024-04-24
*/
@Slf4j
class RunnablesTest {

@Test
void xxx() {

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.yelstream.topp.standard.lang;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;

/**
* Test of {@link ServiceLoaders}.
*
* @author Morten Sabroe Mortensen
* @version 1.0
* @since 2024-04-24
*/
@Slf4j
class ServiceLoadersTest {

@Test
void xxx() {

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
package com.yelstream.topp.standard.lang;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.List;
import java.util.function.Supplier;

/**
* Test of {@link Strings}.
*
* @author Morten Sabroe Mortensen
* @version 1.0
* @since 2024-04-24
*/
@Slf4j
class StringsTest {
/**
* Test of {@link Strings#trim(String)}.
*/
@SuppressWarnings("ConstantValue")
@Test
void trim() {
Assertions.assertNull(Strings.trim(null));
Assertions.assertEquals("abc",Strings.trim("abc"));
Assertions.assertEquals("abc",Strings.trim(" abc "));
}

/**
* Test of {@link Strings#isEmpty(String)}.
*/
@SuppressWarnings("ConstantValue")
@Test
void isEmpty() {
Assertions.assertTrue(Strings.isEmpty(null));
Assertions.assertTrue(Strings.isEmpty(""));
Assertions.assertFalse(Strings.isEmpty(" "));
Assertions.assertFalse(Strings.isEmpty("abc"));
}

/**
* Test of {@link Strings#isNonEmpty(String)}.
*/
@SuppressWarnings("ConstantValue")
@Test
void isNonEmpty() {
Assertions.assertFalse(Strings.isNonEmpty(null));
Assertions.assertFalse(Strings.isNonEmpty(""));
Assertions.assertTrue(Strings.isNonEmpty(" "));
Assertions.assertTrue(Strings.isNonEmpty("abc"));
}

/**
* Test of {@link Strings#nonNullOrElse(String,String)}.
*/
@SuppressWarnings({"ConstantValue","ObviousNullCheck"})
@Test
void nonNullOrElseWithValue() {
Assertions.assertEquals("xyz",Strings.nonNullOrElse(null,"xyz"));
Assertions.assertNull(Strings.nonNullOrElse(null,(String)null));
Assertions.assertEquals("",Strings.nonNullOrElse("","xyz"));
Assertions.assertEquals(" ",Strings.nonNullOrElse(" ","xyz"));
Assertions.assertEquals("abc",Strings.nonNullOrElse("abc","xyz"));
}

/**
* Test of {@link Strings#nonNullOrElse(String,Supplier)}.
*/
@Test
void nonNullOrElseWithSupplier() {
Assertions.assertEquals("xyz",Strings.nonNullOrElse(null,()->"xyz"));
Assertions.assertNull(Strings.nonNullOrElse(null,()->null));
Assertions.assertEquals("",Strings.nonNullOrElse("",()->"xyz"));
Assertions.assertEquals(" ",Strings.nonNullOrElse(" ",()->"xyz"));
Assertions.assertEquals("abc",Strings.nonNullOrElse("abc",()->"xyz"));
}


/**
* Test of {@link Strings#nonEmptyOrElse(String,String)}.
*/
@Test
void nonEmptyOrElseWithValue() {
Assertions.assertEquals("xyz",Strings.nonEmptyOrElse(null,"xyz"));
Assertions.assertNull(Strings.nonEmptyOrElse(null,(String)null));
Assertions.assertEquals("xyz",Strings.nonEmptyOrElse("","xyz"));
Assertions.assertEquals(" ",Strings.nonEmptyOrElse(" ","xyz"));
Assertions.assertEquals("abc",Strings.nonEmptyOrElse("abc","xyz"));
}

/**
* Test of {@link Strings#nonEmptyOrElse(String,Supplier)}.
*/
@Test
void nonEmptyOrElseWithSupplier() {
Assertions.assertEquals("xyz",Strings.nonEmptyOrElse(null,()->"xyz"));
Assertions.assertNull(Strings.nonEmptyOrElse(null,()->null));
Assertions.assertEquals("xyz",Strings.nonEmptyOrElse("",()->"xyz"));
Assertions.assertEquals(" ",Strings.nonEmptyOrElse(" ",()->"xyz"));
Assertions.assertEquals("abc",Strings.nonEmptyOrElse("abc",()->"xyz"));
}

/**
* Test of {@link Strings#distinct(List)}.
*/
@SuppressWarnings("ArraysAsListWithZeroOrOneArgument")
@Test
void distinct() {
Assertions.assertNull(Strings.distinct(null));
Assertions.assertEquals(List.of(),Strings.distinct(Arrays.asList(null,null,"",null," ")));
Assertions.assertEquals(Arrays.asList("abc"),Strings.distinct(Arrays.asList(null,null,"abc",null)));
Assertions.assertEquals(Arrays.asList("abc","xyz"),Strings.distinct(Arrays.asList("abc"," ","xyz")));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.yelstream.topp.standard.util.function;

import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;

/**
* Test suite for {@code com.yelstream.topp.standard.util.function}.
*
* @author Morten Sabroe Mortensen
* @version 1.0
* @since 2024-04-24
*/
@Suite
@SelectClasses({SuppliersTest.class})
class StreamTestSuite {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package com.yelstream.topp.standard.util.function;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Supplier;

/**
* Test of {@link Suppliers}.
*
* @author Morten Sabroe Mortensen
* @version 1.0
* @since 2024-04-24
*/
@Slf4j
class SuppliersTest {
/**
* Test of {@link Suppliers#fix(Object)}.
*/
@Test
void fixWithValue() {
Supplier<Integer> supplier=Suppliers.fix(117);

Assertions.assertEquals(117,supplier.get()); //First invocation
Assertions.assertEquals(117,supplier.get()); //Second invocation
Assertions.assertEquals(117,supplier.get()); //Third invocation
}

/**
* Test of {@link Suppliers#fix(Supplier)}.
*/
@Test
void fix() {
Supplier<Integer> source=()->117;
Supplier<Integer> supplier=Suppliers.fix(source);

Assertions.assertEquals(117,supplier.get()); //First invocation
Assertions.assertEquals(117,supplier.get()); //Second invocation
Assertions.assertEquals(117,supplier.get()); //Third invocation
}

/**
* Test of {@link Suppliers#fixInAdvance(Supplier)}.
*/
@Test
void fixInAdvance() {
Supplier<Integer> source=()->117;
Supplier<Integer> supplier=Suppliers.fixInAdvance(source);

Assertions.assertEquals(117,supplier.get()); //First invocation
Assertions.assertEquals(117,supplier.get()); //Second invocation
Assertions.assertEquals(117,supplier.get()); //Third invocation
}

/**
* Test of {@link Suppliers#fixOnDemand(Supplier)}.
*/
@Test
void fixOnDemand() {
AtomicInteger value=new AtomicInteger(0); //No value set ... yet!
Supplier<Integer> source=value::get;
Supplier<Integer> supplier=Suppliers.fixOnDemand(source); //If anything is executed and read here then it is not 117!
value.set(117); //Now do set the number expected!

Assertions.assertEquals(117,supplier.get()); //First invocation
Assertions.assertEquals(117,supplier.get()); //Second invocation
Assertions.assertEquals(117,supplier.get()); //Third invocation
}
}

0 comments on commit a7c5bdf

Please sign in to comment.