public void When_RemoveElement_Expect_Reference(int index)
        {
            var vector = new SparseVector <double>();

            vector.GetElement(1).Value = 1;
            vector.GetElement(2).Value = 2;
            vector.GetElement(3).Value = 3;

            vector.RemoveElement(index);

            for (var i = 1; i <= 3; i++)
            {
                if (i == index)
                {
                    Assert.AreEqual(null, vector.FindElement(i));
                }
                else
                {
                    Assert.AreEqual(i, vector.FindElement(i).Value);
                }
            }
        }
        public void When_SwappingVectorElements_Expect_Reference()
        {
            // Test swapping of elements in all possible combinations

            for (int i = 0; i < 32; i++)
            {
                // Setup
                SparseVector <double> vector = new SparseVector <double>(5);
                int fill = i;
                for (int k = 1; k <= 5; k++)
                {
                    if ((fill & 0x01) != 0)
                    {
                        vector[k] = k;
                    }
                    fill = (fill >> 1) & 0b011111;
                }

                // Swap rows
                vector.Swap(2, 4);

                // Check
                fill = i;
                for (int k = 1; k <= 5; k++)
                {
                    int realk = k;
                    if (k == 2)
                    {
                        realk = 4;
                    }
                    else if (k == 4)
                    {
                        realk = 2;
                    }

                    if ((fill & 0x01) != 0)
                    {
                        Assert.AreEqual(k, vector[realk], 1e-12);
                    }
                    else
                    {
                        Assert.AreEqual(vector.FindElement(realk), null);
                    }
                    fill = (fill >> 1) & 0b011111;
                }
            }
        }