public void ProgramRomInformationBuilder_BuildWithFeatures_ResultsInExpectedFeatures()
        {
            var builder = CreateBuilderWithRequiredFields("Testing Features");

            var expectedFeatures      = new ProgramFeaturesBuilder().WithTutorvisionCompatibility(FeatureCompatibility.Requires).Build();
            var programRomInformation = builder.WithFeatures(expectedFeatures).Build();

            Assert.Equal(expectedFeatures, programRomInformation.Features);
        }
        public void RomFileMetadataProgramInformation_GetSetFeatures_IsSetCorrectly()
        {
            var features    = new ProgramFeaturesBuilder().WithIntellicartFeatures(IntellicartCC3Features.Incompatible) as ProgramFeatures;
            var information = new RomFileMetadataProgramInformation(null)
            {
                Features = features
            };

            Assert.Equal(features, information.Features);
        }
        public void UnmergedProgramInformation_GetSetFeatures_GetsAndSetsFeatures()
        {
            var information = CreateTestData(initialize: true);

            var expectedFeatures = new ProgramFeaturesBuilder().WithIntellivisionIICompatibility(FeatureCompatibility.Enhances).WithEcsFeatures(EcsFeatures.Enhances).Build();

            information.Features = (ProgramFeatures)expectedFeatures;

            Assert.Equal(expectedFeatures, information.Features);
        }
Ejemplo n.º 4
0
        public void ProgramDescription_SetFeatures_UpdatesFeatures()
        {
            var information = new TestProgramInformation();
            var crc         = 1u;

            information.AddCrc(crc);
            var description = new ProgramDescription(crc, null, information);

            var newFeatures = new ProgramFeaturesBuilder().WithTutorvisionCompatibility(FeatureCompatibility.Requires).Build() as ProgramFeatures;

            description.Features = newFeatures;

            Assert.True(object.ReferenceEquals(newFeatures, description.Features));
        }
Ejemplo n.º 5
0
        public void IProgramInformationToXmlRomInformationConverter_ConvertInformationWithOneCrc_XmlRomInformationHasExpectedTypeString(GeneralFeatures generalFeatures, string expectedRomTypeString)
        {
            var features    = new ProgramFeaturesBuilder().WithGeneralFeatures(generalFeatures).Build();
            var information = new TestProgramInformation()
            {
                Title = "Rom Type tester info", Features = (ProgramFeatures)features
            };

            information.AddCrcs(1, setVersionMetadata: false);

            var xmlRomInformation = IProgramInformationToXmlRomInformationConverter.Instance.Convert(information, convertAll: false, setFeatures: false, setMetadata: false).Single();

            Assert.Equal(expectedRomTypeString, xmlRomInformation.GetColumn(XmlRomInformationDatabaseColumnName.type).Value);
        }
Ejemplo n.º 6
0
        public void IProgramInformation_MergeEverythingWithOverlappingFields_OnlyMergesFeaturesAndCrcs()
        {
            var information = new TestProgramInformation()
            {
                Title     = "Title of the Highest Quality",
                Vendor    = "Ven-Dor",
                Year      = "1990",
                ShortName = "THQ",
                Features  = (ProgramFeatures) new ProgramFeaturesBuilder().WithIntellicartFeatures(IntellicartCC3Features.SerialPortEnhanced).Build()
            };
            var crcData = new CrcData(0x24u, "v0", IncompatibilityFlags.IntellivisionII);

            Assert.True(information.AddCrc(crcData.Crc, crcData.Description, crcData.Incompatibilities));

            var toMerge = new TestProgramInformation()
            {
                Title     = "Title of the Higherest Quality",
                Vendor    = "Ven-Dor II",
                Year      = "1991",
                ShortName = "THQ-II",
                Features  = (ProgramFeatures) new ProgramFeaturesBuilder().WithJlpFeatures(JlpFeatures.SerialPortEnhanced).Build()
            };
            var crcDataToMerge = new CrcData(0x25u, "v1", IncompatibilityFlags.Bee3);

            toMerge.AddCrc(crcDataToMerge.Crc, crcDataToMerge.Description, crcDataToMerge.Incompatibilities);

            var mergedInformation = information.Merge(ProgramInformationMergeFieldsFlags.All, new Tuple <IProgramInformation, ProgramInformationMergeFieldsFlags>(toMerge, ProgramInformationMergeFieldsFlags.All));

            var expectedFeatures = new ProgramFeaturesBuilder().WithIntellicartFeatures(IntellicartCC3Features.SerialPortEnhanced).WithJlpFeatures(JlpFeatures.SerialPortEnhanced).Build();
            var expectedCrcs     = new[] { crcData, crcDataToMerge };

            Assert.Equal(information.Title, mergedInformation.Title);
            Assert.Equal(information.Vendor, mergedInformation.Vendor);
            Assert.Equal(information.Year, mergedInformation.Year);
            Assert.Equal(expectedFeatures, mergedInformation.Features);
            Assert.Equal(information.ShortName, mergedInformation.ShortName);
            Assert.Equal(expectedCrcs, mergedInformation.Crcs);
        }
        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);
        }
        private static IProgramFeatures CreateXmlRomFeatures()
        {
            var builder = new ProgramFeaturesBuilder();

            builder.WithGeneralFeatures((GeneralFeatures)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.general_features]));
            builder.WithNtscCompatibility((FeatureCompatibility)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.ntsc]));
            builder.WithPalCompatibility((FeatureCompatibility)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.pal]));
            builder.WithKeyboardComponentFeatures((KeyboardComponentFeatures)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.kc]));
            builder.WithSuperVideoArcadeCompatibility((FeatureCompatibility)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.sva]));
            builder.WithIntellivoiceCompatibility((FeatureCompatibility)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.ivoice]));
            builder.WithIntellivisionIICompatibility((FeatureCompatibility)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.intyii]));
            builder.WithEcsFeatures((EcsFeatures)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.ecs]));
            builder.WithTutorvisionCompatibility((FeatureCompatibility)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.tutor]));
            builder.WithIntellicartFeatures((IntellicartCC3Features)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.icart]));
            builder.WithCuttleCart3Features((CuttleCart3Features)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.cc3]));
            builder.WithJlpFeatures((JlpFeatures)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.jlp]));
            builder.WithMinimumFlashSectors(ushort.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.jlp_savegame]));
            builder.WithLtoFlashFeatures((LtoFlashFeatures)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.lto_flash]));
            builder.WithBee3Features((Bee3Features)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.bee3]));
            builder.WithHiveFeatures((HiveFeatures)uint.Parse(XmlRomInformationColumnValues[XmlRomInformationDatabaseColumnName.hive]));

            return(builder.Build());
        }