1
1
using Algorithms . Search ;
2
+ using FluentAssertions ;
2
3
using NUnit . Framework ;
4
+ using System ;
3
5
using Utilities . Exceptions ;
4
6
5
7
namespace Algorithms . Tests . Search ;
@@ -9,73 +11,98 @@ public static class FastSearcherTests
9
11
[ Test ]
10
12
public static void FindIndex_ItemPresent_IndexCorrect ( )
11
13
{
14
+ // Arrange
12
15
var searcher = new FastSearcher ( ) ;
13
16
var arr = Helper . GetSortedArray ( 1000 ) ;
14
17
var present = Helper . GetItemIn ( arr ) ;
18
+
19
+ // Act
15
20
var index = searcher . FindIndex ( arr , present ) ;
16
- Assert . That ( arr [ index ] , Is . EqualTo ( present ) ) ;
21
+
22
+ // Assert
23
+ arr [ index ] . Should ( ) . Be ( present ) ;
17
24
}
18
25
19
26
[ TestCase ( new [ ] { 1 , 2 } , 1 ) ]
20
27
[ TestCase ( new [ ] { 1 , 2 } , 2 ) ]
21
28
[ TestCase ( new [ ] { 1 , 2 , 3 , 3 , 3 } , 2 ) ]
22
29
public static void FindIndex_ItemPresentInSpecificCase_IndexCorrect ( int [ ] arr , int present )
23
30
{
31
+ // Arrange
24
32
var searcher = new FastSearcher ( ) ;
33
+
34
+ // Act
25
35
var index = searcher . FindIndex ( arr , present ) ;
26
- Assert . That ( arr [ index ] , Is . EqualTo ( present ) ) ;
36
+
37
+ // Assert
38
+ arr [ index ] . Should ( ) . Be ( present ) ;
27
39
}
28
40
29
41
[ Test ]
30
- public static void FindIndex_ItemMissing_ItemNotFoundExceptionThrown ( )
42
+ public static void FindIndex_ItemPresentInArrayOfDuplicates_IndexCorrect ( )
31
43
{
44
+ // Arrange
32
45
var searcher = new FastSearcher ( ) ;
33
- var arr = Helper . GetSortedArray ( 1000 ) ;
34
- var missing = Helper . GetItemNotIn ( arr ) ;
35
- _ = Assert . Throws < ItemNotFoundException > ( ( ) => searcher . FindIndex ( arr , missing ) ) ;
46
+ var arr = CreateArrayOfDuplicates ( 1000 , 0 ) ; // Helper for large duplicate arrays
47
+ var present = 0 ;
48
+
49
+ // Act
50
+ var index = searcher . FindIndex ( arr , present ) ;
51
+
52
+ // Assert
53
+ arr [ index ] . Should ( ) . Be ( 0 ) ;
36
54
}
37
55
38
- [ TestCase ( new int [ 0 ] , 2 ) ]
39
- public static void FindIndex_ItemMissingInSpecificCase_ItemNotFoundExceptionThrown ( int [ ] arr , int missing )
56
+ [ TestCase ( new int [ 0 ] , 2 ) ] // Empty array
57
+ [ TestCase ( new [ ] { 1 , 2 , 3 } , 4 ) ] // Item missing in array
58
+ public static void FindIndex_ItemMissing_ItemNotFoundExceptionThrown ( int [ ] arr , int missing )
40
59
{
60
+ // Arrange
41
61
var searcher = new FastSearcher ( ) ;
42
- _ = Assert . Throws < ItemNotFoundException > ( ( ) => searcher . FindIndex ( arr , missing ) ) ;
62
+
63
+ // Act
64
+ Action act = ( ) => searcher . FindIndex ( arr , missing ) ;
65
+
66
+ // Assert
67
+ act . Should ( ) . Throw < ItemNotFoundException > ( ) ;
43
68
}
44
69
45
70
[ Test ]
46
- public static void FindIndex_ItemSmallerThanAllMissing_ItemNotFoundExceptionThrown ( )
71
+ public static void FindIndex_ItemMissingInArrayOfDuplicates_ItemNotFoundExceptionThrown ( )
47
72
{
73
+ // Arrange
48
74
var searcher = new FastSearcher ( ) ;
49
- var arr = Helper . GetSortedArray ( 1000 ) ;
50
- var missing = Helper . GetItemSmallerThanAllIn ( arr ) ;
51
- _ = Assert . Throws < ItemNotFoundException > ( ( ) => searcher . FindIndex ( arr , missing ) ) ;
75
+ var arr = CreateArrayOfDuplicates ( 1000 , 0 ) ; // Helper for large duplicate arrays
76
+ var missing = 1 ;
77
+
78
+ // Act
79
+ Action act = ( ) => searcher . FindIndex ( arr , missing ) ;
80
+
81
+ // Assert
82
+ act . Should ( ) . Throw < ItemNotFoundException > ( ) ;
52
83
}
53
84
54
85
[ Test ]
55
- public static void FindIndex_ItemBiggerThanAllMissing_ItemNotFoundExceptionThrown ( )
86
+ public static void FindIndex_ItemOutOfRange_ItemNotFoundExceptionThrown ( )
56
87
{
88
+ // Arrange
57
89
var searcher = new FastSearcher ( ) ;
58
90
var arr = Helper . GetSortedArray ( 1000 ) ;
59
- var missing = Helper . GetItemBiggerThanAllIn ( arr ) ;
60
- _ = Assert . Throws < ItemNotFoundException > ( ( ) => searcher . FindIndex ( arr , missing ) ) ;
61
- }
91
+ var smaller = Helper . GetItemSmallerThanAllIn ( arr ) ;
92
+ var bigger = Helper . GetItemBiggerThanAllIn ( arr ) ;
62
93
63
- [ Test ]
64
- public static void FindIndex_ArrayOfDuplicatesItemPresent_IndexCorrect ( )
65
- {
66
- var searcher = new FastSearcher ( ) ;
67
- var arr = new int [ 1000 ] ;
68
- var present = 0 ;
69
- var index = searcher . FindIndex ( arr , present ) ;
70
- Assert . That ( arr [ index ] , Is . EqualTo ( 0 ) ) ;
94
+ // Act & Assert
95
+ Action act1 = ( ) => searcher . FindIndex ( arr , smaller ) ;
96
+ Action act2 = ( ) => searcher . FindIndex ( arr , bigger ) ;
97
+
98
+ act1 . Should ( ) . Throw < ItemNotFoundException > ( ) ;
99
+ act2 . Should ( ) . Throw < ItemNotFoundException > ( ) ;
71
100
}
72
101
73
- [ Test ]
74
- public static void FindIndex_ArrayOfDuplicatesItemMissing_ItemNotFoundExceptionThrown ( )
102
+ private static int [ ] CreateArrayOfDuplicates ( int length , int value )
75
103
{
76
- var searcher = new FastSearcher ( ) ;
77
- var arr = new int [ 1000 ] ;
78
- var missing = 1 ;
79
- _ = Assert . Throws < ItemNotFoundException > ( ( ) => searcher . FindIndex ( arr , missing ) ) ;
104
+ var arr = new int [ length ] ;
105
+ Array . Fill ( arr , value ) ;
106
+ return arr ;
80
107
}
81
108
}
0 commit comments