//-----------------------------------------------------------------------
//
// Copyright (c) 2009 Deltares. All rights reserved.
//
// B.S.T. The
// tom.the@deltares.nl
// 04-09-2009
// Class which calculates the predicted and monitored piping length
//-----------------------------------------------------------------------
using Deltares.Geometry;
namespace Deltares.Dam.Tests
{
using System;
using Deltares.Dam.Data;
using NUnit.Framework;
[TestFixture]
public class GageDikeCalculatorTest
{
[Test]
public void CanCalculatePredictedPipingLengthForExperiment1()
{
const double cTolerance = 0.0001;
var gageDikeCalculator = new GageDikeCalculator();
gageDikeCalculator.ijkdijkPipingLengthPredictionParameter = 0.66;
Assert.AreEqual(0.0000, gageDikeCalculator.CalculatePredictedPipingLength(0.2).Value, cTolerance);
Assert.AreEqual(0.0015, gageDikeCalculator.CalculatePredictedPipingLength(0.4).Value, cTolerance);
Assert.AreEqual(0.0121, gageDikeCalculator.CalculatePredictedPipingLength(0.6).Value, cTolerance);
Assert.AreEqual(0.0542, gageDikeCalculator.CalculatePredictedPipingLength(0.8).Value, cTolerance);
Assert.AreEqual(0.1729, gageDikeCalculator.CalculatePredictedPipingLength(1.0).Value, cTolerance);
Assert.AreEqual(0.4461, gageDikeCalculator.CalculatePredictedPipingLength(1.2).Value, cTolerance);
Assert.AreEqual(0.9945, gageDikeCalculator.CalculatePredictedPipingLength(1.4).Value, cTolerance);
Assert.AreEqual(1.9913, gageDikeCalculator.CalculatePredictedPipingLength(1.6).Value, cTolerance);
Assert.AreEqual(3.6740, gageDikeCalculator.CalculatePredictedPipingLength(1.8).Value, cTolerance);
Assert.AreEqual(6.3544, gageDikeCalculator.CalculatePredictedPipingLength(2.0).Value, cTolerance);
Assert.AreEqual(10.4308, gageDikeCalculator.CalculatePredictedPipingLength(2.2).Value, cTolerance);
Assert.AreEqual(16.3990, gageDikeCalculator.CalculatePredictedPipingLength(2.4).Value, cTolerance);
Assert.AreEqual(24.8646, gageDikeCalculator.CalculatePredictedPipingLength(2.6).Value, cTolerance);
Assert.AreEqual(36.5546, gageDikeCalculator.CalculatePredictedPipingLength(2.8).Value, cTolerance);
Assert.AreEqual(52.3299, gageDikeCalculator.CalculatePredictedPipingLength(3.0).Value, cTolerance);
}
public void CanCalculatePredictedPipingLengthForExperiment2()
{
const double cTolerance = 0.0001;
var gageDikeCalculator = new GageDikeCalculator();
gageDikeCalculator.ijkdijkPipingLengthPredictionParameter = 0.42;
Assert.AreEqual(0.0000, gageDikeCalculator.CalculatePredictedPipingLength(0.2).Value, cTolerance);
Assert.AreEqual(0.0001, gageDikeCalculator.CalculatePredictedPipingLength(0.4).Value, cTolerance);
Assert.AreEqual(0.0012, gageDikeCalculator.CalculatePredictedPipingLength(0.6).Value, cTolerance);
Assert.AreEqual(0.0052, gageDikeCalculator.CalculatePredictedPipingLength(0.8).Value, cTolerance);
Assert.AreEqual(0.0165, gageDikeCalculator.CalculatePredictedPipingLength(1.0).Value, cTolerance);
Assert.AreEqual(0.0425, gageDikeCalculator.CalculatePredictedPipingLength(1.2).Value, cTolerance);
Assert.AreEqual(0.0948, gageDikeCalculator.CalculatePredictedPipingLength(1.4).Value, cTolerance);
Assert.AreEqual(0.1899, gageDikeCalculator.CalculatePredictedPipingLength(1.6).Value, cTolerance);
Assert.AreEqual(0.3503, gageDikeCalculator.CalculatePredictedPipingLength(1.8).Value, cTolerance);
Assert.AreEqual(0.6058, gageDikeCalculator.CalculatePredictedPipingLength(2.0).Value, cTolerance);
Assert.AreEqual(0.9945, gageDikeCalculator.CalculatePredictedPipingLength(2.2).Value, cTolerance);
Assert.AreEqual(1.5635, gageDikeCalculator.CalculatePredictedPipingLength(2.4).Value, cTolerance);
Assert.AreEqual(2.3705, gageDikeCalculator.CalculatePredictedPipingLength(2.6).Value, cTolerance);
Assert.AreEqual(3.4851, gageDikeCalculator.CalculatePredictedPipingLength(2.8).Value, cTolerance);
Assert.AreEqual(4.9891, gageDikeCalculator.CalculatePredictedPipingLength(3.0).Value, cTolerance);
}
[Test]
public void CanCalculateMonitoredPipingLength()
{
const double cToleranceLength = 0.6;
var headLine = new PolyLine();
headLine.Points.Add(new GeometryPoint(0.0000,0,0.0000));
headLine.Points.Add(new GeometryPoint(4.9000,0,0.8000));
headLine.Points.Add(new GeometryPoint(5.1000,0,0.7500));
headLine.Points.Add(new GeometryPoint(9.9000,0,1.3500));
headLine.Points.Add(new GeometryPoint(10.1000,0,1.4500));
headLine.Points.Add(new GeometryPoint(20.0000,0,3.7000));
headLine.Points.Add(new GeometryPoint(30.0000,0,5.9000));
headLine.Points.Add(new GeometryPoint(40.0000,0,8.0000));
var gageDikeCalculator = new GageDikeCalculator();
double? pipingLength = gageDikeCalculator.CalculateMonitoredPipingLength(headLine);
Assert.AreEqual(19.2472, pipingLength.Value, cToleranceLength);
}
}
}