resgroup/customer-tests-excel

View on GitHub
SampleTests/Anova/One Way Anova.cs

Summary

Maintainability
B
6 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.Anova
{
    [TestFixture]
    public class One_Way_Anova : SpecificationBase<SpecificationSpecificAnovaCalculator>, ISpecification<SpecificationSpecificAnovaCalculator>
    {
        public override string Description()
        {
            return "Calculate One Way Anova";
        }
        
        public override SpecificationSpecificAnovaCalculator Given()
        {
            return
                new SpecificationSpecificAnovaCalculator()
                .VariableDescription_of("IQ")
                
                .Groups_list_of(
                    "SpecificationSpecificGroup", 
                    new FluentList<SpecificationSpecificGroup>()
                    .FluentAdd(
                        new SpecificationSpecificGroup()
                        .Name_of("Langley School")
                        .Floats_table_of(
                            new ReportSpecificationSetupClassUsingTable<SpecificationSpecificFloat>()
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(90)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(87)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(93)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(115)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(97)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(85)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(102)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(110)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(111)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(102)
                            )
                        )
                    )
                    .FluentAdd(
                        new SpecificationSpecificGroup()
                        .Name_of("Ninestiles School")
                        .Floats_table_of(
                            new ReportSpecificationSetupClassUsingTable<SpecificationSpecificFloat>()
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(135)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(125)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(107)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(96)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(114)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(125)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(94)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(123)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(111)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(96)
                            )
                        )
                    )
                    .FluentAdd(
                        new SpecificationSpecificGroup()
                        .Name_of("Alderbrook School")
                        .Floats_table_of(
                            new ReportSpecificationSetupClassUsingTable<SpecificationSpecificFloat>()
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(93)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(101)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(74)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(87)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(76)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(87)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(98)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(108)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(113)
                            )
                            .Add(
                                new SpecificationSpecificFloat()
                                .Float_of(96)
                            )
                        )
                    )
                )
            ;
        }
        
        public override string When(SpecificationSpecificAnovaCalculator anovaCalculator)
        {
            anovaCalculator.Calculate();
            return "Calculate";
        }
        
        public override IEnumerable<IAssertion<SpecificationSpecificAnovaCalculator>> Assertions()
        {
            return new List<IAssertion<SpecificationSpecificAnovaCalculator>>
            {
                 new ParentAssertion<SpecificationSpecificAnovaCalculator, IAnovaResult>
                (
                    anovaResult => anovaResult.AnovaResult,
                    new List<IAssertion<IAnovaResult>>
                    {
                          new EqualityAssertionWithPercentagePrecision<IAnovaResult>(anovaResult => anovaResult.SS_Between, 1956.1999999999998, 0.001)
                        , new EqualityAssertionWithPercentagePrecision<IAnovaResult>(anovaResult => anovaResult.DF_Between, 2, 0.001)
                        , new EqualityAssertionWithPercentagePrecision<IAnovaResult>(anovaResult => anovaResult.MS_Between, 978.0999999999999, 0.001)
                        , new EqualityAssertionWithPercentagePrecision<IAnovaResult>(anovaResult => anovaResult.SS_Within, 4294.1, 0.001)
                        , new EqualityAssertionWithPercentagePrecision<IAnovaResult>(anovaResult => anovaResult.DF_Within, 27, 0.001)
                        , new EqualityAssertionWithPercentagePrecision<IAnovaResult>(anovaResult => anovaResult.MS_Within, 159.04074074074074, 0.001)
                        , new EqualityAssertionWithPercentagePrecision<IAnovaResult>(anovaResult => anovaResult.F, 6.149996506834959, 0.001)
                        , new EqualityAssertionWithPercentagePrecision<IAnovaResult>(anovaResult => anovaResult.StatisticalSignificance, 0.006296691678741519, 0.001)
                        , new EqualityAssertionWithPercentagePrecision<IAnovaResult>(anovaResult => anovaResult.EffectSize, 0.3129769771050989, 0.001)
                    }
                )
            };
        }
        
        protected override string AssertionClassPrefixAddedByGenerator => "I";
    }
}