- Notifications
You must be signed in to change notification settings - Fork 19.9k
/
Copy pathNonRepeatingNumberFinderTest.java
36 lines (31 loc) · 1.57 KB
/
NonRepeatingNumberFinderTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
packagecom.thealgorithms.bitmanipulation;
importstaticorg.junit.jupiter.api.Assertions.assertEquals;
importorg.junit.jupiter.params.ParameterizedTest;
importorg.junit.jupiter.params.provider.Arguments;
importorg.junit.jupiter.params.provider.MethodSource;
/**
* Test case for Non Repeating Number Finder
* This test class validates the functionality of the
* NonRepeatingNumberFinder by checking various scenarios.
*
* @author Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi)
*/
classNonRepeatingNumberFinderTest {
@ParameterizedTest
@MethodSource("testCases")
voidtestNonRepeatingNumberFinder(int[] arr, intexpected) {
assertEquals(expected, NonRepeatingNumberFinder.findNonRepeatingNumber(arr));
}
privatestaticArguments[] testCases() {
returnnewArguments[] {
Arguments.of(newint[] {1, 2, 1, 2, 6}, 6), Arguments.of(newint[] {1, 2, 1, 2}, 0), // All numbers repeat
Arguments.of(newint[] {12}, 12), // Single non-repeating number
Arguments.of(newint[] {3, 5, 3, 4, 4}, 5), // More complex case
Arguments.of(newint[] {7, 8, 7, 9, 8, 10, 10}, 9), // Non-repeating in the middle
Arguments.of(newint[] {0, -1, 0, -1, 2}, 2), // Testing with negative numbers
Arguments.of(newint[] {Integer.MAX_VALUE, 1, 1}, Integer.MAX_VALUE), // Edge case with max int
Arguments.of(newint[] {2, 2, 3, 3, 4, 5, 4}, 5), // Mixed duplicates
Arguments.of(newint[] {}, 0) // Edge case: empty array (should be handled as per design)
};
}
}