Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableAssembly.cs =================================================================== diff -u -ra30b67748bed77736f62b6b3c30c82649bb9cf4e -r6405d29291fd0a248baa49eac46911b0c9bb35af --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableAssembly.cs (.../SerializableAssembly.cs) (revision a30b67748bed77736f62b6b3c30c82649bb9cf4e) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableAssembly.cs (.../SerializableAssembly.cs) (revision 6405d29291fd0a248baa49eac46911b0c9bb35af) @@ -24,6 +24,7 @@ using System.Xml.Serialization; using Core.Common.Base.Geometry; using Ringtoets.AssemblyTool.IO.Model.Gml; +using Ringtoets.AssemblyTool.IO.Model.Helpers; namespace Ringtoets.AssemblyTool.IO.Model { @@ -58,8 +59,8 @@ /// belong to the assembly. /// The collection of that /// belong to the assembly. - /// Thrown when is null or empty. - /// Thrown when any parameter except is null. + /// Thrown when is invalid. + /// Thrown when any parameter is null. public SerializableAssembly(string id, Point2D lowerCorner, Point2D upperCorner, @@ -72,9 +73,9 @@ IEnumerable failureMechanismSectionCollections, IEnumerable failureMechanismSections) { - if (string.IsNullOrEmpty(id)) + if (!IdValidator.Validate(id)) { - throw new ArgumentException($@"'{nameof(id)}' must have a value."); + throw new ArgumentException($@"'{nameof(id)}' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."); } if (lowerCorner == null) Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableAssemblyTest.cs =================================================================== diff -u -ra30b67748bed77736f62b6b3c30c82649bb9cf4e -r6405d29291fd0a248baa49eac46911b0c9bb35af --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableAssemblyTest.cs (.../SerializableAssemblyTest.cs) (revision a30b67748bed77736f62b6b3c30c82649bb9cf4e) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableAssemblyTest.cs (.../SerializableAssemblyTest.cs) (revision 6405d29291fd0a248baa49eac46911b0c9bb35af) @@ -1,4 +1,4 @@ -// Copyright (C) Stichting Deltares 2017. All rights reserved. +// Copyright (C) Stichting Deltares 2017. All rights reserved. // // This file is part of Ringtoets. // @@ -76,15 +76,40 @@ } [Test] - [TestCase(null)] + public void Constructor_IdNull_ThrowsArgumentNullException() + { + // Setup + var random = new Random(39); + + // Call + TestDelegate call = () => new SerializableAssembly(null, + new Point2D(random.NextDouble(), random.NextDouble()), + new Point2D(random.NextDouble(), random.NextDouble()), + new SerializableAssessmentSection(), + new SerializableAssessmentProcess(), + new SerializableTotalAssemblyResult(), + Enumerable.Empty(), + Enumerable.Empty(), + Enumerable.Empty(), + Enumerable.Empty(), + Enumerable.Empty()); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("id", exception.ParamName); + } + + [Test] + [TestCase(" ")] [TestCase("")] - public void Constructor_IdInvalid_ThrowsArgumentException(string id) + [TestCase(" InvalidId")] + public void Constructor_InvalidId_ThrowsArgumentNullException(string invalidId) { // Setup var random = new Random(39); // Call - TestDelegate call = () => new SerializableAssembly(id, + TestDelegate call = () => new SerializableAssembly(invalidId, new Point2D(random.NextDouble(), random.NextDouble()), new Point2D(random.NextDouble(), random.NextDouble()), new SerializableAssessmentSection(), @@ -97,7 +122,7 @@ Enumerable.Empty()); // Assert - const string expectedMessage = "'id' must have a value."; + const string expectedMessage = "'id' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."; TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage); } @@ -336,7 +361,7 @@ public void Constructor_WithValidData_ReturnsExpectedValues() { // Setup - const string id = "assembly id 1"; + const string id = "assemblyId1"; var random = new Random(39); var lowerCorner = new Point2D(random.NextDouble(), random.NextDouble());