Exemplo n.º 1
0
        public void AvailableMigrations_returns_empty_for_invalid_versions(
            VersionedElementInfo element)
        {
            var migrations = element.AvailableMigrations();

            migrations.Should().BeEmpty();
        }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
        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.");
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
 public static void ApplyMigration(VersionedElementInfo migrationInfo, Stream input, Stream output)
 {
     using var reader = XmlReader.Create(input);
     ApplyMigration(migrationInfo, reader, output);
 }
Exemplo n.º 9
0
 public void Per_element_xsl_migration_is_available(VersionedElementInfo elementInfo)
 {
     using var migrationXslStream = elementInfo.OpenMigrationXslStream();
     migrationXslStream.Should().NotBeNull();
 }