diff --git a/src/main/java/com/leetcode/arrays/MergeIntervalsTestCase.java b/src/main/java/com/leetcode/arrays/MergeIntervalsTestCase.java new file mode 100644 index 00000000..52b75845 --- /dev/null +++ b/src/main/java/com/leetcode/arrays/MergeIntervalsTestCase.java @@ -0,0 +1,85 @@ +package com.leetcode.arrays; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +/** +* +* @author: quangrandz +* @since: 2023-6-30 +*/ + +public class MergeIntervalsTestCase { + + @BeforeAll + public static void beforeAll() { + System.out.println("BEFORE ALL"); + } + + @AfterAll + public static void afterAll() { + System.out.println("AFTER ALL"); + } + + @BeforeEach + public void beforeEach() { + System.out.println("BEFORE EACH"); + } + + @AfterEach + public void afterEach() { + System.out.println("AFTER EACH"); + } + + // Test case 1: Non-overlapping intervals + @Test + public void testMerge_NonOverlapping() { + int[][] intervals = {{1, 3}, {4, 6}, {7, 9}}; + int[][] expected = {{1, 3}, {4, 6}, {7, 9}}; + Assertions.assertArrayEquals(expected, MergeIntervals.merge(intervals)); + } + + // Test case 2: Overlapping intervals + @Test + public void testMerge_Overlapping() { + int[][] intervals = {{1, 4}, {2, 5}, {6, 8}}; + int[][] expected = {{1, 5}, {6, 8}}; + Assertions.assertArrayEquals(expected, MergeIntervals.merge(intervals)); + } + + // Test case 3: Empty input + @Test + public void testMerge_EmptyInput() { + int[][] intervals = {}; + int[][] expected = {}; + Assertions.assertArrayEquals(expected, MergeIntervals.merge(intervals)); + } + + // Test case 4: Single interval + @Test + public void testMerge_SingleInterval() { + int[][] intervals = {{2, 6}}; + int[][] expected = {{2, 6}}; + Assertions.assertArrayEquals(expected, MergeIntervals.merge(intervals)); + } + + // Test case 5: Overlapping intervals with different orders + @Test + public void testMerge_DifferentOrders() { + int[][] intervals = {{9, 12}, {1, 4}, {6, 8}, {2, 5}}; + int[][] expected = {{1, 5}, {6, 8}, {9, 12}}; + Assertions.assertArrayEquals(expected, MergeIntervals.merge(intervals)); + } + + // Test case 6: There are many overlapping time periods + @Test + public void testMerge_ManyOverlapping() { + int[][] intervals = {{1, 4}, {2, 5}, {3, 8}, {6, 9}}; + int[][] expected = {{1, 9}}; + Assertions.assertArrayEquals(expected, MergeIntervals.merge(intervals)); + } +} diff --git a/src/main/java/com/leetcode/strings/AnagramsTestCase.java b/src/main/java/com/leetcode/strings/AnagramsTestCase.java new file mode 100644 index 00000000..07c8ac42 --- /dev/null +++ b/src/main/java/com/leetcode/strings/AnagramsTestCase.java @@ -0,0 +1,99 @@ +package com.leetcode.strings; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +/** +* +* @author: quangrandz +* @since: 2023-6-30 +*/ + + +public class AnagramsTestCase { + @BeforeAll + public static void beforeAll() { + System.out.println("BEFORE ALL"); + } + + @AfterAll + public static void afterAll() { + System.out.println("AFTER ALL"); + } + + @BeforeEach + public void beforeEach() { + System.out.println("BEFORE EACH"); + } + + @AfterEach + public void afterEach() { + System.out.println("AFTER EACH"); + } + + @Test + public void testFindAllAnagramsInText() { + String text = "cbaebabacd"; + String pattern = "abc"; + List expected = Arrays.asList(0, 6); + + List result = AnagramsInString.findAllAnagramsInText(text, pattern); + + Assertions.assertEquals(expected, result); + } + + @Test + public void testFindAllAnagramsInText_NoAnagramFound() { + String text = "abcd"; + String pattern = "xyz"; + List expected = Collections.emptyList(); + + List result = AnagramsInString.findAllAnagramsInText(text, pattern); + + Assertions.assertEquals(expected, result); + } + + @Test + public void testFindAllAnagramsInText_EmptyText() { + String text = ""; + String pattern = "abc"; + List expected = Collections.emptyList(); + + List result = AnagramsInString.findAllAnagramsInText(text, pattern); + + Assertions.assertEquals(expected, result); + } + + @Test + public void testFindAllAnagramsInText_EmptyPattern() { + String text = "abc"; + String pattern = ""; + List expected = Arrays.asList(1,2,3); + + List result = AnagramsInString.findAllAnagramsInText(text, pattern); + + Assertions.assertEquals(expected, result); + } + + @Test + public void testFindAllAnagramsInText_LongPattern() { + String text = "cbaebabacd"; + String pattern = "abcabcabc"; + List expected = Collections.emptyList(); + + List result = AnagramsInString.findAllAnagramsInText(text, pattern); + + Assertions.assertEquals(expected, result); + } + + + +}