private static void runTests()
        {
            // Create test variables
            Console.WriteLine($"Testing with two 60s spike trains, each with one spike at 30s, and a dt of 0.05s ...");
            double dt        = 0.05;
            double startTime = 0d;
            double endTime   = 60d;

            double[] emptyTrain  = new double[0];
            double[] spikeTrain1 = new double[1] {
                30.0d
            };
            double[] spikeTrain2 = new double[1] {
                30.0d
            };

            // Test #1
            Console.WriteLine($"\nTEST #1");
            Console.WriteLine($"Calculating STTC with the {nameof(Sttc)} C++/CLI class...");
            double result = Sttc.Calculate(spikeTrain1, spikeTrain2, startTime, endTime, dt);

            Console.WriteLine($"Result: {result}");

            // Test #2
            Console.WriteLine($"\nTEST #2");
            Console.WriteLine($"Same, but with empty first spike train...");
            try {
                result = Sttc.Calculate(emptyTrain, spikeTrain2, startTime, endTime, dt);
            }
            catch (DivideByZeroException e) {
                Console.WriteLine($"Caught {nameof(DivideByZeroException)} with message: \n\t{e.Message}");
            }

            // Test #3
            Console.WriteLine($"\nTEST #3");
            Console.WriteLine($"Same, but with empty second spike train...");
            try {
                result = Sttc.Calculate(spikeTrain1, emptyTrain, startTime, endTime, dt);
            }
            catch (DivideByZeroException e) {
                Console.WriteLine($"Caught {nameof(DivideByZeroException)} with message: \n\t{e.Message}");
            }
        }
        // INTERFACE
        public static IDictionary <double, double[]> STTCvsDistance(Recording rec, double dt)
        {
            // For every unique pair of units, calculate the STTC, then
            // group these values by the distance between the units' channels
            IEnumerable <Unit>             units   = rec.EnumerateChannels().SelectMany(ch => ch.Units);
            IDictionary <double, double[]> results =
                units.SelectMany(
                    (u, index) => units.Skip(index + 1),
                    (u1, u2) => Tuple.Create(u1, u2))
                .GroupBy(
                    pair => Unit.Distance(pair.Item1, pair.Item2),
                    pair => Sttc.Calculate(pair.Item1.SpikeTrain.ToArray(), pair.Item2.SpikeTrain.ToArray(), rec.StartTime, rec.EndTime, dt))
                .OrderBy(pair => pair.Key)
                .ToDictionary(
                    pair => pair.Key,
                    pair => pair.ToArray()
                    );

            return(results);
        }