Kotlinlearncs.online LogoJava
Return to List

Test Writing: Selection Sort

Created By: Geoffrey Challen
/ Version: 2020.11.0

Create a named selectionSort that implements selection sort on a passed IntArray. To ensure that you are implementing selection sort, you should also return a List<Int> containing the positions of the minimum value on each pass through the array.

Selection sort works by repeatedly finding the smallest value in an array and moving it into position. In the first iteration, we find the smallest value of the entire array (starting at index 0) and swap it to the front. Next, we find the smallest value of the array starting at index 1 and swap it to position 1. This continues until the remaining array has size 1, at which point we are done.

To receive credit, you'll need to follow these instructions carefully:

  • If the passed array contains less than 2 values, throw an IllegalArgumentException.
  • On each pass through the array, find the minimum value, add its position (not its value) to the list of positions, and then swap it into place
  • Grow the sorted part from the left to the right: meaning that your first minimum loop should start at 0, the next at 1, etc
  • Finish when the array has only one value left, since it will be the maximum assuming you've done everything correctly. Don't add the position of this value to the list of positions, meaning that if the array has N values, the list of positions should have N - 1 values.
  • If there are multiple positions with the minimum value, you should record the first

Test Design Challenge

You're challenge is to write tests for this problem described above.

  • Provide a public class named TestSelectionSorter with a single non-private class method named test that accepts no arguments and does not return a value.
  • If the implementation of the class described above is incorrect, your test method should throw an exception.
  • If it is correct, do not throw an exception.
  • You may want to use Kotlin's assert or check methods