public void ConfigCacheShouldBeTranslatable(object obj) { var initial = (ConfigCache)obj; TranslationHelpers.GetWriteTranslator().Translate(ref initial); ConfigCache copy = null; TranslationHelpers.GetReadTranslator().Translate(ref copy); // test _configurations var initialConfigurations = initial.GetEnumerator().ToArray(); var copiedConfigurations = copy.GetEnumerator().ToArray(); Assert.Equal(copiedConfigurations, initialConfigurations, EqualityComparer <BuildRequestConfiguration> .Default); // test _configurationIdsByMetadata copiedConfigurations.ShouldAllBe(config => initial.GetMatchingConfiguration(new ConfigurationMetadata(config)).Equals(config)); initialConfigurations.ShouldAllBe(config => copy.GetMatchingConfiguration(new ConfigurationMetadata(config)).Equals(config)); // test relevant fields not covered by BuildRequestConfiguration.Equals foreach (var initialConfiguration in initial) { copy[initialConfiguration.ConfigurationId].ProjectDefaultTargets.ShouldBe(initialConfiguration.ProjectDefaultTargets); copy[initialConfiguration.ConfigurationId].ProjectInitialTargets.ShouldBe(initialConfiguration.ProjectInitialTargets); } }