From f90acff617d02c8606a510e89960a402e7c8bc84 Mon Sep 17 00:00:00 2001 From: Chika Date: Wed, 21 Oct 2020 17:42:33 +0300 Subject: [PATCH] more columns(expenses) --- .../.idea/contentModel.xml | 23 ++ .../.idea/workspace.xml | 258 +++++++----- .../Columns/AgentComissionExpensesColumn.cs | 29 ++ .../Columns/ComissionBonusExpensesColumn.cs | 23 ++ .../Columns/ExpensesColumn.cs | 37 ++ .../Columns/GPSExpensesColumn.cs | 23 ++ .../Columns/InsuranceBonusExpensesColumn.cs | 45 +++ .../Columns/KaskoBonusGrSumColumn.cs | 33 ++ .../Columns/KaskoNmperGrColumn.cs | 13 +- .../Columns/NsibExpensesColumn.cs | 45 +++ .../Columns/RatExpensesColumn.cs | 25 ++ .../Columns/RegistrExpensesColumn.cs | 24 ++ .../Columns/TLMExpensesColumn.cs | 23 ++ .../Columns/TransExprensesColumn.cs | 31 ++ .../Models/Prepared/PreparedParams.cs | 1 + .../Columns/AgentComissionExpensesTests.cs | 125 ++++++ .../Columns/ComissionBonusExpensesTests.cs | 56 +++ .../Calculation/Columns/ExpensesTests.cs | 378 ++++++++++++++++++ .../Calculation/Columns/GPSExpensesTests.cs | 124 ++++++ .../Columns/InsuranceBonusExpensesTests.cs | 187 +++++++++ .../Columns/KaskoBonusGrSumTests.cs | 100 +++++ .../Calculation/Columns/KaskoNmperGrTests.cs | 237 +++++++++++ .../Calculation/Columns/NsibExpensesTests.cs | 134 +++++++ .../Calculation/Columns/RatExpensesTests.cs | 62 +++ .../Columns/RegistrExpensesTests.cs | 49 +++ .../Calculation/Columns/TLMExpensesTests.cs | 124 ++++++ .../Columns/TransExprensesTests.cs | 119 ++++++ EvoCalculator.Core/EvoCalculator.Core.csproj | 1 + 28 files changed, 2220 insertions(+), 109 deletions(-) create mode 100644 EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs create mode 100644 EvoCalculator.Core.Calculation/Columns/ComissionBonusExpensesColumn.cs create mode 100644 EvoCalculator.Core.Calculation/Columns/ExpensesColumn.cs create mode 100644 EvoCalculator.Core.Calculation/Columns/GPSExpensesColumn.cs create mode 100644 EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs create mode 100644 EvoCalculator.Core.Calculation/Columns/KaskoBonusGrSumColumn.cs create mode 100644 EvoCalculator.Core.Calculation/Columns/NsibExpensesColumn.cs create mode 100644 EvoCalculator.Core.Calculation/Columns/RatExpensesColumn.cs create mode 100644 EvoCalculator.Core.Calculation/Columns/RegistrExpensesColumn.cs create mode 100644 EvoCalculator.Core.Calculation/Columns/TLMExpensesColumn.cs create mode 100644 EvoCalculator.Core.Calculation/Columns/TransExprensesColumn.cs create mode 100644 EvoCalculator.Core.Tests/Calculation/Columns/AgentComissionExpensesTests.cs create mode 100644 EvoCalculator.Core.Tests/Calculation/Columns/ComissionBonusExpensesTests.cs create mode 100644 EvoCalculator.Core.Tests/Calculation/Columns/ExpensesTests.cs create mode 100644 EvoCalculator.Core.Tests/Calculation/Columns/GPSExpensesTests.cs create mode 100644 EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs create mode 100644 EvoCalculator.Core.Tests/Calculation/Columns/KaskoBonusGrSumTests.cs create mode 100644 EvoCalculator.Core.Tests/Calculation/Columns/NsibExpensesTests.cs create mode 100644 EvoCalculator.Core.Tests/Calculation/Columns/RatExpensesTests.cs create mode 100644 EvoCalculator.Core.Tests/Calculation/Columns/RegistrExpensesTests.cs create mode 100644 EvoCalculator.Core.Tests/Calculation/Columns/TLMExpensesTests.cs create mode 100644 EvoCalculator.Core.Tests/Calculation/Columns/TransExprensesTests.cs diff --git a/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml b/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml index 08fea41..352ac57 100644 --- a/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml +++ b/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml @@ -19,6 +19,7 @@ + @@ -43,20 +44,31 @@ + + + + + + + + + + + @@ -133,18 +145,29 @@ + + + + + + + + + + + diff --git a/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml b/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml index 47d7871..aaa4375 100644 --- a/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml +++ b/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml @@ -14,29 +14,35 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - + - + + @@ -184,7 +190,8 @@ - + + 1602593830686 @@ -232,90 +239,90 @@ - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + @@ -328,10 +335,10 @@ - + - + @@ -352,12 +359,59 @@ - + - + + + + + + + + + file://$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/NsibExpensesTests.cs + 92 + + + + + + + + + file://$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs + 143 + + + + + + + + + file://$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs + 183 + + + + + + + + + @@ -365,13 +419,5 @@ - - - - - - - - \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs new file mode 100644 index 0000000..4b2d75c --- /dev/null +++ b/EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs @@ -0,0 +1,29 @@ +using System.Linq; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; + +namespace EvoCalculator.Core.Calculation.Columns +{ + public class AgentComissionExpensesColumn : BaseColumn + { + public AgentComissionExpensesColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues) + { + for (var i = 0; i < Values.Length; i++) + { + Values[i] = 0; + } + + var agentComission = preparedValues.AgentsSum + preparedValues.DoubleAgentsSum + + preparedValues.DeliverySum + + preparedValues.BrokerSum + preparedValues.BrokerOfDeliverySum + + preparedValues.FinancialDeptOfDeliverySum + preparedValues.ImporterSum; + + Values[2] = -agentComission; + + Values[0] = Values.Sum(x => x); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/ComissionBonusExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/ComissionBonusExpensesColumn.cs new file mode 100644 index 0000000..1c4f80b --- /dev/null +++ b/EvoCalculator.Core.Calculation/Columns/ComissionBonusExpensesColumn.cs @@ -0,0 +1,23 @@ +using System.Linq; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; + +namespace EvoCalculator.Core.Calculation.Columns +{ + public class ComissionBonusExpensesColumn : BaseColumn + { + public ComissionBonusExpensesColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues) + { + for (var i = 0; i < Values.Length; i++) + { + Values[i] = 0; + } + + Values[1] = preparedValues.ComissionRub; + Values[0] = Values.Skip(1).Sum(x => x); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/ExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/ExpensesColumn.cs new file mode 100644 index 0000000..6fe4e53 --- /dev/null +++ b/EvoCalculator.Core.Calculation/Columns/ExpensesColumn.cs @@ -0,0 +1,37 @@ +using System.Linq; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; + +namespace EvoCalculator.Core.Calculation.Columns +{ + public class ExpensesColumn : BaseColumn + { + public ExpensesColumn(int count) : base(count) + { + } + + public void ComputeValues(AgentComissionExpensesColumn agentComissionExpensesColumn, + RatExpensesColumn ratExpensesColumn, TransExprensesColumn transExprensesColumn, + NsibExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn, + GPSExpensesColumn gpsExpensesColumn, RegistrExpensesColumn registrExpensesColumn, + InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, + ComissionBonusExpensesColumn comissionBonusExpensesColumn, NPVBonusExpensesColumn npvBonusExpensesColumn) + { + for (var i = 1; i < Values.Length; i++) + { + Values[i] = + agentComissionExpensesColumn.Values[i] + + ratExpensesColumn.Values[i] + + transExprensesColumn.Values[i] + + nsibExpensesColumn.Values[i] + + tlmExpensesColumn.Values[i] + + gpsExpensesColumn.Values[i] + + registrExpensesColumn.Values[i] + + insuranceBonusExpensesColumn.Values[i] + + comissionBonusExpensesColumn.Values[i] + + npvBonusExpensesColumn.Values[i]; + } + + Values[0] = Values.Skip(1).Sum(x => x); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/GPSExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/GPSExpensesColumn.cs new file mode 100644 index 0000000..3fc6d33 --- /dev/null +++ b/EvoCalculator.Core.Calculation/Columns/GPSExpensesColumn.cs @@ -0,0 +1,23 @@ +using System.Linq; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; + +namespace EvoCalculator.Core.Calculation.Columns +{ + public class GPSExpensesColumn : BaseColumn + { + public GPSExpensesColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues, PreparedPayments preparedPayments) + { + Values[1] = -(preparedValues.TrackerCost + preparedPayments.Rows[0].GpsBasePayment); + for (var i = 2; i < Values.Length; i++) + { + Values[i] = -preparedPayments.Rows[i - 1].GpsBasePayment; + } + + Values[0] = Values.Skip(1).Sum(x => x); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs new file mode 100644 index 0000000..a52c39e --- /dev/null +++ b/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs @@ -0,0 +1,45 @@ +using System.Linq; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; + +namespace EvoCalculator.Core.Calculation.Columns +{ + public class InsuranceBonusExpensesColumn : BaseColumn + { + public InsuranceBonusExpensesColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues) + { + for (var i = 0; i < Values.Length; i++) + { + Values[i] = 0; + } + + for (var i = 2; i < Values.Length; i += i == 2 ? 11 : 12) + { + if (i <= preparedValues.NmperInsurance) + { + if (preparedValues.NmperInsurance - i >= 3) + { + if (preparedValues.NmperInsurance - i < 16 - 1) + { + Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * + (preparedValues.NmperInsurance - i + 1); + } + else + { + Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * 12; + } + } + else + { + Values[i] = 0; + } + } + } + + Values[0] = Values.Skip(1).Sum(x => x); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/KaskoBonusGrSumColumn.cs b/EvoCalculator.Core.Calculation/Columns/KaskoBonusGrSumColumn.cs new file mode 100644 index 0000000..3f67136 --- /dev/null +++ b/EvoCalculator.Core.Calculation/Columns/KaskoBonusGrSumColumn.cs @@ -0,0 +1,33 @@ +using System.Linq; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; + +namespace EvoCalculator.Core.Calculation.Columns +{ + public class KaskoBonusGrSumColumn : BaseColumn + { + public KaskoBonusGrSumColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues, KaskoNmperGrColumn kaskoNmperGrColumn) + { + for (var i = 1; i < Values.Length; i++) + { + if (i < 13) + { + Values[i] = kaskoNmperGrColumn.Values[i] * 1; + } + else if (i <= 24) + { + Values[i] = kaskoNmperGrColumn.Values[i] * 0.7; + } + else + { + Values[i] = kaskoNmperGrColumn.Values[i] * 0.5; + } + } + + Values[0] = Values.Skip(1).Sum(x => x); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs b/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs index 7fa58ff..7f99a36 100644 --- a/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs @@ -21,13 +21,20 @@ namespace EvoCalculator.Core.Calculation.Columns { if (i <= preparedValues.NmperInsurance) { - if (preparedValues.NmperInsurance - i < 16 - 1) + if (preparedValues.Nmper - i >= 3) { - Values[i] = preparedValues.InsuranceKasko / 12 * (preparedValues.NmperInsurance - i + 1); + if (preparedValues.NmperInsurance - i < 16 - 1) + { + Values[i] = preparedValues.InsuranceKasko / 12 * (preparedValues.NmperInsurance - i + 1); + } + else + { + Values[i] = preparedValues.InsuranceKasko; + } } else { - Values[i] = preparedValues.InsuranceKasko; + Values[i] = 0; } } } diff --git a/EvoCalculator.Core.Calculation/Columns/NsibExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/NsibExpensesColumn.cs new file mode 100644 index 0000000..d33e4bd --- /dev/null +++ b/EvoCalculator.Core.Calculation/Columns/NsibExpensesColumn.cs @@ -0,0 +1,45 @@ +using System.Linq; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; + +namespace EvoCalculator.Core.Calculation.Columns +{ + public class NsibExpensesColumn : BaseColumn + { + public NsibExpensesColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues) + { + for (var i = 0; i < Values.Length; i++) + { + Values[i] = 0; + } + + for (var i = 1; i < Values.Length; i += 12) + { + if (i <= preparedValues.Nmper) + { + if (preparedValues.Nmper - i >= 3) + { + if (preparedValues.Nmper - i < 16 - 1) + { + Values[i] = -preparedValues.NsibNetto / preparedValues.Nmper * + (preparedValues.Nmper - i + 1); + } + else + { + Values[i] = -preparedValues.NsibNetto / preparedValues.Nmper * 12; + } + } + else + { + Values[i] = 0; + } + } + } + + Values[0] = Values.Skip(1).Sum(x => x); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/RatExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/RatExpensesColumn.cs new file mode 100644 index 0000000..9295d99 --- /dev/null +++ b/EvoCalculator.Core.Calculation/Columns/RatExpensesColumn.cs @@ -0,0 +1,25 @@ +using System.Linq; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; + +namespace EvoCalculator.Core.Calculation.Columns +{ + public class RatExpensesColumn : BaseColumn + { + public RatExpensesColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues) + { + for (var i = 0; i < Values.Length; i++) + { + Values[i] = 0; + } + + Values[1] = -preparedValues.BaseRatCost; + Values[4] = preparedValues.RetroBonus; + + Values[0] = Values.Sum(x => x); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/RegistrExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/RegistrExpensesColumn.cs new file mode 100644 index 0000000..2a765ff --- /dev/null +++ b/EvoCalculator.Core.Calculation/Columns/RegistrExpensesColumn.cs @@ -0,0 +1,24 @@ +using System.Linq; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; + +namespace EvoCalculator.Core.Calculation.Columns +{ + public class RegistrExpensesColumn : BaseColumn + { + public RegistrExpensesColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues) + { + for (var i = 0; i < Values.Length; i++) + { + Values[i] = 0; + } + + Values[1] = -preparedValues.BaseRegistration; + + Values[0] = Values.Skip(1).Sum(x => x); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/TLMExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/TLMExpensesColumn.cs new file mode 100644 index 0000000..c196b1d --- /dev/null +++ b/EvoCalculator.Core.Calculation/Columns/TLMExpensesColumn.cs @@ -0,0 +1,23 @@ +using System.Linq; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; + +namespace EvoCalculator.Core.Calculation.Columns +{ + public class TLMExpensesColumn : BaseColumn + { + public TLMExpensesColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues, PreparedPayments preparedPayments) + { + Values[1] = -(preparedValues.TLMCost + preparedPayments.Rows[0].TlmBasePayment); + for (var i = 2; i < Values.Length; i++) + { + Values[i] = -preparedPayments.Rows[i - 1].TlmBasePayment; + } + + Values[0] = Values.Skip(1).Sum(x => x); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/TransExprensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/TransExprensesColumn.cs new file mode 100644 index 0000000..ceb6f5b --- /dev/null +++ b/EvoCalculator.Core.Calculation/Columns/TransExprensesColumn.cs @@ -0,0 +1,31 @@ +using System.Linq; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; + +namespace EvoCalculator.Core.Calculation.Columns +{ + public class TransExprensesColumn : BaseColumn + { + public TransExprensesColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues) + { + for (var i = 0; i < Values.Length; i++) + { + Values[i] = 0; + } + + for (var i = 0; i < Values.Length; i += 12) + { + if (i > 0) + { + Values[i] = -preparedValues.TransportTaxGrYear; + } + } + + Values[^1] = -(preparedValues.TransportTaxGr + Values.Skip(1).Take(Values.Length - 1).Sum(x => x)); + Values[0] = Values.Skip(1).Sum(x => x); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedParams.cs b/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedParams.cs index a3d48da..db1b38e 100644 --- a/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedParams.cs +++ b/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedParams.cs @@ -89,5 +89,6 @@ namespace EvoCalculator.Core.Models.Calculation.Models.Prepared public double AcquisitionExpenses { get; set; } public double BonusBase { get; set; } public double NpvBase { get; set; } + public double TLMCost { get; set; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/AgentComissionExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/AgentComissionExpensesTests.cs new file mode 100644 index 0000000..e6dfced --- /dev/null +++ b/EvoCalculator.Core.Tests/Calculation/Columns/AgentComissionExpensesTests.cs @@ -0,0 +1,125 @@ +using EvoCalculator.Core.Calculation.Columns; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; +using Xunit; + +namespace EvoCalculator.Core.Tests.Calculation.Columns +{ + public class AgentComissionExpensesTests + { + [Fact] + public void AgentComissionExpensesTest1() + { + var preparedValues = new PreparedValues() + { + AgentsSum = 47662.50, + DoubleAgentsSum = 0.00, + DeliverySum = 0.00, + BrokerSum = 0.00, + BrokerOfDeliverySum = 0.00, + FinancialDeptOfDeliverySum = 0.00, + ImporterSum = 0.00, + Nmper = 30 + }; + + var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); + agentComissionExpensesColumn.ComputeValues(preparedValues); + + + var expected = new[] + { + -47662.50, + 0.00, + -47662.50, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + }; + + Assert.Equal(expected.Length, agentComissionExpensesColumn.Values.Length); + Assert.Equal(expected, agentComissionExpensesColumn.Values, new DoubleArrayComparer()); + } + + [Fact] + public void AgentComissionExpensesTest2() + { + var preparedValues = new PreparedValues() + { + AgentsSum = 47662.50, + DoubleAgentsSum = 31775, + DeliverySum = 50000, + BrokerSum = 75000, + BrokerOfDeliverySum = 100000, + FinancialDeptOfDeliverySum = 125000, + ImporterSum = 16666.6666666667, + Nmper = 30 + }; + + var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); + agentComissionExpensesColumn.ComputeValues(preparedValues); + + + var expected = new[] + { + -446104.166666667, + 0.00, + -446104.166666667, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + }; + + Assert.Equal(expected.Length, agentComissionExpensesColumn.Values.Length); + Assert.Equal(expected, agentComissionExpensesColumn.Values, new DoubleArrayComparer()); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/ComissionBonusExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/ComissionBonusExpensesTests.cs new file mode 100644 index 0000000..2332c3e --- /dev/null +++ b/EvoCalculator.Core.Tests/Calculation/Columns/ComissionBonusExpensesTests.cs @@ -0,0 +1,56 @@ +using EvoCalculator.Core.Calculation.Columns; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; +using Xunit; + +namespace EvoCalculator.Core.Tests.Calculation.Columns +{ + public class ComissionBonusExpensesTests + { + [Fact] + public void ComissionBonusExpensesTest1() + { + var preparedValues = new PreparedValues() + { + ComissionRub = 125000, + Nmper = 24 + }; + + var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1); + comissionBonusExpensesColumn.ComputeValues(preparedValues); + + + var expected = new[] + { + 125000.00, + 125000.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + }; + + + Assert.Equal(expected.Length, comissionBonusExpensesColumn.Values.Length); + Assert.Equal(expected, comissionBonusExpensesColumn.Values, new DoubleArrayComparer()); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/ExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/ExpensesTests.cs new file mode 100644 index 0000000..fd9ede5 --- /dev/null +++ b/EvoCalculator.Core.Tests/Calculation/Columns/ExpensesTests.cs @@ -0,0 +1,378 @@ +using EvoCalculator.Core.Calculation.Columns; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; +using Xunit; + +namespace EvoCalculator.Core.Tests.Calculation.Columns +{ + public class ExpensesTests + { + [Fact] + public void ExpensesColumnTest1() + { + var preparedValues = new PreparedValues() + { + Nmper = 24 + }; + + var AgentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + -446104.166666667, + 0.00, + -446104.166666667, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + } + }; + + var RatExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + -6000, + -12000, + 0.00, + 0.00, + 6000, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + } + }; + + var TransExprensesColumn = new TransExprensesColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + -18000, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + -9000, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + -9000, + } + }; + + var NsibExpensesColumn = new NsibExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + -3376.08, + -1688.04, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + -1688.04, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + } + }; + + var TLMExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + -33600.00, + -20000, + -1600, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + } + }; + + var GPSExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + -25200.00, + -15000, + -1200, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + } + }; + + var RegistrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + -2300, + -2300, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + } + }; + + var InsuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + 26337.50, + 0.00, + 13168.75, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 13168.75, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + } + }; + + var ComissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + 125000, + 125000, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + } + }; + + var NPVBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + -19695.05642, + -1355.97852, + -18339.0779, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + } + }; + + + var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1); + expensesColumn.ComputeValues(AgentComissionExpensesColumn, RatExpensesColumn, TransExprensesColumn, + NsibExpensesColumn, TLMExpensesColumn, GPSExpensesColumn, RegistrExpensesColumn, + InsuranceBonusExpensesColumn, ComissionBonusExpensesColumn, NPVBonusExpensesColumn); + + + var expected = new[] + { + -412737.803086667, + 72655.98148, + -454074.494566667, + -1400, + 4600, + -1400, + -1400, + -1400, + -1400, + -1400, + -1400, + -1400, + -10400, + 10080.71, + -1400, + -1400, + -1400, + -1400, + -1400, + -1400, + -1400, + -1400, + -1400, + -1400, + -10400, + }; + + + Assert.Equal(expected.Length, expensesColumn.Values.Length); + Assert.Equal(expected, expensesColumn.Values, new DoubleArrayComparer()); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/GPSExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/GPSExpensesTests.cs new file mode 100644 index 0000000..628333f --- /dev/null +++ b/EvoCalculator.Core.Tests/Calculation/Columns/GPSExpensesTests.cs @@ -0,0 +1,124 @@ +using EvoCalculator.Core.Calculation.Columns; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; +using Xunit; + +namespace EvoCalculator.Core.Tests.Calculation.Columns +{ + public class GPSExpensesTests + { + [Fact] + public void GPSExpensesTest1() + { + var preparedValues = new PreparedValues() + { + Nmper = 17, + TrackerCost = 15000 + }; + + var preparedPayments = new PreparedPayments + { + Rows = new[] + { + new PaymentRow + { + GpsBasePayment = 0.00, + }, + new PaymentRow + { + GpsBasePayment = 1200.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + new PaymentRow + { + GpsBasePayment = 600.00, + }, + } + }; + + var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1); + gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments); + + + var expected = new[] + { + -25200.00, + -15000.00, + -1200.00, + -600.00, + -600.00, + -600.00, + -600.00, + -600.00, + -600.00, + -600.00, + -600.00, + -600.00, + -600.00, + -600.00, + -600.00, + -600.00, + -600.00, + -600.00, + }; + + + Assert.Equal(expected.Length, gpsExpensesColumn.Values.Length); + Assert.Equal(expected, gpsExpensesColumn.Values, new DoubleArrayComparer()); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs new file mode 100644 index 0000000..3568067 --- /dev/null +++ b/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs @@ -0,0 +1,187 @@ +using EvoCalculator.Core.Calculation.Columns; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; +using Xunit; + +namespace EvoCalculator.Core.Tests.Calculation.Columns +{ + public class InsuranceBonusExpensesTests + { + [Fact] + public void InsuranceBonusExpensesTest1() + { + var preparedValues = new PreparedValues() + { + InsuranceBonus = 26337.5, + NmperInsurance = 27, + Nmper = 27 + }; + + var targetColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + targetColumn.ComputeValues(preparedValues); + + + var expected = new[] + { + 26337.50, + 0.00, + 11705.5555555556, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 14631.9444444444, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + }; + + + Assert.Equal(expected.Length, targetColumn.Values.Length); + Assert.Equal(expected, targetColumn.Values, new DoubleArrayComparer()); + } + + [Fact] + public void InsuranceBonusExpensesTest2() + { + var preparedValues = new PreparedValues() + { + InsuranceBonus = 26337.5, + NmperInsurance = 24, + Nmper = 24 + }; + + var targetColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + targetColumn.ComputeValues(preparedValues); + + + var expected = new[] + { + 26337.50, + 0.00, + 13168.75, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 13168.75, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + }; + + + Assert.Equal(expected.Length, targetColumn.Values.Length); + Assert.Equal(expected, targetColumn.Values, new DoubleArrayComparer()); + } + + [Fact] + public void InsuranceBonusExpensesTest3() + { + var preparedValues = new PreparedValues() + { + InsuranceBonus = 32921.875, + NmperInsurance = 15, + Nmper = 15 + }; + + var targetColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + targetColumn.ComputeValues(preparedValues); + + + var expected = new[] + { + 32921.875, + 0.00, + 32921.875, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + }; + + + Assert.Equal(expected.Length, targetColumn.Values.Length); + Assert.Equal(expected, targetColumn.Values, new DoubleArrayComparer()); + } + + [Fact] + public void InsuranceBonusExpensesTest4() + { + var preparedValues = new PreparedValues() + { + InsuranceBonus = 26337.5, + NmperInsurance = 16, + Nmper = 16 + }; + + var targetColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + targetColumn.ComputeValues(preparedValues); + + + var expected = new[] + { + 26337.50, + 0.00, + 19753.125, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 6584.375, + 0.00, + 0.00, + 0.00, + }; + + + Assert.Equal(expected.Length, targetColumn.Values.Length); + Assert.Equal(expected, targetColumn.Values, new DoubleArrayComparer()); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/KaskoBonusGrSumTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/KaskoBonusGrSumTests.cs new file mode 100644 index 0000000..0100d0b --- /dev/null +++ b/EvoCalculator.Core.Tests/Calculation/Columns/KaskoBonusGrSumTests.cs @@ -0,0 +1,100 @@ +using EvoCalculator.Core.Calculation.Columns; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; +using Xunit; + +namespace EvoCalculator.Core.Tests.Calculation.Columns +{ + public class KaskoBonusGrSumTests + { + [Fact] + public void KaskoBonusGrSumTest1() + { + var preparedValues = new PreparedValues() + { + Nmper = 30 + }; + + var kaskoNmperGrColumn = + new KaskoNmperGrColumn(preparedValues.Nmper + 1, new DateTempColumn(preparedValues.Nmper)) + { + Values = new[] + { + -97954.4193420531, + 53000.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 53000.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 17666.6666666667, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + } + }; + + + var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1); + kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn); + + + var expected = new[] + { + 98933.3333333333, + 53000.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 37100.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 8833.33333333333, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + }; + + + Assert.Equal(expected, kaskoBonusGrSumColumn.Values, new DoubleArrayComparer()); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs index 30edf5f..b0a6cef 100644 --- a/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs @@ -385,5 +385,242 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns var res = kaskoNmperGrColumn.Values; Assert.Equal(expected, res); } + + [Fact] + public void KaskoNmperGrTest4() + { + var preparedValues = + new PreparedValues() + { + InsuranceKasko = 53000, + NmperInsurance = 15, + IrrExpected = 0.22, + Nmper = 15 + }; + + + var dateTempColumn = new DateTempColumn(67) + { + Values = new[] + { + 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 kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn); + kaskoNmperGrColumn.ComputeValues(preparedValues); + + + var expected = new[] + { + -66250, + 66250.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + }; + + var res = kaskoNmperGrColumn.Values; + + Assert.Equal(expected.Length, kaskoNmperGrColumn.Values.Length); + Assert.Equal(expected, res, new DoubleArrayComparer()); + } + + [Fact] + public void KaskoNmperGrTest5() + { + var preparedValues = + new PreparedValues() + { + InsuranceKasko = 53000, + NmperInsurance = 16, + IrrExpected = 0.22, + Nmper = 16 + }; + + + var dateTempColumn = new DateTempColumn(67) + { + Values = new[] + { + 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 kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn); + kaskoNmperGrColumn.ComputeValues(preparedValues); + + + var expected = new[] + { + -67480.8743169399, + 53000.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 17666.6666666667, + 0.00, + 0.00, + 0.00, + }; + + var res = kaskoNmperGrColumn.Values; + + Assert.Equal(expected.Length, kaskoNmperGrColumn.Values.Length); + Assert.Equal(expected, res, new DoubleArrayComparer()); + } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/NsibExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/NsibExpensesTests.cs new file mode 100644 index 0000000..5216318 --- /dev/null +++ b/EvoCalculator.Core.Tests/Calculation/Columns/NsibExpensesTests.cs @@ -0,0 +1,134 @@ +using EvoCalculator.Core.Calculation.Columns; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; +using Xunit; + +namespace EvoCalculator.Core.Tests.Calculation.Columns +{ + public class NsibExpensesTests + { + [Fact] + public void NsibExpensesTest1() + { + var preparedValues = new PreparedValues() + { + NsibNetto = 4186.80, + Nmper = 30 + }; + + var nsibExpensesColumn = new NsibExpensesColumn(preparedValues.Nmper + 1); + nsibExpensesColumn.ComputeValues(preparedValues); + + var expected = new[] + { + -4186.80, + -1674.72, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + -1674.72, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + -837.36, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + }; + + Assert.Equal(expected.Length, nsibExpensesColumn.Values.Length); + Assert.Equal(expected, nsibExpensesColumn.Values, new DoubleArrayComparer()); + } + + [Fact] + public void NsibExpensesTest2() + { + var preparedValues = new PreparedValues() + { + NsibNetto = 2093.40, + Nmper = 15 + }; + + var nsibExpensesColumn = new NsibExpensesColumn(preparedValues.Nmper + 1); + nsibExpensesColumn.ComputeValues(preparedValues); + + var expected = new[] + { + -2093.40, + -2093.40, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + }; + + Assert.Equal(expected.Length, nsibExpensesColumn.Values.Length); + Assert.Equal(expected, nsibExpensesColumn.Values, new DoubleArrayComparer()); + } + + [Fact] + public void NsibExpensesTest3() + { + var preparedValues = new PreparedValues() + { + NsibNetto = 2372.52, + Nmper = 17 + }; + + var nsibExpensesColumn = new NsibExpensesColumn(preparedValues.Nmper + 1); + nsibExpensesColumn.ComputeValues(preparedValues); + + var expected = new[] + { + -2372.52, + -1674.72, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + -697.80, + 0.00, + 0.00, + 0.00, + 0.00, + }; + + Assert.Equal(expected.Length, nsibExpensesColumn.Values.Length); + Assert.Equal(expected, nsibExpensesColumn.Values, new DoubleArrayComparer()); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/RatExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/RatExpensesTests.cs new file mode 100644 index 0000000..8a5cce2 --- /dev/null +++ b/EvoCalculator.Core.Tests/Calculation/Columns/RatExpensesTests.cs @@ -0,0 +1,62 @@ +using EvoCalculator.Core.Calculation.Columns; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; +using Xunit; + +namespace EvoCalculator.Core.Tests.Calculation.Columns +{ + public class RatExpensesTests + { + [Fact] + public void RatExpensesTest1() + { + var preparedValues = new PreparedValues() + { + BaseRatCost = 12000, + RetroBonus = 6000, + Nmper = 30, + }; + + var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1); + ratExpensesColumn.ComputeValues(preparedValues); + + + var expected = new[] + { + -6000.00, + -12000.00, + 0.00, + 0.00, + 6000.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + }; + + + Assert.Equal(expected, ratExpensesColumn.Values, new DoubleArrayComparer()); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/RegistrExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/RegistrExpensesTests.cs new file mode 100644 index 0000000..f854b15 --- /dev/null +++ b/EvoCalculator.Core.Tests/Calculation/Columns/RegistrExpensesTests.cs @@ -0,0 +1,49 @@ +using EvoCalculator.Core.Calculation.Columns; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; +using Xunit; + +namespace EvoCalculator.Core.Tests.Calculation.Columns +{ + public class RegistrExpensesTests + { + [Fact] + public void RegistrExpensesTest1() + { + var preparedValues = new PreparedValues() + { + BaseRegistration = 2300, + Nmper = 17, + }; + + var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1); + registrExpensesColumn.ComputeValues(preparedValues); + + + var expected = new[] + { + -2300.00, + -2300.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + }; + + + Assert.Equal(expected.Length, registrExpensesColumn.Values.Length); + Assert.Equal(expected, registrExpensesColumn.Values, new DoubleArrayComparer()); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/TLMExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/TLMExpensesTests.cs new file mode 100644 index 0000000..75b9d16 --- /dev/null +++ b/EvoCalculator.Core.Tests/Calculation/Columns/TLMExpensesTests.cs @@ -0,0 +1,124 @@ +using EvoCalculator.Core.Calculation.Columns; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; +using Xunit; + +namespace EvoCalculator.Core.Tests.Calculation.Columns +{ + public class TLMExpensesTests + { + [Fact] + public void TLMExpensesTest1() + { + var preparedValues = new PreparedValues() + { + Nmper = 17, + TLMCost = 20000 + }; + + var preparedPayments = new PreparedPayments + { + Rows = new[] + { + new PaymentRow + { + TlmBasePayment = 0.00, + }, + new PaymentRow + { + TlmBasePayment = 1600.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + new PaymentRow + { + TlmBasePayment = 800.00, + }, + } + }; + + var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1); + tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments); + + + var expected = new[] + { + -33600, + -20000.00, + -1600.00, + -800.00, + -800.00, + -800.00, + -800.00, + -800.00, + -800.00, + -800.00, + -800.00, + -800.00, + -800.00, + -800.00, + -800.00, + -800.00, + -800.00, + -800.00, + }; + + + Assert.Equal(expected.Length, tlmExpensesColumn.Values.Length); + Assert.Equal(expected, tlmExpensesColumn.Values, new DoubleArrayComparer()); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/TransExprensesTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/TransExprensesTests.cs new file mode 100644 index 0000000..bafb016 --- /dev/null +++ b/EvoCalculator.Core.Tests/Calculation/Columns/TransExprensesTests.cs @@ -0,0 +1,119 @@ +using EvoCalculator.Core.Calculation.Columns; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; +using Xunit; + +namespace EvoCalculator.Core.Tests.Calculation.Columns +{ + public class TransExprensesTests + { + [Fact] + public void TransExprensesTest1() + { + var preparedValues = new PreparedValues() + { + Nmper = 30, + TransportTaxGrYear = 12000, + TransportTaxGr = 30000 + }; + + var transExprensesColumn = new TransExprensesColumn(preparedValues.Nmper + 1); + transExprensesColumn.ComputeValues(preparedValues); + + + var expected = new[] + { + -30000.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + -12000.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + -12000.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + -6000.00, + }; + + + Assert.Equal(expected.Length, transExprensesColumn.Values.Length); + Assert.Equal(expected, transExprensesColumn.Values, new DoubleArrayComparer()); + } + + [Fact] + public void TransExprensesTest2() + { + var preparedValues = new PreparedValues() + { + Nmper = 32, + TransportTaxGrYear = 9000, + TransportTaxGr = 24000 + }; + + var transExprensesColumn = new TransExprensesColumn(preparedValues.Nmper + 1); + transExprensesColumn.ComputeValues(preparedValues); + + + var expected = new[] + { + -24000.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + -9000.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + -9000.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + -6000.00, + }; + + + Assert.Equal(expected.Length, transExprensesColumn.Values.Length); + Assert.Equal(expected, transExprensesColumn.Values, new DoubleArrayComparer()); + } + } +} \ No newline at end of file diff --git a/EvoCalculator.Core/EvoCalculator.Core.csproj b/EvoCalculator.Core/EvoCalculator.Core.csproj index 388bcc8..03d77b5 100644 --- a/EvoCalculator.Core/EvoCalculator.Core.csproj +++ b/EvoCalculator.Core/EvoCalculator.Core.csproj @@ -9,6 +9,7 @@ +