Добавлен main и модуль вывода
Этот коммит содержится в:
родитель
6809e376d7
коммит
2331561f35
5 изменённых файлов: 187 добавлений и 0 удалений
16
cmd/schet/main.go
Обычный файл
16
cmd/schet/main.go
Обычный файл
|
@ -0,0 +1,16 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"my/schet/pkg/output/cli"
|
||||||
|
"my/schet/pkg/schet"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
Год = 2024
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
g := schet.NewГод(Год)
|
||||||
|
output := cli.NewCLI()
|
||||||
|
g.Вывести(output)
|
||||||
|
}
|
86
pkg/output/cli/cli.go
Обычный файл
86
pkg/output/cli/cli.go
Обычный файл
|
@ -0,0 +1,86 @@
|
||||||
|
package cli
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"my/schet/pkg/schet"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CLI struct {
|
||||||
|
год *schet.Год
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewCLI() *CLI {
|
||||||
|
c := &CLI{}
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *CLI) Печать(год *schet.Год) error {
|
||||||
|
c.год = год
|
||||||
|
fmt.Printf("## Год: %v\n", c.год.Год())
|
||||||
|
|
||||||
|
err := c.кварталы()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *CLI) кварталы() error {
|
||||||
|
цели := c.год.Цели()
|
||||||
|
for _, k := range цели.Кварталы {
|
||||||
|
c.квартал(k)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *CLI) квартал(k *schet.Квартал) error {
|
||||||
|
fmt.Printf("### к%v\n\n", k.Номер())
|
||||||
|
fmt.Printf("- [ ] ОПС: %v р.\n", k.ОПС.Сумма())
|
||||||
|
пр, err := k.ПроцентСверх300тр()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("- [ ] 1пр свыше 300тр: ошибка: %v\n", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Printf("- [ ] 1пр свыше 300тр: %v р.\n", пр)
|
||||||
|
fmt.Printf("- [ ] УСН: %v р.\n", k.УСН.Сумма())
|
||||||
|
|
||||||
|
fmt.Printf("==================================\n\n")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// func (g *CLI) Квартал(in int) (k *Квартал, e error) {
|
||||||
|
// return g.цели.Квартал(in)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// func (g *CLI) ДобавитьДоход(доход float64, i int) error {
|
||||||
|
// k, err := g.Квартал(i)
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
|
||||||
|
// g.доход += доход
|
||||||
|
|
||||||
|
// return k.ДобавитьДоход(доход)
|
||||||
|
// }
|
||||||
|
// func (g *CLI) Доход() float64 {
|
||||||
|
// return g.доход
|
||||||
|
// }
|
||||||
|
|
||||||
|
// func (g *CLI) ПроцентСверх300тр() (float64, error) {
|
||||||
|
// return ПроцентСверх300тр(g.доход), nil
|
||||||
|
// }
|
||||||
|
|
||||||
|
// func (g *CLI) Сверх300трвКвартале(квартал int) (float64, error) {
|
||||||
|
// сумматор := NewСумматор300тр()
|
||||||
|
// for i := НомерПервогоКвартала; i <= квартал; i++ {
|
||||||
|
// k, err := g.Квартал(i)
|
||||||
|
// if err != nil {
|
||||||
|
// return 0, err
|
||||||
|
// }
|
||||||
|
// сумматор.ДобавитьКвартал(k.доход)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return сумматор.Квартал(квартал)
|
||||||
|
// }
|
31
pkg/output/cli/cli_test.go
Обычный файл
31
pkg/output/cli/cli_test.go
Обычный файл
|
@ -0,0 +1,31 @@
|
||||||
|
package cli
|
||||||
|
|
||||||
|
import (
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
)
|
||||||
|
|
||||||
|
type testData struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
t *testData
|
||||||
|
)
|
||||||
|
|
||||||
|
func resetTestData() {
|
||||||
|
t = &testData{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func beforeSuite() {
|
||||||
|
}
|
||||||
|
func afterSuite() {
|
||||||
|
}
|
||||||
|
|
||||||
|
func beforeScenario() {
|
||||||
|
resetTestData()
|
||||||
|
_ = Ω
|
||||||
|
|
||||||
|
}
|
||||||
|
func afterScenario() {
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------
|
3
pkg/output/cli/features/app.feature
Обычный файл
3
pkg/output/cli/features/app.feature
Обычный файл
|
@ -0,0 +1,3 @@
|
||||||
|
# Во имя Бога Милостивого, Милосердного!!!
|
||||||
|
# language: ru
|
||||||
|
Функциональность: CLI
|
51
pkg/output/cli/init_test.go
Обычный файл
51
pkg/output/cli/init_test.go
Обычный файл
|
@ -0,0 +1,51 @@
|
||||||
|
package cli
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
. "my/schet/pkg/testlib"
|
||||||
|
|
||||||
|
"github.com/cucumber/godog"
|
||||||
|
"github.com/cucumber/godog/colors"
|
||||||
|
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
)
|
||||||
|
|
||||||
|
func InitializeScenario(ctx *godog.ScenarioContext) {
|
||||||
|
|
||||||
|
// -----------------------
|
||||||
|
ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) {
|
||||||
|
beforeScenario()
|
||||||
|
return ctx, nil
|
||||||
|
})
|
||||||
|
ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) {
|
||||||
|
afterScenario()
|
||||||
|
return ctx, nil
|
||||||
|
})
|
||||||
|
InitializeGomegaForGodog(ctx)
|
||||||
|
_ = Ω
|
||||||
|
}
|
||||||
|
|
||||||
|
func InitializeSuite(tsc *godog.TestSuiteContext) {
|
||||||
|
tsc.BeforeSuite(beforeSuite)
|
||||||
|
tsc.AfterSuite(afterSuite)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMain(t *testing.T) {
|
||||||
|
var opts = godog.Options{
|
||||||
|
Output: colors.Colored(os.Stdout),
|
||||||
|
Strict: true,
|
||||||
|
StopOnFailure: true,
|
||||||
|
TestingT: t,
|
||||||
|
}
|
||||||
|
|
||||||
|
godog.BindCommandLineFlags("godog.", &opts)
|
||||||
|
godog.TestSuite{
|
||||||
|
Name: "app",
|
||||||
|
TestSuiteInitializer: InitializeSuite,
|
||||||
|
ScenarioInitializer: InitializeScenario,
|
||||||
|
Options: &opts,
|
||||||
|
}.Run()
|
||||||
|
}
|
Загрузка…
Создание таблицы
Сослаться в новой задаче