Добавлен main и модуль вывода

Этот коммит содержится в:
Softonik 2024-06-25 18:14:00 +03:00 коммит произвёл Nobody
родитель 6809e376d7
коммит 2331561f35
5 изменённых файлов: 187 добавлений и 0 удалений

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 Обычный файл
Просмотреть файл

@ -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 Обычный файл
Просмотреть файл

@ -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 Обычный файл
Просмотреть файл

@ -0,0 +1,3 @@
# Во имя Бога Милостивого, Милосердного!!!
# language: ru
Функциональность: CLI

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()
}