From ef08c642fce27d6024e2cf08abee87d6fdd10eb6 Mon Sep 17 00:00:00 2001 From: dungnthfx00445 Date: Tue, 25 Nov 2025 14:25:47 +0700 Subject: [PATCH] Add tests for SearchInsertPosition file --- .../binarysearch/SearchInsertPosition.java | 7 ++- .../SearchInsertPositionTest.java | 48 +++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/leetcode/arrays/binarysearch/SearchInsertPositionTest.java diff --git a/src/main/java/com/leetcode/arrays/binarysearch/SearchInsertPosition.java b/src/main/java/com/leetcode/arrays/binarysearch/SearchInsertPosition.java index 2f13214a..fb1f6c17 100644 --- a/src/main/java/com/leetcode/arrays/binarysearch/SearchInsertPosition.java +++ b/src/main/java/com/leetcode/arrays/binarysearch/SearchInsertPosition.java @@ -1,3 +1,4 @@ + package com.leetcode.arrays.binarysearch; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -42,10 +43,14 @@ public class SearchInsertPosition { * @return */ public static int searchInsert(int[] nums, int target) { + if (nums == null) { + throw new IllegalArgumentException("nums must not be null"); + } + int low = 0; int high = nums.length - 1; while (low <= high) { - int mid = low + (high - low) / 2; + int mid = low + ((high - low) >>> 1); if (nums[mid] == target) { return mid; } else if (nums[mid] < target) { diff --git a/src/test/java/com/leetcode/arrays/binarysearch/SearchInsertPositionTest.java b/src/test/java/com/leetcode/arrays/binarysearch/SearchInsertPositionTest.java new file mode 100644 index 00000000..142a2944 --- /dev/null +++ b/src/test/java/com/leetcode/arrays/binarysearch/SearchInsertPositionTest.java @@ -0,0 +1,48 @@ +package com.leetcode.arrays.binarysearch; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import com.leetcode.arrays.binarysearch.SearchInsertPosition; + +/** + * Unit tests for SearchInsertPosition. + */ +class SearchInsertPositionTest { + + @Test + void test_targetFound() { + int[] nums = {1, 3, 5, 6}; + assertEquals(2, SearchInsertPosition.searchInsert(nums, 5)); + } + + @Test + void test_targetSmallerThanAll() { + int[] nums = {10, 20, 30, 40}; + assertEquals(0, SearchInsertPosition.searchInsert(nums, 5)); + } + + @Test + void test_targetGreaterThanAll() { + int[] nums = {10, 20, 30, 40}; + assertEquals(4, SearchInsertPosition.searchInsert(nums, 50)); + } + + @Test + void test_targetBetweenTwoElements() { + int[] nums = {1, 3, 5, 6}; + assertEquals(1, SearchInsertPosition.searchInsert(nums, 2)); + } + + @Test + void test_emptyArray() { + int[] nums = {}; + assertEquals(0, SearchInsertPosition.searchInsert(nums, 7)); + } + + @Test + void test_nullArray_throwsException() { + int[] nums = null; + assertThrows(IllegalArgumentException.class, + () -> SearchInsertPosition.searchInsert(nums, 1)); + } +}