// Copyright (C) Stichting Deltares 2017. All rights reserved.
//
// This file is part of Ringtoets.
//
// Ringtoets is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
// All names, logos, and references to "Deltares" are registered trademarks of
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
using Ringtoets.MacroStabilityInwards.Primitives;
namespace Ringtoets.MacroStabilityInwards.Data.Test
{
[TestFixture]
public class MacroStabilityInwardsSoilProfileExtensionsTest
{
private readonly MacroStabilityInwardsSoilLayer[] testCaseOneAquiferLayer =
{
new MacroStabilityInwardsSoilLayer(2.1)
{
IsAquifer = true
}
};
private readonly MacroStabilityInwardsSoilLayer[] testCaseOneAquitardLayer =
{
new MacroStabilityInwardsSoilLayer(2.1)
{
IsAquifer = false
}
};
private readonly MacroStabilityInwardsSoilLayer[] testCaseOneCoverageLayer =
{
new MacroStabilityInwardsSoilLayer(2.1)
{
IsAquifer = false
},
new MacroStabilityInwardsSoilLayer(0.1)
{
IsAquifer = true
}
};
private readonly MacroStabilityInwardsSoilLayer[] testCaseTwoAquitardLayers =
{
new MacroStabilityInwardsSoilLayer(2.1)
{
IsAquifer = false
},
new MacroStabilityInwardsSoilLayer(1.1)
{
IsAquifer = false
}
};
private readonly MacroStabilityInwardsSoilLayer[] testCaseTwoAquiferLayers =
{
new MacroStabilityInwardsSoilLayer(2.1)
{
IsAquifer = true
},
new MacroStabilityInwardsSoilLayer(1.1)
{
IsAquifer = true
}
};
private readonly MacroStabilityInwardsSoilLayer[] testCaseTwoCoverageLayers =
{
new MacroStabilityInwardsSoilLayer(2.1)
{
IsAquifer = false
},
new MacroStabilityInwardsSoilLayer(1.1)
{
IsAquifer = false
},
new MacroStabilityInwardsSoilLayer(0.1)
{
IsAquifer = true
}
};
private readonly MacroStabilityInwardsSoilLayer[] testCaseOneAquiferLayerOneAquitardLayer =
{
new MacroStabilityInwardsSoilLayer(2.1)
{
IsAquifer = true
},
new MacroStabilityInwardsSoilLayer(1.1)
{
IsAquifer = false
}
};
private readonly MacroStabilityInwardsSoilLayer[] testCaseOneAquitardLayerOneAquiferLayer =
{
new MacroStabilityInwardsSoilLayer(2.1)
{
IsAquifer = false
},
new MacroStabilityInwardsSoilLayer(1.1)
{
IsAquifer = true
}
};
private readonly MacroStabilityInwardsSoilLayer[] testCaseTwoAquiferLayersOneAquitardLayerOneAquiferLayer =
{
new MacroStabilityInwardsSoilLayer(2.1)
{
IsAquifer = true
},
new MacroStabilityInwardsSoilLayer(1.1)
{
IsAquifer = true
},
new MacroStabilityInwardsSoilLayer(1.0)
{
IsAquifer = false
},
new MacroStabilityInwardsSoilLayer(0.5)
{
IsAquifer = true
}
};
private readonly MacroStabilityInwardsSoilLayer[] testCaseTwoCoverageLayersOneAquiferLayerOneAquitardLayer =
{
new MacroStabilityInwardsSoilLayer(2.1)
{
IsAquifer = false
},
new MacroStabilityInwardsSoilLayer(1.1)
{
IsAquifer = false
},
new MacroStabilityInwardsSoilLayer(1.0)
{
IsAquifer = true
},
new MacroStabilityInwardsSoilLayer(0.5)
{
IsAquifer = false
}
};
private MacroStabilityInwardsSoilProfile CreateTestProfile(MacroStabilityInwardsSoilLayer[] layers)
{
return new MacroStabilityInwardsSoilProfile(string.Empty, 0.0, layers, SoilProfileType.SoilProfile1D, 0);
}
#region GetTopmostConsecutiveAquiferLayerThicknessBelowLevel
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_NoAquiferLayer_ReturnsNaN()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquitardLayers);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.0);
// Assert
Assert.IsNaN(result);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_AquiferLayerAboveLevel_ReturnsNaN()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquiferLayerOneAquitardLayer);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.0);
// Assert
Assert.IsNaN(result);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_AquiferLayerCompletelyBelowLevel_ReturnAquiferLayerThickness()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquiferLayer);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(2.2);
// Assert
Assert.AreEqual(2.1, result, 1e-6);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_AquiferLayerPartlyBelowLevel_ReturnAquiferLayerThicknessUpTillLevel()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquiferLayer);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.6);
// Assert
Assert.AreEqual(1.6, result, 1e-6);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_AquiferLayerTopEqualToLevel_ReturnAquiferLayerThickness()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquiferLayer);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(2.1);
// Assert
Assert.AreEqual(2.1, result, 1e-6);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_AquiferLayerBottomEqualToLevel_ReturnsNaN()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquiferLayer);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(0.0);
// Assert
Assert.IsNaN(result);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_TwoAquiferLayersCompletelyBelowLevel_ReturnConsecutiveAquiferLayerThickness()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(2.2);
// Assert
Assert.AreEqual(2.1, result, 1e-6);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_TopmostAquiferLayerTopEqualToLevel_ReturnConsecutiveAquiferLayerThickness()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(2.1);
// Assert
Assert.AreEqual(2.1, result, 1e-6);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_TopmostAquiferLayerTopPartlyBelowLevel_ReturnConsecutiveAquiferLayerThickness()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(2.0);
// Assert
Assert.AreEqual(2.0, result, 1e-6);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_TopmostAquiferLayerCompletelyAboveLevel_ReturnBottomAquiferLayerThickness()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(0.5);
// Assert
Assert.AreEqual(0.5, result, 1e-6);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_BottomAquiferLayerTopEqualToLevel_BottomAquiferLayerThickness()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.1);
// Assert
Assert.AreEqual(1.1, result, 1e-6);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_TwoConsecutiveAquiferLayersAndOneNonConsecutiveAquiferLayer_ReturnConsecutiveAquiferLayerThicknessUpTillLevel()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayersOneAquitardLayerOneAquiferLayer);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.5);
// Assert
Assert.AreEqual(0.5, result, 1e-6);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_LevelBelowProfile_ReturnsNaN()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(-1.0);
// Assert
Assert.IsNaN(result);
}
#endregion
#region GetConsecutiveCoverageLayerThicknessBelowLevel
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_NoAquitardLayer_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(1.0);
// Assert
Assert.IsNaN(result);
}
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_AquitardLayerAboveLevel_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquitardLayerOneAquiferLayer);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(1.1);
// Assert
Assert.IsNaN(result);
}
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_OnlyAquitardLayer_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquitardLayer);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(2.2);
// Assert
Assert.IsNaN(result);
}
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_CoverageLayerCompletelyBelowLevel_ReturnAquitardLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneCoverageLayer);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(2.2);
// Assert
Assert.AreEqual(2.0, result, 1e-6);
}
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_CoverageLayerPartlyBelowLevel_ReturnCollectionWithAquitardLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneCoverageLayer);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(1.6);
// Assert
Assert.AreEqual(1.5, result, 1e-6);
}
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_CoverageLayerTopEqualToLevel_ReturnCollectionWithAquitardLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneCoverageLayer);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(2.1);
// Assert
Assert.AreEqual(2.0, result, 1e-6);
}
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_CoverageLayerBottomEqualToLevel_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneCoverageLayer);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(0.1);
// Assert
Assert.IsNaN(result);
}
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_TwoCoverageLayersCompletelyBelowLevel_ReturnConsecutiveAquitardLayers()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayers);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(2.2);
// Assert
Assert.AreEqual(2.0, result, 1e-6);
}
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_TopmostCoverageLayerTopEqualToLevel_ReturnConsecutiveAquitardLayers()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayers);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(2.1);
// Assert
Assert.AreEqual(2.0, result, 1e-6);
}
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_TopmostCoverageLayerTopPartlyBelowLevel_ReturnCollectionWithAquitardLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayers);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(2.0);
// Assert
Assert.AreEqual(1.9, result, 1e-6);
}
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_TopmostCoverageLayerCompletelyAboveLevel_ReturnCollectionWithoutTopmostAquitardLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayers);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(0.5);
// Assert
Assert.AreEqual(0.4, result, 1e-6);
}
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_BottomCoverageLayerTopEqualToLevel_ReturnCollectionWithBottomAquitardLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayers);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(1.1);
// Assert
Assert.AreEqual(1.0, result, 1e-6);
}
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_TwoConsecutiveCoverageLayersAndOneNonConsecutiveAquitardLayer_ReturnConsecutiveAquitardLayers()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayersOneAquiferLayerOneAquitardLayer);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(1.5);
// Assert
Assert.AreEqual(0.5, result, 1e-6);
}
[Test]
[TestCase(1.0)]
[TestCase(0.8)]
[TestCase(0.5)]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_NoCoverageLayerAtLevel_ReturnEmptyCollection(double level)
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayersOneAquiferLayerOneAquitardLayer);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(level);
// Assert
Assert.IsNaN(result);
}
[Test]
public void GetConsecutiveCoverageLayerThicknessBelowLevel_LevelBelowProfile_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayers);
// Call
double result = profile.GetConsecutiveCoverageLayerThicknessBelowLevel(-1.0);
// Assert
Assert.IsNaN(result);
}
#endregion
#region GetConsecutiveAquiferLayersBelowLevel
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_NoAquiferLayer_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquitardLayers);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.0);
// Assert
Assert.IsEmpty(result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_AquiferLayerAboveLevel_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquiferLayerOneAquitardLayer);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.0);
// Assert
Assert.IsEmpty(result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_AquiferLayerCompletelyBelowLevel_ReturnAquiferLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquiferLayer);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(2.2);
// Assert
CollectionAssert.AreEqual(new[]
{
profile.Layers.ElementAt(0)
}, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_AquiferLayerPartlyBelowLevel_ReturnCollectionWithAquiferLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquiferLayer);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.6);
// Assert
CollectionAssert.AreEqual(new[]
{
profile.Layers.ElementAt(0)
}, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_AquiferLayerTopEqualToLevel_ReturnCollectionWithAquiferLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquiferLayer);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(2.1);
// Assert
CollectionAssert.AreEqual(new[]
{
profile.Layers.ElementAt(0)
}, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_AquiferLayerBottomEqualToLevel_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquiferLayer);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(0.0);
// Assert
Assert.IsEmpty(result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_TwoAquiferLayersCompletelyBelowLevel_ReturnConsecutiveAquiferLayers()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(2.2);
// Assert
CollectionAssert.AreEqual(profile.Layers, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_TopmostAquiferLayerTopEqualToLevel_ReturnConsecutiveAquiferLayers()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(2.1);
// Assert
CollectionAssert.AreEqual(profile.Layers, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_TopmostAquiferLayerTopPartlyBelowLevel_ReturnCollectionWithAquiferLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(2.0);
// Assert
CollectionAssert.AreEqual(profile.Layers, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_TopmostAquiferLayerCompletelyAboveLevel_ReturnCollectionWithoutTopmostAquiferLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(0.5);
// Assert
CollectionAssert.AreEqual(new[]
{
profile.Layers.ElementAt(1)
}, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_BottomAquiferLayerTopEqualToLevel_ReturnCollectionWithBottomAquiferLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.1);
// Assert
CollectionAssert.AreEqual(new[]
{
profile.Layers.ElementAt(1)
}, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_TwoConsecutiveAquiferLayersAndOneNonConsecutiveAquiferLayer_ReturnConsecutiveAquiferLayers()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayersOneAquitardLayerOneAquiferLayer);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.5);
// Assert
CollectionAssert.AreEqual(profile.Layers.Take(2), result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_LevelBelowProfile_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(-1.0);
// Assert
Assert.IsEmpty(result);
}
#endregion
#region GetConsecutiveCoverageLayersBelowLevel
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_NoAquitardLayer_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoAquiferLayers);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(1.0);
// Assert
Assert.IsEmpty(result);
}
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_AquitardLayerAboveLevel_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquitardLayerOneAquiferLayer);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(1.1);
// Assert
Assert.IsEmpty(result);
}
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_OnlyAquitardLayer_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneAquitardLayer);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(2.2);
// Assert
Assert.IsEmpty(result);
}
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_CoverageLayerCompletelyBelowLevel_ReturnAquitardLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneCoverageLayer);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(2.2);
// Assert
CollectionAssert.AreEqual(profile.Layers.Take(1), result);
}
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_CoverageLayerPartlyBelowLevel_ReturnCollectionWithAquitardLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneCoverageLayer);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(1.6);
// Assert
CollectionAssert.AreEqual(profile.Layers.Take(1), result);
}
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_CoverageLayerTopEqualToLevel_ReturnCollectionWithAquitardLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneCoverageLayer);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(2.1);
// Assert
CollectionAssert.AreEqual(profile.Layers.Take(1), result);
}
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_CoverageLayerBottomEqualToLevel_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseOneCoverageLayer);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(0.1);
// Assert
Assert.IsEmpty(result);
}
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_TwoCoverageLayersCompletelyBelowLevel_ReturnConsecutiveAquitardLayers()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayers);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(2.2);
// Assert
CollectionAssert.AreEqual(profile.Layers.Take(2), result);
}
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_TopmostCoverageLayerTopEqualToLevel_ReturnConsecutiveAquitardLayers()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayers);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(2.1);
// Assert
CollectionAssert.AreEqual(profile.Layers.Take(2), result);
}
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_TopmostCoverageLayerTopPartlyBelowLevel_ReturnCollectionWithAquitardLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayers);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(2.0);
// Assert
CollectionAssert.AreEqual(profile.Layers.Take(2), result);
}
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_TopmostCoverageLayerCompletelyAboveLevel_ReturnCollectionWithoutTopmostAquitardLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayers);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(0.5);
// Assert
CollectionAssert.AreEqual(new[]
{
profile.Layers.ElementAt(1)
}, result);
}
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_BottomCoverageLayerTopEqualToLevel_ReturnCollectionWithBottomAquitardLayer()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayers);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(1.1);
// Assert
CollectionAssert.AreEqual(new[]
{
profile.Layers.ElementAt(1)
}, result);
}
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_TwoConsecutiveCoverageLayersAndOneNonConsecutiveAquitardLayer_ReturnConsecutiveAquitardLayers()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayersOneAquiferLayerOneAquitardLayer);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(1.5);
// Assert
CollectionAssert.AreEqual(profile.Layers.Take(2), result);
}
[Test]
[TestCase(1.0)]
[TestCase(0.8)]
[TestCase(0.5)]
public void GetConsecutiveCoverageLayersBelowLevel_NoCoverageLayerAtLevel_ReturnEmptyCollection(double level)
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayersOneAquiferLayerOneAquitardLayer);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(level);
// Assert
Assert.IsEmpty(result);
}
[Test]
public void GetConsecutiveCoverageLayersBelowLevel_LevelBelowProfile_ReturnEmptyCollection()
{
// Setup
MacroStabilityInwardsSoilProfile profile = CreateTestProfile(testCaseTwoCoverageLayers);
// Call
IEnumerable result = profile.GetConsecutiveCoverageLayersBelowLevel(-1.0);
// Assert
Assert.IsEmpty(result);
}
#endregion
}
}