resgroup/customer-tests-excel

View on GitHub
SampleTests/Vermeulen Near Wake Length/VermeulenNearWakeLength.cs

Summary

Maintainability
C
7 hrs
Test Coverage
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
using CustomerTestsExcel;
using CustomerTestsExcel.Assertions;
using CustomerTestsExcel.SpecificationSpecificClassGeneration;
using System.Linq.Expressions;
using SampleTests;
using SampleTests.Setup;

using SampleSystemUnderTest;
using SampleSystemUnderTest.AnovaCalculator;
using SampleSystemUnderTest.Routing;
using SampleSystemUnderTest.VermeulenNearWakeLength;
using SampleSystemUnderTest.Calculator;
using SampleSystemUnderTest.CustomProperties;
using SampleSystemUnderTest.Misc;

namespace SampleTests.Vermeulen_Near_Wake_Length
{
    [TestFixture]
    public class VermeulenNearWakeLength : SpecificationBase<SpecificationSpecificVermeulenNearWakeLengthCalculator>, ISpecification<SpecificationSpecificVermeulenNearWakeLengthCalculator>
    {
        public override string Description()
        {
            return "Vermeulen Near Wake Length";
        }
        
        public override SpecificationSpecificVermeulenNearWakeLengthCalculator Given()
        {
            return
                new SpecificationSpecificVermeulenNearWakeLengthCalculator()
                .VermeulenNearWakeLengthInputs_table_of(
                    new ReportSpecificationSetupClassUsingTable<SpecificationSpecificVermeulenNearWakeLengthInput>()
                    .Add(
                        new SpecificationSpecificVermeulenNearWakeLengthInput()
                        .Velocity_of(10)
                        .Ambient_Turbulence_of(0.15)
                        .RevolutionsPerMinute_of(15)
                        .Thrust_Coefficient_of(0.7)
                        .TurbineGeometry_of(
                            new SpecificationSpecificTurbineGeometry()
                            .NumberOfBlades_of(3)
                            .Diameter_of(76)
                        )
                    )
                    .Add(
                        new SpecificationSpecificVermeulenNearWakeLengthInput()
                        .Velocity_of(10)
                        .Ambient_Turbulence_of(0.15)
                        .RevolutionsPerMinute_of(15)
                        .Thrust_Coefficient_of(0.7)
                        .TurbineGeometry_of(
                            new SpecificationSpecificTurbineGeometry()
                            .NumberOfBlades_of(2)
                            .Diameter_of(76)
                        )
                    )
                    .Add(
                        new SpecificationSpecificVermeulenNearWakeLengthInput()
                        .Velocity_of(6)
                        .Ambient_Turbulence_of(0.15)
                        .RevolutionsPerMinute_of(15)
                        .Thrust_Coefficient_of(0.7)
                        .TurbineGeometry_of(
                            new SpecificationSpecificTurbineGeometry()
                            .NumberOfBlades_of(3)
                            .Diameter_of(76)
                        )
                    )
                    .Add(
                        new SpecificationSpecificVermeulenNearWakeLengthInput()
                        .Velocity_of(10)
                        .Ambient_Turbulence_of(0.1)
                        .RevolutionsPerMinute_of(15)
                        .Thrust_Coefficient_of(0.7)
                        .TurbineGeometry_of(
                            new SpecificationSpecificTurbineGeometry()
                            .NumberOfBlades_of(3)
                            .Diameter_of(76)
                        )
                    )
                    .Add(
                        new SpecificationSpecificVermeulenNearWakeLengthInput()
                        .Velocity_of(10)
                        .Ambient_Turbulence_of(0.15)
                        .RevolutionsPerMinute_of(15)
                        .Thrust_Coefficient_of(0.7)
                        .TurbineGeometry_of(
                            new SpecificationSpecificTurbineGeometry()
                            .NumberOfBlades_of(3)
                            .Diameter_of(60)
                        )
                    )
                    .Add(
                        new SpecificationSpecificVermeulenNearWakeLengthInput()
                        .Velocity_of(10)
                        .Ambient_Turbulence_of(0.15)
                        .RevolutionsPerMinute_of(20)
                        .Thrust_Coefficient_of(0.7)
                        .TurbineGeometry_of(
                            new SpecificationSpecificTurbineGeometry()
                            .NumberOfBlades_of(3)
                            .Diameter_of(76)
                        )
                    )
                    .Add(
                        new SpecificationSpecificVermeulenNearWakeLengthInput()
                        .Velocity_of(10)
                        .Ambient_Turbulence_of(0.15)
                        .RevolutionsPerMinute_of(15)
                        .Thrust_Coefficient_of(0.6)
                        .TurbineGeometry_of(
                            new SpecificationSpecificTurbineGeometry()
                            .NumberOfBlades_of(3)
                            .Diameter_of(76)
                        )
                    )
                )
            ;
        }
        
        public override string When(SpecificationSpecificVermeulenNearWakeLengthCalculator vermeulenNearWakeLengthCalculator)
        {
            vermeulenNearWakeLengthCalculator.Calculate();
            return "Calculate";
        }
        
