Index: Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/Helpers/SerializableIdValidator.cs =================================================================== diff -u -rfa3389c99cd0c94dfad0be6cb9c8a6a43df45e35 -r5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b --- Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/Helpers/SerializableIdValidator.cs (.../SerializableIdValidator.cs) (revision fa3389c99cd0c94dfad0be6cb9c8a6a43df45e35) +++ Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/Helpers/SerializableIdValidator.cs (.../SerializableIdValidator.cs) (revision 5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Text.RegularExpressions; namespace Riskeer.AssemblyTool.IO.Model.Helpers @@ -28,21 +29,19 @@ /// public static class SerializableIdValidator { + private static readonly Regex regex = new Regex(@"^[A-Za-z\\_][A-Za-z\\_\d\-\.]+$"); + /// - /// Validates whether is a valid id to be used - /// as an identifier in an xml context. + /// Throws when is invalid for use as an identifier in an xml context. /// /// The identifier to validate. - /// true when is valid, false otherwise. - public static bool Validate(string id) + /// Thrown when is invalid. + public static void ThrowIfInvalid(string id) { - if (string.IsNullOrWhiteSpace(id)) + if (string.IsNullOrWhiteSpace(id) || !regex.IsMatch(id)) { - return false; + throw new ArgumentException($@"'{nameof(id)}' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."); } - - var regex = new Regex(@"^[A-Za-z\\_][A-Za-z\\_\d\-\.]+$"); - return regex.IsMatch(id); } } } \ No newline at end of file Index: Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableAssembly.cs =================================================================== diff -u -rc902b44e0e5257db5527d8b3bdb836bfcc2ba7f8 -r5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b --- Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableAssembly.cs (.../SerializableAssembly.cs) (revision c902b44e0e5257db5527d8b3bdb836bfcc2ba7f8) +++ Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableAssembly.cs (.../SerializableAssembly.cs) (revision 5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b) @@ -73,10 +73,7 @@ IEnumerable failureMechanismSectionCollections, IEnumerable failureMechanismSections) { - if (!SerializableIdValidator.Validate(id)) - { - throw new ArgumentException($@"'{nameof(id)}' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."); - } + SerializableIdValidator.ThrowIfInvalid(id); if (lowerCorner == null) { Index: Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableAssessmentProcess.cs =================================================================== diff -u -rc902b44e0e5257db5527d8b3bdb836bfcc2ba7f8 -r5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b --- Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableAssessmentProcess.cs (.../SerializableAssessmentProcess.cs) (revision c902b44e0e5257db5527d8b3bdb836bfcc2ba7f8) +++ Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableAssessmentProcess.cs (.../SerializableAssessmentProcess.cs) (revision 5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b) @@ -50,10 +50,7 @@ public SerializableAssessmentProcess(string id, SerializableAssessmentSection assessmentSection) : this() { - if (!SerializableIdValidator.Validate(id)) - { - throw new ArgumentException($@"'{nameof(id)}' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."); - } + SerializableIdValidator.ThrowIfInvalid(id); if (assessmentSection == null) { Index: Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableAssessmentSection.cs =================================================================== diff -u -rc902b44e0e5257db5527d8b3bdb836bfcc2ba7f8 -r5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b --- Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableAssessmentSection.cs (.../SerializableAssessmentSection.cs) (revision c902b44e0e5257db5527d8b3bdb836bfcc2ba7f8) +++ Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableAssessmentSection.cs (.../SerializableAssessmentSection.cs) (revision 5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b) @@ -60,10 +60,7 @@ string name, IEnumerable geometry) : this() { - if (!SerializableIdValidator.Validate(id)) - { - throw new ArgumentException($@"'{nameof(id)}' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."); - } + SerializableIdValidator.ThrowIfInvalid(id); if (name == null) { Index: Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableCombinedFailureMechanismSectionAssembly.cs =================================================================== diff -u -rc902b44e0e5257db5527d8b3bdb836bfcc2ba7f8 -r5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b --- Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableCombinedFailureMechanismSectionAssembly.cs (.../SerializableCombinedFailureMechanismSectionAssembly.cs) (revision c902b44e0e5257db5527d8b3bdb836bfcc2ba7f8) +++ Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableCombinedFailureMechanismSectionAssembly.cs (.../SerializableCombinedFailureMechanismSectionAssembly.cs) (revision 5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b) @@ -54,10 +54,7 @@ SerializableFailureMechanismSectionAssemblyResult combinedSectionResult) : this() { - if (!SerializableIdValidator.Validate(id)) - { - throw new ArgumentException($@"'{nameof(id)}' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."); - } + SerializableIdValidator.ThrowIfInvalid(id); if (totalAssemblyResult == null) { Index: Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableFailureMechanism.cs =================================================================== diff -u -rc70b456800bddb4bb2952abeb592a3f4368490dd -r5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b --- Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableFailureMechanism.cs (.../SerializableFailureMechanism.cs) (revision c70b456800bddb4bb2952abeb592a3f4368490dd) +++ Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableFailureMechanism.cs (.../SerializableFailureMechanism.cs) (revision 5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b) @@ -54,10 +54,7 @@ SerializableFailureMechanismAssemblyResult failureMechanismAssemblyResult) : this() { - if (!SerializableIdValidator.Validate(id)) - { - throw new ArgumentException($@"'{nameof(id)}' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."); - } + SerializableIdValidator.ThrowIfInvalid(id); if (totalAssemblyResult == null) { Index: Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableFailureMechanismSection.cs =================================================================== diff -u -rc902b44e0e5257db5527d8b3bdb836bfcc2ba7f8 -r5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b --- Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableFailureMechanismSection.cs (.../SerializableFailureMechanismSection.cs) (revision c902b44e0e5257db5527d8b3bdb836bfcc2ba7f8) +++ Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableFailureMechanismSection.cs (.../SerializableFailureMechanismSection.cs) (revision 5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b) @@ -66,10 +66,7 @@ SerializableFailureMechanismSectionType sectionType, SerializableAssemblyMethod? assemblyMethod = null) { - if (!SerializableIdValidator.Validate(id)) - { - throw new ArgumentException($@"'{nameof(id)}' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."); - } + SerializableIdValidator.ThrowIfInvalid(id); if (failureMechanismSectionCollection == null) { Index: Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableFailureMechanismSectionAssembly.cs =================================================================== diff -u -r2e0c73beb0dd7c601db10219002a669f58232fed -r5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b --- Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableFailureMechanismSectionAssembly.cs (.../SerializableFailureMechanismSectionAssembly.cs) (revision 2e0c73beb0dd7c601db10219002a669f58232fed) +++ Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableFailureMechanismSectionAssembly.cs (.../SerializableFailureMechanismSectionAssembly.cs) (revision 5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b) @@ -52,10 +52,7 @@ SerializableFailureMechanismSectionAssemblyResult sectionResult) : this() { - if (!SerializableIdValidator.Validate(id)) - { - throw new ArgumentException($@"'{nameof(id)}' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."); - } + SerializableIdValidator.ThrowIfInvalid(id); if (failureMechanism == null) { Index: Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableFailureMechanismSectionCollection.cs =================================================================== diff -u -rc902b44e0e5257db5527d8b3bdb836bfcc2ba7f8 -r5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b --- Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableFailureMechanismSectionCollection.cs (.../SerializableFailureMechanismSectionCollection.cs) (revision c902b44e0e5257db5527d8b3bdb836bfcc2ba7f8) +++ Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableFailureMechanismSectionCollection.cs (.../SerializableFailureMechanismSectionCollection.cs) (revision 5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b) @@ -43,10 +43,7 @@ /// Thrown when is invalid. public SerializableFailureMechanismSectionCollection(string id) { - if (!SerializableIdValidator.Validate(id)) - { - throw new ArgumentException($@"'{nameof(id)}' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."); - } + SerializableIdValidator.ThrowIfInvalid(id); Id = id; } Index: Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableTotalAssemblyResult.cs =================================================================== diff -u -rc902b44e0e5257db5527d8b3bdb836bfcc2ba7f8 -r5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b --- Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableTotalAssemblyResult.cs (.../SerializableTotalAssemblyResult.cs) (revision c902b44e0e5257db5527d8b3bdb836bfcc2ba7f8) +++ Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.IO/Model/SerializableTotalAssemblyResult.cs (.../SerializableTotalAssemblyResult.cs) (revision 5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b) @@ -49,10 +49,7 @@ SerializableAssessmentProcess assessmentProcess, SerializableAssessmentSectionAssemblyResult assessmentSectionAssemblyResult) : this() { - if (!SerializableIdValidator.Validate(id)) - { - throw new ArgumentException($@"'{nameof(id)}' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."); - } + SerializableIdValidator.ThrowIfInvalid(id); if (assessmentProcess == null) { Index: Riskeer/AssemblyTool/test/Riskeer.AssemblyTool.IO.Test/Model/Helpers/SerializableIdValidatorTest.cs =================================================================== diff -u -rfa3389c99cd0c94dfad0be6cb9c8a6a43df45e35 -r5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b --- Riskeer/AssemblyTool/test/Riskeer.AssemblyTool.IO.Test/Model/Helpers/SerializableIdValidatorTest.cs (.../SerializableIdValidatorTest.cs) (revision fa3389c99cd0c94dfad0be6cb9c8a6a43df45e35) +++ Riskeer/AssemblyTool/test/Riskeer.AssemblyTool.IO.Test/Model/Helpers/SerializableIdValidatorTest.cs (.../SerializableIdValidatorTest.cs) (revision 5c5ccd7cfa27b2fa314f4fc00047e99fe199cb0b) @@ -19,6 +19,8 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; +using Core.Common.TestUtil; using NUnit.Framework; using Riskeer.AssemblyTool.IO.Model.Helpers; @@ -31,13 +33,10 @@ [TestCase("AValidId1-2.3")] [TestCase("_AValidId1-2.3")] [TestCase("aValidId1-2.3")] - public void Validate_WithValidIds_ReturnsTrue(string validId) + public void ThrowIfInvalid_WithValidIds_DoesNotThrow(string validId) { - // Call - bool result = SerializableIdValidator.Validate(validId); - - // Assert - Assert.IsTrue(result); + // Call & Assert + SerializableIdValidator.ThrowIfInvalid(validId); } [Test] @@ -56,13 +55,14 @@ [TestCase("")] [TestCase(" ")] [TestCase(null)] - public void Validate_WithInvalidIds_ReturnsFalse(string invalidId) + public void Validate_WithInvalidIds_ThrowsArgumentException(string invalidId) { // Call - bool result = SerializableIdValidator.Validate(invalidId); + void Call() => SerializableIdValidator.ThrowIfInvalid(invalidId); // Assert - Assert.IsFalse(result); + const string expectedMessage = "'id' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(Call, expectedMessage); } } } \ No newline at end of file