示例#1
0
        public bool Export()
        {
            if (!AreSpecificFailureMechanismsUniquelyNamed())
            {
                log.Error(Resources.AssemblyExporter_Specific_failure_mechanisms_must_have_a_unique_name);
                return(false);
            }

            ExportableAssessmentSection exportableAssessmentSection = CreateExportableAssessmentSection();

            if (exportableAssessmentSection == null)
            {
                log.Error(Resources.AssemblyExporter_No_AssemblyResult_exported_Check_results_for_details);
                return(false);
            }

            try
            {
                SerializableAssemblyWriter.WriteAssembly(SerializableAssemblyCreator.Create(exportableAssessmentSection),
                                                         filePath);
            }
            catch (AssemblyCreatorException)
            {
                log.Error(Resources.AssemblyExporter_No_AssemblyResult_exported_Check_results_for_details);
                return(false);
            }
            catch (CriticalFileWriteException e)
            {
                log.ErrorFormat(Resources.AssemblyExporter_Error_Exception_0_no_AssemblyResult_exported, e.Message);
                return(false);
            }

            return(true);
        }
        public void WriteAssembly_FullyConfiguredAssembly_ReturnsExpectedFile()
        {
            // Setup
            string folderPath = TestHelper.GetScratchPadPath(nameof(WriteAssembly_FullyConfiguredAssembly_ReturnsExpectedFile));

            Directory.CreateDirectory(folderPath);
            string filePath = Path.Combine(folderPath, "actualAssembly.gml");

            SerializableAssembly assembly = CreateSerializableAssembly();

            try
            {
                // Call
                SerializableAssemblyWriter.WriteAssembly(assembly, filePath);

                // Assert
                Assert.IsTrue(File.Exists(filePath));

                string pathToExpectedFile = Path.Combine(testDataPath, "configuredAssembly.gml");
                string expectedXml        = File.ReadAllText(pathToExpectedFile);
                string actualXml          = File.ReadAllText(filePath);
                Assert.AreEqual(expectedXml, actualXml);
            }
            finally
            {
                DirectoryHelper.TryDelete(folderPath);
            }
        }
        public void WriteAssembly_FilePathNull_ThrowsArgumentNullException()
        {
            // Call
            void Call() => SerializableAssemblyWriter.WriteAssembly(new SerializableAssembly(), null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("filePath", exception.ParamName);
        }
        public void WriteAssembly_SerializableAssemblyNull_ThrowsArgumentNullException()
        {
            // Call
            void Call() => SerializableAssemblyWriter.WriteAssembly(null, string.Empty);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("serializableAssembly", exception.ParamName);
        }
        public void WriteAssembly_FilePathInvalid_ThrowsCriticalFileWriteException(string filePath)
        {
            // Call
            void Call() => SerializableAssemblyWriter.WriteAssembly(new SerializableAssembly(), filePath);

            // Assert
            var exception = Assert.Throws <CriticalFileWriteException>(Call);

            Assert.AreEqual($"Er is een onverwachte fout opgetreden tijdens het schrijven van het bestand '{filePath}'.", exception.Message);
            Assert.IsInstanceOf <ArgumentException>(exception.InnerException);
        }
        public void WriteAssembly_FileInUse_ThrowsCriticalFileWriteException()
        {
            // Setup
            string filePath = TestHelper.GetScratchPadPath(nameof(WriteAssembly_FileInUse_ThrowsCriticalFileWriteException));

            using (var fileDisposeHelper = new FileDisposeHelper(filePath))
            {
                fileDisposeHelper.LockFiles();

                // Call
                void Call() => SerializableAssemblyWriter.WriteAssembly(new SerializableAssembly(), filePath);

                // Assert
                var exception = Assert.Throws <CriticalFileWriteException>(Call);
                Assert.AreEqual($"Er is een onverwachte fout opgetreden tijdens het schrijven van het bestand '{filePath}'.", exception.Message);
                Assert.IsInstanceOf <IOException>(exception.InnerException);
            }
        }
        public void WriteAssembly_InvalidDirectoryRights_ThrowsCriticalFileWriteException()
        {
            // Setup
            const string directoryName = nameof(WriteAssembly_InvalidDirectoryRights_ThrowsCriticalFileWriteException);
            string       directoryPath = TestHelper.GetScratchPadPath(directoryName);

            using (var disposeHelper = new DirectoryDisposeHelper(TestHelper.GetScratchPadPath(), directoryName))
            {
                string filePath = Path.Combine(directoryPath, "test.bnd");
                disposeHelper.LockDirectory(FileSystemRights.Write);

                // Call
                void Call() => SerializableAssemblyWriter.WriteAssembly(new SerializableAssembly(), filePath);

                // Assert
                var exception = Assert.Throws <CriticalFileWriteException>(Call);
                Assert.AreEqual($"Er is een onverwachte fout opgetreden tijdens het schrijven van het bestand '{filePath}'.", exception.Message);
                Assert.IsInstanceOf <UnauthorizedAccessException>(exception.InnerException);
            }
        }
        public void WriteAssembly_ValidData_ValidFile()
        {
            // Setup
            string filePath = TestHelper.GetScratchPadPath(nameof(WriteAssembly_ValidData_ValidFile));
            SerializableAssembly assembly = CreateSerializableAssembly();

            try
            {
                // Call
                SerializableAssemblyWriter.WriteAssembly(assembly, filePath);

                // Assert
                Assert.IsTrue(File.Exists(filePath));
                string fileContent = File.ReadAllText(filePath);
                Assert.AreEqual(GetSerializedAssembly(assembly), fileContent);
            }
            finally
            {
                File.Delete(filePath);
            }
        }
        public void GivenFullyConfiguredAssembly_WhenWrittenToFile_ThenValidFileCreated()
        {
            // Given
            SerializableAssembly assembly = CreateSerializableAssembly();
            string filePath = TestHelper.GetScratchPadPath(nameof(GivenFullyConfiguredAssembly_WhenWrittenToFile_ThenValidFileCreated));

            try
            {
                // When
                SerializableAssemblyWriter.WriteAssembly(assembly, filePath);

                // Then
                Assert.IsTrue(File.Exists(filePath));
                string fileContent = File.ReadAllText(filePath);
                Console.WriteLine(fileContent);

                var schema = new XmlSchemaSet();
                schema.Add("http://localhost/standaarden/assemblage", Path.Combine(testDataPath, "assemblage.xsd"));
                XDocument doc = XDocument.Parse(fileContent);

                var msg = string.Empty;
                doc.Validate(schema, (o, e) =>
                {
                    msg += e.Message + Environment.NewLine;
                });
                if (msg == string.Empty)
                {
                    Assert.Pass("Serialized document is valid" + Environment.NewLine);
                }
                else
                {
                    Assert.Fail("Serialized document is invalid:" + Environment.NewLine + msg);
                }
            }
            finally
            {
                File.Delete(filePath);
            }
        }
        public void WriteAssembly_InvalidData_ThrowsCriticalFileWriteException()
        {
            // Setup
            string filePath = TestHelper.GetScratchPadPath(nameof(WriteAssembly_InvalidData_ThrowsCriticalFileWriteException));

            var assembly = new SerializableAssembly(
                "id",
                new Point2D(0.0, 10.0),
                new Point2D(10.0, 20.0),
                new SerializableAssessmentSection(),
                new SerializableAssessmentProcess(),
                new SerializableTotalAssemblyResult(),
                new[]
            {
                new SerializableFailureMechanism()
            },
                Enumerable.Empty <SerializableFailureMechanismSectionAssembly>(),
                Enumerable.Empty <SerializableCombinedFailureMechanismSectionAssembly>(),
                Enumerable.Empty <SerializableFailureMechanismSectionCollection>(),
                Enumerable.Empty <SerializableFailureMechanismSection>());

            try
            {
                // Call
                void Call() => SerializableAssemblyWriter.WriteAssembly(assembly, filePath);

                // Assert
                var exception = Assert.Throws <CriticalFileWriteException>(Call);
                Assert.AreEqual($"Er is een onverwachte fout opgetreden tijdens het schrijven van het bestand '{filePath}'.", exception.Message);
                Assert.IsInstanceOf <InvalidOperationException>(exception.InnerException);
            }
            finally
            {
                File.Delete(filePath);
            }
        }