package httpmocks

import (
	"context"
	"io"
)

// MockEngine implements the engine.Engine interface for testing
type MockEngine struct {
	InitFunc        func(context.Context) (bool, error)
	ExecFunc        func(context.Context, []byte) (bool, error)
	WriteResultFunc func(context.Context, io.Writer) (int, error)
	FinishFunc      func() error
}

func (m *MockEngine) Init(ctx context.Context) (bool, error) {
	return m.InitFunc(ctx)
}

func (m *MockEngine) Exec(ctx context.Context, input []byte) (bool, error) {
	return m.ExecFunc(ctx, input)
}

func (m *MockEngine) WriteResult(ctx context.Context, w io.Writer) (int, error) {
	return m.WriteResultFunc(ctx, w)
}

func (m *MockEngine) Finish() error {
	return m.FinishFunc()
}