// Code generated by testifylint/internal/testgen. DO NOT EDIT.

package suitemethodsignature

import (
	"testing"

	"github.com/stretchr/testify/suite"
)

type ValidSuite struct {
	suite.Suite
}

func TestValidSuite(t *testing.T) {
	suite.Run(t, new(ValidSuite))
}

func (s *ValidSuite) SetupSuite()                                                 {}
func (s *ValidSuite) SetupTest()                                                  {}
func (s *ValidSuite) TearDownSuite()                                              {}
func (s *ValidSuite) TearDownTest()                                               {}
func (s *ValidSuite) BeforeTest(suiteName, testName string)                       {}
func (s *ValidSuite) AfterTest(suiteName, testName string)                        {}
func (s *ValidSuite) HandleStats(suiteName string, stats *suite.SuiteInformation) {}
func (s *ValidSuite) SetupSubTest()                                               {}
func (s *ValidSuite) TearDownSubTest()                                            {}
func (s *ValidSuite) TestTrue()                                                   { s.True(true) }

var (
	_ suite.SetupAllSuite     = (*ValidSuite)(nil)
	_ suite.SetupTestSuite    = (*ValidSuite)(nil)
	_ suite.TearDownAllSuite  = (*ValidSuite)(nil)
	_ suite.TearDownTestSuite = (*ValidSuite)(nil)
	_ suite.BeforeTest        = (*ValidSuite)(nil)
	_ suite.AfterTest         = (*ValidSuite)(nil)
	_ suite.WithStats         = (*ValidSuite)(nil)
	_ suite.SetupSubTest      = (*ValidSuite)(nil)
	_ suite.TearDownSubTest   = (*ValidSuite)(nil)
)

type InvalidSuite struct {
	suite.Suite
}

func TestInvalidSuite(t *testing.T) {
	suite.Run(t, new(InvalidSuite))
}

func (s *InvalidSuite) SetupSuite(_ bool)                                          {}                   // want "suite-method-signature: method conflicts with suite\\.SetupAllSuite interface"
func (s *InvalidSuite) SetupTest() int                                             { return 0 }         // want "suite-method-signature: method conflicts with suite\\.SetupTestSuite interface"
func (s *InvalidSuite) TearDownSuite(_ bool, _ int)                                {}                   // want "suite-method-signature: method conflicts with suite\\.TearDownAllSuite interface"
func (s *InvalidSuite) TearDownTest() (string, bool)                               { return "", false } // want "suite-method-signature: method conflicts with suite\\.TearDownTestSuite interface"
func (s *InvalidSuite) BeforeTest(suiteName string, testName int)                  {}                   // want "suite-method-signature: method conflicts with suite\\.BeforeTest interface"
func (s *InvalidSuite) AfterTest(suiteName int, testName string)                   {}                   // want "suite-method-signature: method conflicts with suite\\.AfterTest interface"
func (s *InvalidSuite) HandleStats(suiteName string, stats suite.SuiteInformation) {}                   // want "suite-method-signature: method conflicts with suite\\.WithStats interface"
func (s *InvalidSuite) SetupSubTest(_ string)                                      {}                   // want "suite-method-signature: method conflicts with suite\\.SetupSubTest interface"
func (s *InvalidSuite) TearDownSubTest(ss string) string                           { return ss }        // want "suite-method-signature: method conflicts with suite\\.TearDownSubTest interface"

func (s *InvalidSuite) TestTrue()               { s.True(true) }
func (s *InvalidSuite) Test1(t *testing.T)      { s.True(true) }        // want "suite-method-signature: test method should not have any arguments or returning values"
func (s *InvalidSuite) Test2() bool             { return s.True(true) } // want "suite-method-signature: test method should not have any arguments or returning values"
func (s *InvalidSuite) Test3(_ *testing.T) bool { return s.True(true) } // want "suite-method-signature: test method should not have any arguments or returning values"

type MixedSuite struct {
	suite.Suite
}

func TestMixedSuite(t *testing.T) {
	suite.Run(t, new(MixedSuite))
}

func (s *MixedSuite) SetupSuite()                                               {}
func (s *MixedSuite) SetupTest() int                                            { return 0 } // want "suite-method-signature: method conflicts with suite\\.SetupTestSuite interface"
func (s *MixedSuite) TearDownSuite()                                            {}
func (s MixedSuite) TearDownTest() (string, bool)                               { return "", false } // Value receivers are not supported.
func (s MixedSuite) BeforeTest(suiteName, testName string)                      {}
func (s MixedSuite) AfterTest(suiteName, testName string)                       {}
func (s MixedSuite) HandleStats(suiteName string, stats suite.SuiteInformation) {} // Value receivers are not supported.
func (s *MixedSuite) SetupSubTest()                                             {}
func (s *MixedSuite) TearDownSubTest()                                          {}

func (s *MixedSuite) TestTrue()              { s.True(true) }
func (s *MixedSuite) TestFalse(t *testing.T) { s.False(false) } // want "suite-method-signature: test method should not have any arguments or returning values"
