public void ProgramFeatures_ToIncompatibilityFlagsWithEnhancedFeatures_ReturnsExpected()
        {
            var features = new ProgramFeaturesBuilder()
                           .WithNtscCompatibility(FeatureCompatibility.Enhances)
                           .WithPalCompatibility(FeatureCompatibility.Enhances)
                           .WithKeyboardComponentFeatures(KeyboardComponentFeatures.Enhances)
                           .WithSuperVideoArcadeCompatibility(FeatureCompatibility.Enhances)
                           .WithIntellivoiceCompatibility(FeatureCompatibility.Enhances)
                           .WithIntellivisionIICompatibility(FeatureCompatibility.Enhances)
                           .WithEcsFeatures(EcsFeatures.Enhances)
                           .WithTutorvisionCompatibility(FeatureCompatibility.Enhances)
                           .WithIntellicartFeatures(IntellicartCC3Features.Enhances)
                           .WithCuttleCart3Features(CuttleCart3Features.Enhances)
                           .WithJlpFeatures(JlpFeatures.Enhances)
                           .WithLtoFlashFeatures(LtoFlashFeatures.Enhances)
                           .WithBee3Features(Bee3Features.Enhances)
                           .WithHiveFeatures(HiveFeatures.Enhances)
                           .Build() as ProgramFeatures;

            var incompatibilityFlags = features.ToIncompatibilityFlags();

            Assert.Equal(IncompatibilityFlags.SuperVideoArcadeAltered | IncompatibilityFlags.IntellivisionIIAltered, incompatibilityFlags);
        }
        public void ProgramFeatures_ToIncompatibilityFlagsWhenNoIncompatibilitiesDefined_ReturnsNone()
        {
            var features = new ProgramFeaturesBuilder()
                           .WithNtscCompatibility(FeatureCompatibility.Tolerates)
                           .WithPalCompatibility(FeatureCompatibility.Tolerates)
                           .WithKeyboardComponentFeatures(KeyboardComponentFeatures.Tolerates)
                           .WithSuperVideoArcadeCompatibility(FeatureCompatibility.Tolerates)
                           .WithIntellivoiceCompatibility(FeatureCompatibility.Tolerates)
                           .WithIntellivisionIICompatibility(FeatureCompatibility.Tolerates)
                           .WithEcsFeatures(EcsFeatures.Tolerates)
                           .WithTutorvisionCompatibility(FeatureCompatibility.Tolerates)
                           .WithIntellicartFeatures(IntellicartCC3Features.Tolerates)
                           .WithCuttleCart3Features(CuttleCart3Features.Tolerates)
                           .WithJlpFeatures(JlpFeatures.Tolerates)
                           .WithLtoFlashFeatures(LtoFlashFeatures.Tolerates)
                           .WithBee3Features(Bee3Features.Tolerates)
                           .WithHiveFeatures(HiveFeatures.Tolerates)
                           .Build() as ProgramFeatures;

            var incompatibilityFlags = features.ToIncompatibilityFlags();

            Assert.Equal(IncompatibilityFlags.None, incompatibilityFlags);
        }