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); }
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)); }
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); }
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()); }