Selection Sort Implementation Is this a proper selection sort?
Any code issues? 

public static void SelectionSort(ref int[] a)
{
    int n = a.Length;
    for (int j = 0; j &lt; n - 1; j++)
    {
        int iMin = j;
        for (int i = j + 1; i &lt; n; i++)
        {
            if (a[i] &lt; a[iMin])
            {
                iMin = i;
            }
        }
        if (iMin != j)
        {
            int temp = a[j];
            a[j] = a[iMin];
            a[iMin] = temp;
        }
    }
}

//test 
int[] ar = new int[] { 90, 90, 71, 82, 93, 75, 81, 54, 36, 102, 99, 34, -56, 103, 78, 796, 52, -56, 5, 215 };
SelectionSort(ref ar);
foreach (int i in ar)
    Debug.WriteLine(i);
The parameter does not need to be a ref, since there is no assignment to the variable a in the SelectionSort method.
There are too few tests.
The current test data looks entirely random, as if you had no idea what the interesting cases were.
The tests should at least cover some interesting edge cases, like:


An empty array
An array with only 1 element
An array with 2 elements
An array with 10 equal elements
An array that is sorted ascendingly
An array that is sorted descendingly
An array that is random
An array containing int.MinValue, 0, int.MaxValue
An array of 5 elements, in which every permutation is tested whether it sorts to the same results

The test code should be presented in the question as real test methods, not just a code snippet.