package mockapp

import (
	"context"
	"sync"
	"wartank/pkg/mock/mockkernel"
	"wartank/pkg/types"
)

type MockApp struct {
	types.ИЯдро
	fnCancel func()
	ctx      context.Context
	bot      types.ИБот
	store    types.ИХранилище
	block    *sync.RWMutex
}

func NewMockApp() *MockApp {
	ctxBg := context.Background()
	ctx, fnCancel := context.WithCancel(ctxBg)
	сам := &MockApp{
		ИЯдро:    mockkernel.NewMockKernel(),
		ctx:      ctx,
		fnCancel: fnCancel,
		block:    &sync.RWMutex{},
	}
	return сам
}

func (сам *MockApp) Store() types.ИХранилище {
	return сам.store
}

func (сам *MockApp) Bot() types.ИБот {
	return сам.bot
}

func (сам *MockApp) Angar() types.ИАнгар {
	return nil
}

func (сам *MockApp) CtxApp() context.Context {
	return сам.ctx
}

func (сам *MockApp) Tank() types.ИТанкСтат {
	return nil
}

func (сам *MockApp) Run() error {
	return nil
}

func (сам *MockApp) CancelApp() {
	go сам.fnCancel()
}

func (сам *MockApp) Block() *sync.RWMutex {
	return сам.block
}

func (сам *MockApp) NetClient() types.ИБотСеть {
	return nil
}

func (сам *MockApp) ServBots() types.ИБотоФерма {
	return nil
}
