public void AvailableMigrations_returns_empty_for_invalid_versions( VersionedElementInfo element) { var migrations = element.AvailableMigrations(); migrations.Should().BeEmpty(); }
public void ReadMigrated_on_handled_empty_elements_succeeds(VersionedElementInfo elementInfo) { using var emptyElementStream = CreateEmptyElementStream(elementInfo); var(reader, info) = DataVersionManagement.ReadMigrated(emptyElementStream); using (reader) { GetVersion(reader).Should().Be(info.Version); } }
public void AvailableMigrations_returns_migration_for_previous_migratable_version(RootElement rootElement) { var previous = BattleScribeVersion.V2x01; var element = new VersionedElementInfo(rootElement, previous); var migrations = element.AvailableMigrations(); migrations.Should().HaveCountGreaterOrEqualTo(1, "because we're migrating from some previous version."); }
public void ReadRootElementInfo_succeeds(RootElement rootElement, string versionText) { var elementInfo = new VersionedElementInfo( rootElement, BattleScribeVersion.Parse(versionText)); using var stream = CreateEmptyElementStream(elementInfo); var result = DataVersionManagement.ReadRootElementInfo(stream); result.Should().Be(elementInfo); }
public void Compare_returns_expected_result( RootElement root1, string text1, RootElement root2, string text2, int expectedResult) { var element1 = CreateVersionedInfo(root1, text1); var element2 = CreateVersionedInfo(root2, text2); var result = VersionedElementInfo.Compare(element1, element2); result.Should().Be(expectedResult); }
public static void ApplyMigration(VersionedElementInfo migrationInfo, XmlReader input, Stream output) { var xslt = CreateXslt(); using var writer = Utilities.BattleScribeConformantXmlWriter.Create(output, new XmlWriterSettings { CloseOutput = false }); xslt.Transform(input, writer); XslCompiledTransform CreateXslt() { using var migrationXlsStream = migrationInfo.OpenMigrationXslStream(); using var stylesheetReader = XmlReader.Create(migrationXlsStream, new XmlReaderSettings { CloseInput = false }); var transform = new XslCompiledTransform(); transform.Load(stylesheetReader); return(transform); } }
private static Stream CreateEmptyElementStream(VersionedElementInfo elementInfo) { var xmlContent = string.Format( CultureInfo.InvariantCulture, "<{0} {1}='{2}' xmlns='{3}' />", elementInfo.Element.Info().XmlElementName, DataVersionManagement.BattleScribeVersionAttributeName, elementInfo.Version.BattleScribeString, elementInfo.Element.Info().Namespace); var xmlStream = new MemoryStream(); using (var writer = CreateNotClosingStreamWriter(xmlStream)) { writer.Write(xmlContent); writer.Flush(); } xmlStream.Position = 0; return(xmlStream); }
public static void ApplyMigration(VersionedElementInfo migrationInfo, Stream input, Stream output) { using var reader = XmlReader.Create(input); ApplyMigration(migrationInfo, reader, output); }
public void Per_element_xsl_migration_is_available(VersionedElementInfo elementInfo) { using var migrationXslStream = elementInfo.OpenMigrationXslStream(); migrationXslStream.Should().NotBeNull(); }