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());