public void TestNormalize()
        {
            var keep = new ImplementationPreferences {
                ID = "id1", UserStability = Stability.Testing
            };
            var superfluous = new ImplementationPreferences {
                ID = "id2"
            };
            var preferences = new FeedPreferences {
                Implementations = { keep, superfluous }
            };

            preferences.Normalize();
            preferences.Implementations.Should().BeEquivalentTo(keep);
        }
        public void TestGetImplementationPreferences()
        {
            var preferences  = new FeedPreferences();
            var preferences1 = preferences["id1"];

            preferences["id1"].Should().BeSameAs(preferences1, because: "Second call with same ID should return same reference");

            var preferences2 = new ImplementationPreferences {
                ID = "id2"
            };

            preferences.Implementations.Add(preferences2);
            preferences["id2"].Should().BeSameAs(preferences2, because: "Call with pre-existing ID should return existing reference");

            preferences.Implementations.Should().BeEquivalentTo(preferences1, preferences2);
        }
        [Fact] // Ensures that the class is correctly serialized and deserialized.
        public void TestSaveLoad()
        {
            FeedPreferences preferences1 = CreateTestFeedPreferences(), preferences2;

            using (var tempFile = new TemporaryFile("0install-unit-tests"))
            {
                // Write and read file
                preferences1.SaveXml(tempFile);
                preferences2 = XmlStorage.LoadXml <FeedPreferences>(tempFile);
            }

            // Ensure data stayed the same
            preferences2.Should().Be(preferences1, because: "Serialized objects should be equal.");
            preferences2.GetHashCode().Should().Be(preferences1.GetHashCode(), because: "Serialized objects' hashes should be equal.");
            preferences2.Should().NotBeSameAs(preferences1, because: "Serialized objects should not return the same reference.");
        }