From e9ce6f77419321281eee599357c6762de123f85a Mon Sep 17 00:00:00 2001 From: Yadukrishnan Date: Wed, 21 Feb 2024 18:24:36 +0100 Subject: [PATCH 1/4] Added code sample and test for getting initials for a name --- .../initials/GetInitialsFromNameUnitTest.java | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java diff --git a/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java b/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java new file mode 100644 index 0000000000..19bfe23280 --- /dev/null +++ b/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java @@ -0,0 +1,100 @@ +package com.baeldung.initials; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +import java.util.Arrays; +import java.util.StringTokenizer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class GetInitialsFromNameUnitTest { + + private InitialFinder initialFinder = new InitialFinder(); + + @ParameterizedTest + @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "1test 2test, ''"}) + public void getInitialFromName_usingLoop(String input, String expected) { + String initial = initialFinder.getInitialUsingLoop(input); + assertEquals(expected, initial); + } + + @ParameterizedTest + @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "1test 2test, ''"}) + public void getInitialFromName_usingStringTokenizer(String input, String expected) { + String initial = initialFinder.getInitialUsingStringTokenizer(input); + assertEquals(expected, initial); + } + + @ParameterizedTest + @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "1test 2test, ''"}) + public void getInitialFromName_usingRegex(String input, String expected) { + String initial = initialFinder.getInitialUsingRegex(input); + assertEquals(expected, initial); + } + + @ParameterizedTest + @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "1test 2test, ''"}) + public void getInitialFromName_usingStreamsAPI(String input, String expected) { + String initial = initialFinder.getInitialUsingStreamsAPI(input); + assertEquals(expected, initial); + } +} + +class InitialFinder { + public String getInitialUsingLoop(String name) { + if (name == null || name.isEmpty()) { + return ""; + } + String[] parts = name.split("\\s+"); + StringBuilder initials = new StringBuilder(); + for (String part : parts) { + if (part.matches("[a-zA-Z].*")) { + initials.append(part.charAt(0)); + } + } + return initials.toString().toUpperCase(); + } + + public String getInitialUsingStringTokenizer(String name) { + if (name == null || name.isEmpty()) { + return ""; + } + StringTokenizer tokenizer = new StringTokenizer(name); + StringBuilder initials = new StringBuilder(); + while (tokenizer.hasMoreTokens()) { + String part = tokenizer.nextToken(); + if (part.matches("[a-zA-Z].*")) { + initials.append(part.charAt(0)); + } + } + return initials.toString().toUpperCase(); + } + + public String getInitialUsingRegex(String name) { + if (name == null || name.isEmpty()) { + return ""; + } + Pattern pattern = Pattern.compile("\\b[a-zA-Z]"); + Matcher matcher = pattern.matcher(name); + StringBuilder initials = new StringBuilder(); + while (matcher.find()) { + initials.append(matcher.group()); + } + return initials.toString().toUpperCase(); + } + + public String getInitialUsingStreamsAPI(String name) { + if (name == null || name.isEmpty()) { + return ""; + } + return Arrays.stream(name.split("\\s+")) + .filter(part -> part.matches("[a-zA-Z].*")) + .map(part -> part.substring(0, 1)) + .collect(Collectors.joining()) + .toUpperCase(); + } +} \ No newline at end of file From 4414eed69ac926749bece501c1b65175b520cbd9 Mon Sep 17 00:00:00 2001 From: Yadukrishnan Date: Wed, 21 Feb 2024 20:52:37 +0100 Subject: [PATCH 2/4] changed methods to static methods --- .../initials/GetInitialsFromNameUnitTest.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java b/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java index 19bfe23280..a67305e33d 100644 --- a/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java +++ b/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java @@ -9,43 +9,42 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; +import static com.baeldung.initials.InitialFinder.*; import static org.junit.jupiter.api.Assertions.assertEquals; public class GetInitialsFromNameUnitTest { - private InitialFinder initialFinder = new InitialFinder(); - @ParameterizedTest @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "1test 2test, ''"}) public void getInitialFromName_usingLoop(String input, String expected) { - String initial = initialFinder.getInitialUsingLoop(input); + String initial = getInitialUsingLoop(input); assertEquals(expected, initial); } @ParameterizedTest @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "1test 2test, ''"}) public void getInitialFromName_usingStringTokenizer(String input, String expected) { - String initial = initialFinder.getInitialUsingStringTokenizer(input); + String initial = getInitialUsingStringTokenizer(input); assertEquals(expected, initial); } @ParameterizedTest @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "1test 2test, ''"}) public void getInitialFromName_usingRegex(String input, String expected) { - String initial = initialFinder.getInitialUsingRegex(input); + String initial = getInitialUsingRegex(input); assertEquals(expected, initial); } @ParameterizedTest @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "1test 2test, ''"}) public void getInitialFromName_usingStreamsAPI(String input, String expected) { - String initial = initialFinder.getInitialUsingStreamsAPI(input); + String initial = getInitialUsingStreamsAPI(input); assertEquals(expected, initial); } } class InitialFinder { - public String getInitialUsingLoop(String name) { + public static String getInitialUsingLoop(String name) { if (name == null || name.isEmpty()) { return ""; } @@ -59,7 +58,7 @@ class InitialFinder { return initials.toString().toUpperCase(); } - public String getInitialUsingStringTokenizer(String name) { + public static String getInitialUsingStringTokenizer(String name) { if (name == null || name.isEmpty()) { return ""; } @@ -74,7 +73,7 @@ class InitialFinder { return initials.toString().toUpperCase(); } - public String getInitialUsingRegex(String name) { + public static String getInitialUsingRegex(String name) { if (name == null || name.isEmpty()) { return ""; } @@ -87,7 +86,7 @@ class InitialFinder { return initials.toString().toUpperCase(); } - public String getInitialUsingStreamsAPI(String name) { + public static String getInitialUsingStreamsAPI(String name) { if (name == null || name.isEmpty()) { return ""; } From 9b0681f0cfbbdd4242a8bcd794307b0d1d23244e Mon Sep 17 00:00:00 2001 From: Yadukrishnan Date: Sun, 25 Feb 2024 09:49:02 +0100 Subject: [PATCH 3/4] added more test cases --- .../baeldung/initials/GetInitialsFromNameUnitTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java b/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java index a67305e33d..1998a1d1ac 100644 --- a/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java +++ b/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java @@ -15,28 +15,28 @@ import static org.junit.jupiter.api.Assertions.assertEquals; public class GetInitialsFromNameUnitTest { @ParameterizedTest - @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "1test 2test, ''"}) + @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "123,''", "123 234A, ''", "1test 2test, ''"}) public void getInitialFromName_usingLoop(String input, String expected) { String initial = getInitialUsingLoop(input); assertEquals(expected, initial); } @ParameterizedTest - @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "1test 2test, ''"}) + @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "123,''", "123 234A, ''", "1test 2test, ''"}) public void getInitialFromName_usingStringTokenizer(String input, String expected) { String initial = getInitialUsingStringTokenizer(input); assertEquals(expected, initial); } @ParameterizedTest - @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "1test 2test, ''"}) + @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "123,''", "123 234A, ''", "1test 2test, ''"}) public void getInitialFromName_usingRegex(String input, String expected) { String initial = getInitialUsingRegex(input); assertEquals(expected, initial); } @ParameterizedTest - @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "1test 2test, ''"}) + @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "123,''", "123 234A, ''", "1test 2test, ''"}) public void getInitialFromName_usingStreamsAPI(String input, String expected) { String initial = getInitialUsingStreamsAPI(input); assertEquals(expected, initial); From 968fb13fcd6c29153de4980b0a5bd2375fb074f0 Mon Sep 17 00:00:00 2001 From: Yadukrishnan Date: Sun, 25 Feb 2024 09:49:58 +0100 Subject: [PATCH 4/4] added more test cases --- .../baeldung/initials/GetInitialsFromNameUnitTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java b/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java index 1998a1d1ac..d2db930e9c 100644 --- a/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java +++ b/core-java-modules/core-java-string-operations-8/src/test/java/com/baeldung/initials/GetInitialsFromNameUnitTest.java @@ -15,28 +15,28 @@ import static org.junit.jupiter.api.Assertions.assertEquals; public class GetInitialsFromNameUnitTest { @ParameterizedTest - @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "123,''", "123 234A, ''", "1test 2test, ''"}) + @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "123,''", "123 234A,''", "1test 2test, ''"}) public void getInitialFromName_usingLoop(String input, String expected) { String initial = getInitialUsingLoop(input); assertEquals(expected, initial); } @ParameterizedTest - @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "123,''", "123 234A, ''", "1test 2test, ''"}) + @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "123,''", "123 234A,''", "1test 2test, ''"}) public void getInitialFromName_usingStringTokenizer(String input, String expected) { String initial = getInitialUsingStringTokenizer(input); assertEquals(expected, initial); } @ParameterizedTest - @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "123,''", "123 234A, ''", "1test 2test, ''"}) + @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "123,''", "123 234A,''", "1test 2test, ''"}) public void getInitialFromName_usingRegex(String input, String expected) { String initial = getInitialUsingRegex(input); assertEquals(expected, initial); } @ParameterizedTest - @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "123,''", "123 234A, ''", "1test 2test, ''"}) + @CsvSource({"John F Kennedy,JFK", ",''", "'',''", "Not Correct 88text,NC", "michael jackson,MJ", "123,''", "123 234A,''", "1test 2test, ''"}) public void getInitialFromName_usingStreamsAPI(String input, String expected) { String initial = getInitialUsingStreamsAPI(input); assertEquals(expected, initial);