// 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 Core.Common.Base.Geometry;
using NUnit.Framework;
using Ringtoets.Common.Data.FailureMechanism;
using Ringtoets.Integration.IO.Assembly;
namespace Ringtoets.Integration.IO.TestUtil
{
///
/// Helper class to assert
///
public static class ExportableFailureMechanismSectionTestHelper
{
///
/// Asserts a collection of
/// against a collection of .
///
/// The expected collection of .
/// The actual to assert against.
/// Thrown when:
///
/// - The number of sections between and
/// do not match.
/// - The geometry of any the sections are not equal.
///
public static void AssertExportableFailureMechanismSections(IEnumerable expectedSections,
IEnumerable actualSections)
{
int expectedNrOfSections = expectedSections.Count();
Assert.AreEqual(expectedNrOfSections, actualSections.Count());
double expectedStartDistance = 0;
for (var i = 0; i < expectedNrOfSections; i++)
{
FailureMechanismSection expectedSection = expectedSections.ElementAt(i);
ExportableFailureMechanismSection actualSection = actualSections.ElementAt(i);
double expectedEndDistance = expectedStartDistance + Math2D.Length(expectedSection.Points);
Assert.AreEqual(expectedStartDistance, actualSection.StartDistance);
Assert.AreEqual(expectedEndDistance, actualSection.EndDistance);
CollectionAssert.AreEqual(expectedSection.Points, actualSection.Geometry);
expectedStartDistance = expectedEndDistance;
}
}
}
}