From f94b8d96caf263b7fe19929ae5e3f6c321519ed2 Mon Sep 17 00:00:00 2001 From: Mo Helmy <135069400+BenHelmyBen@users.noreply.github.com> Date: Wed, 24 Apr 2024 18:52:21 +0200 Subject: [PATCH] This commit is related to BAEL-7856 (#16480) This commit aims to add a test class named "LastOccurrenceFinderUnitTest". --- .../LastOccurrenceFinderUnitTest.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 core-java-modules/core-java-string-operations-9/src/test/java/com/baeldung/LastOccurrenceFinder/LastOccurrenceFinderUnitTest.java diff --git a/core-java-modules/core-java-string-operations-9/src/test/java/com/baeldung/LastOccurrenceFinder/LastOccurrenceFinderUnitTest.java b/core-java-modules/core-java-string-operations-9/src/test/java/com/baeldung/LastOccurrenceFinder/LastOccurrenceFinderUnitTest.java new file mode 100644 index 0000000000..1c9fb327b7 --- /dev/null +++ b/core-java-modules/core-java-string-operations-9/src/test/java/com/baeldung/LastOccurrenceFinder/LastOccurrenceFinderUnitTest.java @@ -0,0 +1,43 @@ +package com.baeldung.LastOccurrenceFinder; + +import org.junit.Test; + +import java.util.OptionalInt; +import java.util.stream.IntStream; + +import static org.junit.Assert.assertEquals; + +public class LastOccurrenceFinderUnitTest { + String str = "Welcome to Baeldung"; + char target = 'e'; + int n = 2; + int expectedIndex = 6; + + @Test + public void givenStringAndCharAndN_whenFindingNthLastOccurrence_thenCorrectIndexReturned() { + int count = 0; + int index = -1; + for (int i = str.length() - 1; i >= 0; i--) { + if (str.charAt(i) == target) { + count++; + if (count == n) { + index = i; + break; + } + } + } + assertEquals(expectedIndex, index); + } + + @Test + public void givenStringAndCharAndN_whenFindingNthLastOccurrenceUsingStreams_thenCorrectIndexReturned() { + + OptionalInt result = IntStream.range(0, str.length()) + .map(i -> str.length() - 1 - i) + .filter(i -> str.charAt(i) == target) + .skip(n - 1) + .findFirst(); + int index = result.orElse(-1); + assertEquals(expectedIndex, index); + } +}