public void SampleTest()
        {
            Assert.AreEqual(15, SumOfArraySingles.Repeats(new List <int> {
                4, 5, 7, 5, 4, 8
            }));
            Assert.AreEqual(19, SumOfArraySingles.Repeats(new List <int> {
                9, 10, 19, 13, 19, 13
            }));
            Assert.AreEqual(12, SumOfArraySingles.Repeats(new List <int> {
                16, 0, 11, 4, 8, 16, 0, 11
            }));
            Assert.AreEqual(22, SumOfArraySingles.Repeats(new List <int> {
                5, 17, 18, 11, 13, 18, 11, 13
            }));
            Assert.AreEqual(24, SumOfArraySingles.Repeats(new List <int> {
                5, 10, 19, 13, 10, 13
            }));

            //Assert.AreEqual(13, SumOfArraySingles.Repeats(new List<int> {7, 9, 9, 9, 9, 9, 9, 6}));
        }
        public void RandomTest()
        {
            Random rnd = new Random();

            for (int i = 0; i < 100; ++i)
            {
                // Init List
                List <int> source = new List <int>();
                for (int j = 0; j < 100; ++j)
                {
                    source.Add(rnd.Next(0, 1000));
                }

                source = source.Distinct().ToList();

                // Unique check
                while (source.Count <= 4)
                {
                    source = source.Concat(source.Select(x => x + 1000)).Distinct().ToList();
                }

                // Dup every number but last two
                source = source.Concat(source.Take(source.Count - 2)).ToList();

                // Shuffle list (Fisher-Yates Shuffle)
                int n = source.Count;
                for (int j = 0; j < n; j++)
                {
                    int r = j + rnd.Next(n - j);
                    int t = source[r];
                    source[r] = source[j];
                    source[j] = t;
                }

                Assert.AreEqual(SolutionRepeats(source), SumOfArraySingles.Repeats(source));
            }
        }