Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs =================================================================== diff -u -r2094 -r2101 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 2094) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 2101) @@ -82,14 +82,15 @@ } [Test] + [TestCase("segment_12_2_1D1")] // Between "segment_12" and "_2_1D1" there are 2 illegal characters (1F hex) // This should be a better exception type and exception message [ExpectedException(typeof(System.InvalidOperationException))] - public void GivenDataSetContainingIllegalCharactersWhenWritingXmlThenRaiseExceptionWithClearMessage() + public void GivenDataSetContainingIllegalCharactersWhenWritingXmlThenRaiseExceptionWithClearMessage(string id) { // Given DataSet Containing Illegal Characters DamProjectData expectedDamProjectData = FactoryForDamProjectData.CreateExampleDamProjectData(); var location = expectedDamProjectData.Dike.Locations[0]; - location.Name = "segment_12_2_1D1"; // Between "segment_12" and "_2_1D1" there are 2 illegal characters (1F hex) + location.Name = id; // When Writing Xml string xmlString; @@ -102,6 +103,45 @@ CompareDamProjectData(actualDamProjectData, expectedDamProjectData); } + + [Test] + [TestCase("ABCDEFGHIJLMNOPQRSTUVWXYZ")] + [TestCase("A")] + [TestCase("Z")] + [TestCase("K")] + [TestCase("JUSTATEST")] + [TestCase("abcdefghijklmnopqrstuvwxyz")] + [TestCase("a")] + [TestCase("z")] + [TestCase("k")] + [TestCase("justatest")] + [TestCase("01234567879")] + [TestCase("0")] + [TestCase("9")] + [TestCase("5")] + [TestCase("!#$%&()*+,-./")] + [TestCase(":;<=>?@")] + [TestCase(@"[\]^_`")] + [TestCase("{|}~")] + [TestCase("!")] + public void GivenDataSetContainingIdWithLegalCharactersWhenWritingXmlThenSucceeds(string id) + { + // Given DataSet Containing Illegal Characters + DamProjectData expectedDamProjectData = FactoryForDamProjectData.CreateExampleDamProjectData(); + var location = expectedDamProjectData.Dike.Locations[0]; + location.Name = id; + + // When Writing Xml + string xmlString; + Input input = FillXmlInputFromDam.CreateInput(expectedDamProjectData); + xmlString = DamXmlSerialization.SaveInputAsXmlString(input); + + // Then Raise Exception With Clear Message() + input = DamXmlSerialization.LoadInputFromXmlString(xmlString); + DamProjectData actualDamProjectData = FillDamFromXmlInput.CreateDamProjectData(input); + CompareDamProjectData(actualDamProjectData, expectedDamProjectData); + + } private void CompareDamProjectData(DamProjectData actual, DamProjectData expected) { Assert.AreEqual(FactoryForDamProjectData.ExpectedAnalysisType, DamProjectCalculationSpecification.SelectedAnalysisType);