        public override IEnumerable<IAssertion<SpecificationSpecificVermeulenNearWakeLengthCalculator>> Assertions()
        {
            return new List<IAssertion<SpecificationSpecificVermeulenNearWakeLengthCalculator>>
            {
                 new TableAssertion<SpecificationSpecificVermeulenNearWakeLengthCalculator, IVermeulenNearWakeLength>
                (
                    vermeulenNearWakeLengths => vermeulenNearWakeLengths.VermeulenNearWakeLengths,
                    new List<List<IAssertion<IVermeulenNearWakeLength>>>
                    {
                         new List<IAssertion<IVermeulenNearWakeLength>>
                        {
                                  new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.VermeulenNearWakeLength_m, 140.01601451311993, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AngularVelocity_rps, 1.5707963267948966, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TipSpeedRatio, 5.969026041820607, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.FlowFieldRatio, 1.8257418583505536, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.ShearTurbulenceWakeErosionRate, -0.05451956143675844, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AmbientTurbulenceWakeErosionRate, 0.425, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.MechanicalWakeErosionRate, 0.21488493750554188, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TotalErosionRate, 0.47934634550188976, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.RadiusOfInviscidExpandedRotorDisk_m, 45.16841398288299, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.N, 1.4859092660202307, 0.001)
                        }
                        ,new List<IAssertion<IVermeulenNearWakeLength>>
                        {
                                  new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.VermeulenNearWakeLength_m, 148.55405780294296, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AngularVelocity_rps, 1.5707963267948966, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TipSpeedRatio, 5.969026041820607, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.FlowFieldRatio, 1.8257418583505536, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.ShearTurbulenceWakeErosionRate, -0.05451956143675844, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AmbientTurbulenceWakeErosionRate, 0.425, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.MechanicalWakeErosionRate, 0.14325662500369457, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TotalErosionRate, 0.4517962407841677, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.RadiusOfInviscidExpandedRotorDisk_m, 45.16841398288299, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.N, 1.4859092660202307, 0.001)
                        }
                        ,new List<IAssertion<IVermeulenNearWakeLength>>
                        {
                                  new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.VermeulenNearWakeLength_m, 120.18364521743895, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AngularVelocity_rps, 1.5707963267948966, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TipSpeedRatio, 9.948376736367678, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.FlowFieldRatio, 1.8257418583505536, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.ShearTurbulenceWakeErosionRate, -0.05451956143675844, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AmbientTurbulenceWakeErosionRate, 0.425, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.MechanicalWakeErosionRate, 0.35814156250923646, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TotalErosionRate, 0.5584467399634577, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.RadiusOfInviscidExpandedRotorDisk_m, 45.16841398288299, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.N, 1.4859092660202307, 0.001)
                        }
                        ,new List<IAssertion<IVermeulenNearWakeLength>>
                        {
                                  new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.VermeulenNearWakeLength_m, 179.92386611626353, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AngularVelocity_rps, 1.5707963267948966, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TipSpeedRatio, 5.969026041820607, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.FlowFieldRatio, 1.8257418583505536, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.ShearTurbulenceWakeErosionRate, -0.05451956143675844, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AmbientTurbulenceWakeErosionRate, 0.3, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.MechanicalWakeErosionRate, 0.21488493750554188, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TotalErosionRate, 0.3730253596553686, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.RadiusOfInviscidExpandedRotorDisk_m, 45.16841398288299, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.N, 1.4859092660202307, 0.001)
                        }
                        ,new List<IAssertion<IVermeulenNearWakeLength>>
                        {
                                  new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.VermeulenNearWakeLength_m, 114.97697996131835, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AngularVelocity_rps, 1.5707963267948966, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TipSpeedRatio, 4.71238898038469, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.FlowFieldRatio, 1.8257418583505536, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.ShearTurbulenceWakeErosionRate, -0.05451956143675844, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AmbientTurbulenceWakeErosionRate, 0.425, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.MechanicalWakeErosionRate, 0.16964600329384885, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TotalErosionRate, 0.46084395299584113, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.RadiusOfInviscidExpandedRotorDisk_m, 35.659274197012884, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.N, 1.4859092660202307, 0.001)
                        }
                        ,new List<IAssertion<IVermeulenNearWakeLength>>
                        {
                                  new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.VermeulenNearWakeLength_m, 130.2092375310549, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AngularVelocity_rps, 2.0943951023931953, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TipSpeedRatio, 7.958701389094142, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.FlowFieldRatio, 1.8257418583505536, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.ShearTurbulenceWakeErosionRate, -0.05451956143675844, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AmbientTurbulenceWakeErosionRate, 0.425, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.MechanicalWakeErosionRate, 0.28651325000738914, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TotalErosionRate, 0.5154485667930925, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.RadiusOfInviscidExpandedRotorDisk_m, 45.16841398288299, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.N, 1.4859092660202307, 0.001)
                        }
                        ,new List<IAssertion<IVermeulenNearWakeLength>>
                        {
                                  new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.VermeulenNearWakeLength_m, 132.54688085802303, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AngularVelocity_rps, 1.5707963267948966, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TipSpeedRatio, 5.969026041820607, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.FlowFieldRatio, 1.5811388300841895, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.ShearTurbulenceWakeErosionRate, -0.04042671355980986, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.AmbientTurbulenceWakeErosionRate, 0.425, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.MechanicalWakeErosionRate, 0.21488493750554188, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.TotalErosionRate, 0.47794859089237574, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.RadiusOfInviscidExpandedRotorDisk_m, 43.1692278749665, 0.001)
                                , new EqualityAssertionWithPercentagePrecision<IVermeulenNearWakeLength>(vermeulenNearWakeLengths => vermeulenNearWakeLengths.N, 1.4674942789516103, 0.001)
                        }
                    }
                )
            };
        }
        
        protected override string AssertionClassPrefixAddedByGenerator => "I";
        
        protected override bool RoundTrippable() => false;
        
        protected override IEnumerable<string> IssuesPreventingRoundTrip() => new List<string>
        {
            "There is a complex property ('TurbineGeometry of', cell D7) within a table in the Excel test, worksheet 'VermeulenNearWakeLength'"
        };
    }
}