diff --git a/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml b/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml index 27881e5..dc7b71b 100644 --- a/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml +++ b/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml @@ -39,6 +39,7 @@ + @@ -105,6 +106,7 @@ + diff --git a/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml b/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml index 28d4792..35ff862 100644 --- a/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml +++ b/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml @@ -14,9 +14,10 @@ + + + - - + + @@ -66,11 +69,13 @@ @@ -135,7 +140,7 @@ - + 1602593830686 @@ -183,94 +188,94 @@ - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + @@ -287,10 +292,10 @@ - + - + diff --git a/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs b/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs new file mode 100644 index 0000000..e67ef78 --- /dev/null +++ b/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs @@ -0,0 +1,33 @@ +using System; +using EvoCalculator.Core.Models.Calculation.Interfaces; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; + +namespace EvoCalculator.Core.Calculation.Columns +{ + public class DateTempColumn : IColumn + { + public DateTime[] Values { get; set; } + + public DateTempColumn(int count = 67) + { + Values = new DateTime[count]; + } + + + public void ComputeValues(PreparedValues preparedValues, PreparedPayments preparedPayments, + Constants.Calculation constants, + params IColumn[] columns) + { + Values[0] = preparedValues.DogDate; + Values[1] = Values[0]; + Values[2] = preparedValues.PaymentDateNew ?? Values[1].AddMonths(1); + + for (var i = 3; i < Values.Length; i++) + { + Values[i] = preparedValues.PaymentDateNew == null + ? Values[1].AddMonths(i - 1) + : Values[2].AddMonths(i - 2); + } + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Suite/Columns/DateTempTests.cs b/EvoCalculator.Core.Tests/Calculation/Suite/Columns/DateTempTests.cs new file mode 100644 index 0000000..20d538b --- /dev/null +++ b/EvoCalculator.Core.Tests/Calculation/Suite/Columns/DateTempTests.cs @@ -0,0 +1,194 @@ +using System; +using EvoCalculator.Core.Calculation.Columns; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; +using Xunit; + +namespace EvoCalculator.Core.Tests.Calculation.Suite.Columns +{ + public class DateTempTests + { + [Fact] + public void DateTempTest1() + { + var preparedValues = + new PreparedValues() + { + DogDate = new DateTime(2018, 10, 31), + PaymentDateNew = null, + }; + + var dateTempColumn = new DateTempColumn(); + dateTempColumn.ComputeValues( + preparedValues + , null + , new Constants.Calculation() + , null); + + var expected = new DateTime[] + { + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 1, 31), + new DateTime(2019, 2, 28), + new DateTime(2019, 3, 31), + new DateTime(2019, 4, 30), + new DateTime(2019, 5, 31), + new DateTime(2019, 6, 30), + new DateTime(2019, 7, 31), + new DateTime(2019, 8, 31), + new DateTime(2019, 9, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 1, 31), + new DateTime(2020, 2, 29), + new DateTime(2020, 3, 31), + new DateTime(2020, 4, 30), + new DateTime(2020, 5, 31), + new DateTime(2020, 6, 30), + new DateTime(2020, 7, 31), + new DateTime(2020, 8, 31), + new DateTime(2020, 9, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 28), + new DateTime(2021, 3, 31), + new DateTime(2021, 4, 30), + new DateTime(2021, 5, 31), + new DateTime(2021, 6, 30), + new DateTime(2021, 7, 31), + new DateTime(2021, 8, 31), + new DateTime(2021, 9, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 28), + new DateTime(2022, 3, 31), + new DateTime(2022, 4, 30), + new DateTime(2022, 5, 31), + new DateTime(2022, 6, 30), + new DateTime(2022, 7, 31), + new DateTime(2022, 8, 31), + new DateTime(2022, 9, 30), + new DateTime(2022, 10, 31), + new DateTime(2022, 11, 30), + new DateTime(2022, 12, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 28), + new DateTime(2023, 3, 31), + new DateTime(2023, 4, 30), + new DateTime(2023, 5, 31), + new DateTime(2023, 6, 30), + new DateTime(2023, 7, 31), + new DateTime(2023, 8, 31), + new DateTime(2023, 9, 30), + new DateTime(2023, 10, 31), + new DateTime(2023, 11, 30), + new DateTime(2023, 12, 31), + new DateTime(2024, 1, 31), + new DateTime(2024, 2, 29), + new DateTime(2024, 3, 31), + }; + + var res = dateTempColumn.Values; + Assert.Equal(expected, res); + } + + [Fact] + public void DateTempTest2() + { + var preparedValues = + new PreparedValues() + { + DogDate = new DateTime(2018, 10, 31), + PaymentDateNew = new DateTime(2018, 12, 11), + }; + + var dateTempColumn = new DateTempColumn(); + dateTempColumn.ComputeValues( + preparedValues + , null + , new Constants.Calculation() + , null); + + var expected = new DateTime[] + { + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 12, 11), + new DateTime(2019, 1, 11), + new DateTime(2019, 2, 11), + new DateTime(2019, 3, 11), + new DateTime(2019, 4, 11), + new DateTime(2019, 5, 11), + new DateTime(2019, 6, 11), + new DateTime(2019, 7, 11), + new DateTime(2019, 8, 11), + new DateTime(2019, 9, 11), + new DateTime(2019, 10, 11), + new DateTime(2019, 11, 11), + new DateTime(2019, 12, 11), + new DateTime(2020, 1, 11), + new DateTime(2020, 2, 11), + new DateTime(2020, 3, 11), + new DateTime(2020, 4, 11), + new DateTime(2020, 5, 11), + new DateTime(2020, 6, 11), + new DateTime(2020, 7, 11), + new DateTime(2020, 8, 11), + new DateTime(2020, 9, 11), + new DateTime(2020, 10, 11), + new DateTime(2020, 11, 11), + new DateTime(2020, 12, 11), + new DateTime(2021, 1, 11), + new DateTime(2021, 2, 11), + new DateTime(2021, 3, 11), + new DateTime(2021, 4, 11), + new DateTime(2021, 5, 11), + new DateTime(2021, 6, 11), + new DateTime(2021, 7, 11), + new DateTime(2021, 8, 11), + new DateTime(2021, 9, 11), + new DateTime(2021, 10, 11), + new DateTime(2021, 11, 11), + new DateTime(2021, 12, 11), + new DateTime(2022, 1, 11), + new DateTime(2022, 2, 11), + new DateTime(2022, 3, 11), + new DateTime(2022, 4, 11), + new DateTime(2022, 5, 11), + new DateTime(2022, 6, 11), + new DateTime(2022, 7, 11), + new DateTime(2022, 8, 11), + new DateTime(2022, 9, 11), + new DateTime(2022, 10, 11), + new DateTime(2022, 11, 11), + new DateTime(2022, 12, 11), + new DateTime(2023, 1, 11), + new DateTime(2023, 2, 11), + new DateTime(2023, 3, 11), + new DateTime(2023, 4, 11), + new DateTime(2023, 5, 11), + new DateTime(2023, 6, 11), + new DateTime(2023, 7, 11), + new DateTime(2023, 8, 11), + new DateTime(2023, 9, 11), + new DateTime(2023, 10, 11), + new DateTime(2023, 11, 11), + new DateTime(2023, 12, 11), + new DateTime(2024, 1, 11), + new DateTime(2024, 2, 11), + new DateTime(2024, 3, 11), + new DateTime(2024, 4, 11), + }; + + var res = dateTempColumn.Values; + Assert.Equal(expected, res); + } + } +} \ No newline at end of file