From b6535b6c583b48ce6d0de914f2ccd4f45ddbadb5 Mon Sep 17 00:00:00 2001 From: Softonik Date: Thu, 27 Jun 2024 01:38:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BA=D1=80=D1=83=D0=B3=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=80=D1=83=D0=B1=D0=BB=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=B4=D0=BE=20=D0=BA=D0=BE=D0=BF=D0=B5=D0=B5=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/accuracy/accuracy.go | 4 ---- pkg/delo_lib/delo_lib.go | 14 ++++++++++++++ pkg/schet/features/app.feature | 8 ++++---- pkg/schet/helpers.go | 6 ++---- pkg/schet/init_test.go | 1 + pkg/schet/schet_test.go | 9 +++++++-- 6 files changed, 28 insertions(+), 14 deletions(-) diff --git a/pkg/accuracy/accuracy.go b/pkg/accuracy/accuracy.go index c3c28c0..f351d07 100644 --- a/pkg/accuracy/accuracy.go +++ b/pkg/accuracy/accuracy.go @@ -28,7 +28,3 @@ func СекундыВМинуты(seconds int) int { } return res + 1 } - -func ОкруглитьРубли(сумма float64) int { - return int(math.Round(сумма)) -} diff --git a/pkg/delo_lib/delo_lib.go b/pkg/delo_lib/delo_lib.go index 09b61ec..83bf855 100644 --- a/pkg/delo_lib/delo_lib.go +++ b/pkg/delo_lib/delo_lib.go @@ -2,10 +2,24 @@ package delo_lib import ( "errors" + "math" "strconv" "strings" ) +const ( + символовПослеЗапятойДоКопеек = 2 +) + +func ОкруглитьРубли(сумма float64) float64 { + return RoundFloat(сумма, символовПослеЗапятойДоКопеек) +} + +func RoundFloat(number float64, roundingTempDigitsCount int) float64 { + temp := math.Pow(10, float64(roundingTempDigitsCount)) + return math.Round(number*temp) / temp +} + func ДатувКвартал(in string) (int, error) { parts := strings.Split(in, ".") if len(parts) < 3 { diff --git a/pkg/schet/features/app.feature b/pkg/schet/features/app.feature index a1369ce..ab3185b 100644 --- a/pkg/schet/features/app.feature +++ b/pkg/schet/features/app.feature @@ -25,10 +25,10 @@ | доход | оплатить_за_квартал | оплатить_за_год | | 0 | 0 | 0 | | 300000 | 0 | 0 | - | 300001 | 0 | 0 | - | 300049 | 0 | 0 | - | 300050 | 1 | 1 | - | 300051 | 1 | 1 | + | 300001 | 0.01 | 0.01 | + | 300049 | 0.49 | 0.49 | + | 300050 | 0.50 | 0.50 | + | 300051 | 0.51 | 0.51 | | 300100 | 1 | 1 | | 300200 | 2 | 2 | | 400000 | 1000 | 1000 | diff --git a/pkg/schet/helpers.go b/pkg/schet/helpers.go index b4fab48..9de4b35 100644 --- a/pkg/schet/helpers.go +++ b/pkg/schet/helpers.go @@ -1,11 +1,9 @@ package schet -import ( - "my/schet/pkg/accuracy" -) +import "my/schet/pkg/delo_lib" func процентСуммы(сумма float64) float64 { часть := сумма / 100. - часть = float64(accuracy.ОкруглитьРубли(часть)) + часть = float64(delo_lib.ОкруглитьРубли(часть)) return часть } diff --git a/pkg/schet/init_test.go b/pkg/schet/init_test.go index 652e553..935338e 100644 --- a/pkg/schet/init_test.go +++ b/pkg/schet/init_test.go @@ -30,6 +30,7 @@ func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Step(`^Должна быть ошибка$`, должнаБытьОшибка) ctx.Step(`^Действие: "([^"]*)" за (\d+) квартал$`, действиеЗаКвартал) ctx.Step(`^Цель "([^"]*)" за (\d+) квартал достигнута: "([^"]*)"$`, цельЗаКварталДостигнута) + // ----------------------- ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() diff --git a/pkg/schet/schet_test.go b/pkg/schet/schet_test.go index 552f71a..5fb9579 100644 --- a/pkg/schet/schet_test.go +++ b/pkg/schet/schet_test.go @@ -2,6 +2,7 @@ package schet import ( "fmt" + "my/schet/pkg/delo_lib" . "my/schet/pkg/testlib" . "github.com/onsi/gomega" @@ -77,7 +78,9 @@ func естьЦельУСНЗаЭтотКвартал(v float64) { } func естьЦельСверхТрЗаКвартал(_, _, оплатить string) { - Ω(t.квартал.ПроцентСверх300тр()).To(Be(Atof(оплатить)), "1пр сверх 300тр за квартал") + v := Atof(оплатить) + v = delo_lib.ОкруглитьРубли(v) + Ω(t.квартал.ПроцентСверх300тр()).To(Be(v), "1пр сверх 300тр за квартал") } func естьЦельСверхТрЗаNКвартал(arg1, arg2, in int, оплатить string) { k, err := t.цели.Квартал(in) @@ -86,7 +89,9 @@ func естьЦельСверхТрЗаNКвартал(arg1, arg2, in int, оп Ω(k.ПроцентСверх300тр()).To(Be(Atof(оплатить)), fmt.Sprintf("1пр сверх 300тр за квартал %v", in)) } func естьЦельСверхТрЗаГод(_, _, оплатить string) { - Ω(t.g.ПроцентСверх300тр()).To(Be(Atof(оплатить)), "1пр сверх 300тр за год") + v := Atof(оплатить) + v = delo_lib.ОкруглитьРубли(v) + Ω(t.g.ПроцентСверх300тр()).To(Be(v), "1пр сверх 300тр за год") } func заданСчёт(v string) {