Initial test cases for binary search.
First iteration of binary search. Rename variables to make algorithm a bit easier to read. Add class and method comments.
Add test cases that forces algorithm to explore the upper and lower parts of the search space.
Simplify stopping condition and return statement.
Test for searching through unsorted arrays.
Sort array before searching for target. Allows unsorted arrays to be passed to the method.
Add test to check that an ArgumentNullException occurs when the data array is null.
Remove tests that check that passing an unsorted array to the Find method returns the correct index. Replace with tests that make sure that passing an unsorted array causes an exception.
Throw exception when an unsorted array is passed to the Find method. Fulfills unit tests created in the previous revision.
Expand on data parameter comment.
Add analysis for handling duplicate values.
Add test case for duplicate values.
Add comments to chosen duplicate value option. Add method comments to Find method to reflect chosen option.
Add skeleton for the FindFirst method, which will return the index of the first occurrence of a number in an array. Add test cases for this method.
Flesh out the FindFirst method in order to make its related test cases pass.
Refactoring; put common code in a single method.
Make chosen duplicate value options a bit clearer.