public void VerifyReverseVersionComparer()
        {
            AssemblyNameExtension x = new AssemblyNameExtension("System, Version=2.0.0.0");
            AssemblyNameExtension y = new AssemblyNameExtension("System, Version=1.0.0.0");
            AssemblyNameExtension z = new AssemblyNameExtension("System, Version=2.0.0.0");
            AssemblyNameExtension a = new AssemblyNameExtension("Zar, Version=3.0.0.0");

            AssemblyNameReverseVersionComparer reverseComparer = new AssemblyNameReverseVersionComparer();

            Assert.Equal(-1, reverseComparer.Compare(x, y));
            Assert.Equal(1, reverseComparer.Compare(y, x));
            Assert.Equal(0, reverseComparer.Compare(x, z));
            Assert.Equal(0, reverseComparer.Compare(null, null));
            Assert.Equal(-1, reverseComparer.Compare(x, null));
            Assert.Equal(1, reverseComparer.Compare(null, y));
            Assert.Equal(-1, reverseComparer.Compare(a, x));

            List <AssemblyNameExtension> assemblies = new List <AssemblyNameExtension>();

            assemblies.Add(y);
            assemblies.Add(x);
            assemblies.Add(z);

            assemblies.Sort(AssemblyNameReverseVersionComparer.GenericComparer);

            Assert.True(assemblies[0].Equals(x));
            Assert.True(assemblies[1].Equals(z));
            Assert.True(assemblies[2].Equals(y));
        }
        public void VerifyReverseVersionComparer()
        {
            AssemblyNameExtension x = new AssemblyNameExtension("System, Version=2.0.0.0");
            AssemblyNameExtension y = new AssemblyNameExtension("System, Version=1.0.0.0");
            AssemblyNameExtension z = new AssemblyNameExtension("System, Version=2.0.0.0");
            AssemblyNameExtension a = new AssemblyNameExtension("Zar, Version=3.0.0.0");

            AssemblyNameReverseVersionComparer reverseComparer = new AssemblyNameReverseVersionComparer();
            Assert.AreEqual(-1, reverseComparer.Compare(x ,y));
            Assert.AreEqual(1, reverseComparer.Compare(y, x));
            Assert.AreEqual(0, reverseComparer.Compare(x, z));
            Assert.AreEqual(0, reverseComparer.Compare(null, null));
            Assert.AreEqual(-1, reverseComparer.Compare(x ,null));
            Assert.AreEqual(1, reverseComparer.Compare(null ,y));
            Assert.AreEqual(-1, reverseComparer.Compare(a, x));

            List<AssemblyNameExtension> assemblies = new List<AssemblyNameExtension>();
            assemblies.Add(y);
            assemblies.Add(x);
            assemblies.Add(z);

            assemblies.Sort(AssemblyNameReverseVersionComparer.GenericComparer);

            Assert.IsTrue(assemblies[0].Equals(x));
            Assert.IsTrue(assemblies[1].Equals(z));
            Assert.IsTrue(assemblies[2].Equals(y));
        }