//----------------------------------------------------------------------- // // Copyright (c) 2010 Deltares. All rights reserved. // // B.S.T.I.M. The // tom.the@deltares.nl // 17-09-2010 // Test for DAM BBN dll //----------------------------------------------------------------------- namespace Deltares.Piping.Test { using System; using System.IO; using NUnit.Framework; using Deltares.Piping.Data; [TestFixture] public class TestPipingDAMBBNDll { private const double cTolerance = 0.01; private const string sDGSDAMPipingBBN = @".\CalcDlls\\DAM Piping.bbnet"; [SetUp] public void SetUp() { } [Test] public void TestCalculate() { IntPtr calcHandle = PipingDAMBBNDll.CreateHandle(); try { string filenameDGSDAMPipingBBN = Path.GetFullPath(sDGSDAMPipingBBN); PipingDAMBBNDll.SetBBNFilename(calcHandle, sDGSDAMPipingBBN); PipingDAMBBNInputStruct pipingDAMBBNDllInput = new PipingDAMBBNInputStruct(); PipingDAMBBNInputStruct pipingDAMBBNDllInputCheck = new PipingDAMBBNInputStruct(); pipingDAMBBNDllInput.CrackFactor = 0.9; pipingDAMBBNDllInput.IsWellVisible = true; pipingDAMBBNDllInput.IsSandBoilVisible = true; pipingDAMBBNDllInput.IsSandBoilCalculated = false; pipingDAMBBNDllInput.IsOpenPipeCalculated = true; pipingDAMBBNDllInput.HistoricSandBoil = (int)DAMPipingHistoricSandBoil.False; pipingDAMBBNDllInput.CrackFactorAtMaxLevel = 1.1; pipingDAMBBNDllInput.CrackFactorSensitivity = 0.3; pipingDAMBBNDllInput.QualityOfSurvey = (int)DAMPipingQualityOfSurvey.High; pipingDAMBBNDllInput.ElapsedTimeSinceLastSurvey = (int)DAMPipingElapsedTimeSinceLastSurvey.Short; pipingDAMBBNDllInput.WaterLevelChange = -1.0; pipingDAMBBNDllInput.CalculatedSandBoilLevelDiff = -0.5; pipingDAMBBNDllInput.WaterLevelTrend = (int)DAMPipingWaterLevelTrend.AtTop; pipingDAMBBNDllInput.CalculatedOpenPipeLevelDiff = 0.5; pipingDAMBBNDllInput.HistoricMaxLevelComparison = (int)DAMPipingHistoricMaxLevelComparison.Same; PipingDAMBBNDll.SetInputParameters(calcHandle, pipingDAMBBNDllInput); PipingDAMBBNDll.GetInputParameters(calcHandle, ref pipingDAMBBNDllInputCheck); Assert.AreEqual(pipingDAMBBNDllInput.CrackFactor, pipingDAMBBNDllInputCheck.CrackFactor, cTolerance); Assert.AreEqual(pipingDAMBBNDllInput.IsWellVisible, pipingDAMBBNDllInputCheck.IsWellVisible); Assert.AreEqual(pipingDAMBBNDllInput.IsSandBoilVisible, pipingDAMBBNDllInputCheck.IsSandBoilVisible); Assert.AreEqual(pipingDAMBBNDllInput.IsOpenPipeCalculated, pipingDAMBBNDllInputCheck.IsOpenPipeCalculated); Assert.AreEqual(pipingDAMBBNDllInput.HistoricSandBoil, pipingDAMBBNDllInputCheck.HistoricSandBoil); Assert.AreEqual(pipingDAMBBNDllInput.CrackFactorAtMaxLevel, pipingDAMBBNDllInputCheck.CrackFactorAtMaxLevel); Assert.AreEqual(pipingDAMBBNDllInput.CrackFactorSensitivity, pipingDAMBBNDllInputCheck.CrackFactorSensitivity); Assert.AreEqual(pipingDAMBBNDllInput.HistoricMaxLevelComparison, pipingDAMBBNDllInputCheck.HistoricMaxLevelComparison); Assert.AreEqual(pipingDAMBBNDllInput.QualityOfSurvey, pipingDAMBBNDllInputCheck.QualityOfSurvey); Assert.AreEqual(pipingDAMBBNDllInput.WaterLevelChange, pipingDAMBBNDllInputCheck.WaterLevelChange); Assert.AreEqual(pipingDAMBBNDllInput.WaterLevelTrend, pipingDAMBBNDllInputCheck.WaterLevelTrend); Assert.AreEqual(pipingDAMBBNDllInput.CalculatedOpenPipeLevelDiff, pipingDAMBBNDllInputCheck.CalculatedOpenPipeLevelDiff); Assert.AreEqual(pipingDAMBBNDllInput.CalculatedSandBoilLevelDiff, pipingDAMBBNDllInputCheck.CalculatedSandBoilLevelDiff); Assert.AreEqual(pipingDAMBBNDllInput.ElapsedTimeSinceLastSurvey, pipingDAMBBNDllInputCheck.ElapsedTimeSinceLastSurvey); int calcResult = PipingDAMBBNDll.Calculate(calcHandle); PipingDAMBBNOutputStruct pipingDAMBBNDllOutput = new PipingDAMBBNOutputStruct(); PipingDAMBBNDll.GetOutputParameters(calcHandle, ref pipingDAMBBNDllOutput); Assert.AreEqual(0.19, pipingDAMBBNDllOutput.ChanceOpenPipeTrue, cTolerance); Assert.AreEqual(0.81, pipingDAMBBNDllOutput.ChanceOpenPipeFalse, cTolerance); pipingDAMBBNDllInput.HistoricSandBoil = (int)DAMPipingHistoricSandBoil.TrueAtHigherMaxLevel; PipingDAMBBNDll.SetInputParameters(calcHandle, pipingDAMBBNDllInput); calcResult = PipingDAMBBNDll.Calculate(calcHandle); pipingDAMBBNDllOutput = new PipingDAMBBNOutputStruct(); PipingDAMBBNDll.GetOutputParameters(calcHandle, ref pipingDAMBBNDllOutput); Assert.AreEqual(0.24, pipingDAMBBNDllOutput.ChanceOpenPipeTrue, cTolerance); Assert.AreEqual(0.76, pipingDAMBBNDllOutput.ChanceOpenPipeFalse, cTolerance); } finally { PipingDAMBBNDll.DestroyHandle(calcHandle); } } [Test] public void TestErrorMessage() { const string cErrorMessageFileNotFound = "File \"\" not found"; IntPtr calcHandle = PipingDAMBBNDll.CreateHandle(); try { PipingDAMBBNDll.SetBBNFilename(calcHandle, ""); PipingDAMBBNInputStruct pipingDAMBBNDllInput = new PipingDAMBBNInputStruct(); pipingDAMBBNDllInput.CrackFactor = 0.9; pipingDAMBBNDllInput.IsWellVisible = true; pipingDAMBBNDllInput.IsSandBoilVisible = true; pipingDAMBBNDllInput.IsSandBoilCalculated = false; pipingDAMBBNDllInput.IsOpenPipeCalculated = true; pipingDAMBBNDllInput.HistoricSandBoil = (int)DAMPipingHistoricSandBoil.False; pipingDAMBBNDllInput.CrackFactorAtMaxLevel = 1.1; pipingDAMBBNDllInput.CrackFactorSensitivity = 0.3; pipingDAMBBNDllInput.QualityOfSurvey = (int)DAMPipingQualityOfSurvey.High; pipingDAMBBNDllInput.ElapsedTimeSinceLastSurvey = (int)DAMPipingElapsedTimeSinceLastSurvey.Short; pipingDAMBBNDllInput.WaterLevelChange = -1.0; pipingDAMBBNDllInput.CalculatedSandBoilLevelDiff = -0.5; pipingDAMBBNDllInput.WaterLevelTrend = (int)DAMPipingWaterLevelTrend.AtTop; pipingDAMBBNDllInput.CalculatedOpenPipeLevelDiff = 0.5; pipingDAMBBNDllInput.HistoricMaxLevelComparison = (int)DAMPipingHistoricMaxLevelComparison.Same; PipingDAMBBNDll.SetInputParameters(calcHandle, pipingDAMBBNDllInput); int calcResult = PipingDAMBBNDll.Calculate(calcHandle); Assert.AreEqual(-1, calcResult); //string errorMessage = PipingDAMBBNDll.GetErrorMessage(calcHandle); Crashes the unit test. //Assert.AreEqual(cErrorMessageFileNotFound, errorMessage); } finally { PipingDAMBBNDll.DestroyHandle(calcHandle); } } } }