Index: DamClients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs =================================================================== diff -u -r2468 -r2510 --- DamClients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 2468) +++ DamClients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 2510) @@ -617,7 +617,27 @@ Assert.AreEqual(0, result.Differences.Count, "Differences found read/write Input object"); } - } + [Test] + [ExpectedException(typeof(NullReferenceException), ExpectedMessage = "Location 'Location 1', scenario '1' has no river level")] + public void RaiseExceptionWhenRiverLevelIsMissing() + { + // Given DataSet with undefined riverlevel + DamProjectData expectedDamProjectData = CreateExampleDamProjectData(); + var scenario = expectedDamProjectData.WaterBoard.Dikes[0].Locations[0].Scenarios[0]; + scenario.RiverLevel = null; + + // When Writing Xml + string xmlString; + Input input = FillXmlInputFromDamUi.CreateInput(expectedDamProjectData); + xmlString = DamXmlSerialization.SaveInputAsXmlString(input); + + // Then Raise Exception With Clear Message() + input = DamXmlSerialization.LoadInputFromXmlString(xmlString); + DamProjectData actualDamProjectData = FillDamUiFromXmlInput.CreateDamProjectData(input); + CompareDamProjectData(actualDamProjectData, expectedDamProjectData); + + } + } } Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs =================================================================== diff -u -r2422 -r2510 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 2422) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 2510) @@ -409,6 +409,17 @@ { throw new NullReferenceException("No scenarios defined in location"); } + else + { + foreach (var scenario in location.Scenarios) + { + if (scenario.RiverLevel == null) + { + throw new NullReferenceException(string.Format("Location '{0}', scenario '{1}' has no river level", + location.Name, scenario.LocationScenarioID)); + } + } + } } if (dike.SurfaceLines2 == null) { @@ -587,7 +598,7 @@ { var designScenario = location.Scenarios[j]; var inputDesignScenario = new LocationDesignScenario(); - inputDesignScenario.RiverLevel = designScenario.RiverLevel ?? 0.0; + inputDesignScenario.RiverLevel = designScenario.RiverLevel.Value; inputDesignScenario.Id = designScenario.LocationScenarioID; inputDesignScenario.RiverLevelLowSpecified = designScenario.RiverLevelLow.HasValue;