public void CfgFileMetadataProgramInformation_CreateUsingRomWithUnknownMetadataBlockType_ContainsValidMetadata()
        {
            var romPaths = CfgFileMetadataProgramInformationTestStorageAccess.Initialize(TestRomResources.TestBinPath, TestRomResources.TestCfgMetadataPath);
            var rom      = Rom.AsSpecificRomType <BinFormatRom>(Rom.Create(romPaths[0], romPaths[1]));

            rom.MetadataCacheEnabled = true;
            Assert.NotNull(rom.Metadata);
            var metadata = (List <CfgVarMetadataBlock>)rom.Metadata;

            metadata.Add(new CfgVarMetadataFeatureCompatibility(CfgVarMetadataIdTag.Invalid));

            var cfgMetadataInformation = new CfgFileMetadataProgramInformation(rom);

            Assert.NotNull(cfgMetadataInformation.Metadata);
        }
        public void CfgFileMetadataProgramInformation_CreateUsingRomWithZeroSizeJlpFlash_ContainsValidMetadata()
        {
            IReadOnlyList <string> romPaths;
            var storage = CfgFileMetadataProgramInformationTestStorageAccess.Initialize(out romPaths, TestRomResources.TestBinPath, TestRomResources.TestCfgMetadataPath);

            using (var cfgFile = storage.Open(romPaths[1]))
            {
                var cfgContent = "[vars]\njlp=2\njlp_flash=0\n";
                var cfgBytes   = Encoding.UTF8.GetBytes(cfgContent);
                cfgFile.Write(cfgBytes, 0, cfgBytes.Length);
                cfgFile.SetLength(cfgBytes.Length);
            }
            var rom = Rom.AsSpecificRomType <BinFormatRom>(Rom.Create(romPaths[0], romPaths[1]));

            rom.MetadataCacheEnabled = true;
            Assert.NotNull(rom.Metadata);

            var cfgMetadataInformation = new CfgFileMetadataProgramInformation(rom);

            Assert.NotNull(cfgMetadataInformation.Metadata);
            Assert.Equal((ushort)0, cfgMetadataInformation.Features.JlpFlashMinimumSaveSectors);
        }