123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- #include "SpBase.h"
- #include "SpTest.h"
- #include "SpTransactionContext.h"
- #include "SpEntity.h"
- #include <vector>
- #include <sstream>
- namespace {
- class TestRegistry : public ITestCaseRegistry
- {
- public:
- TestRegistry() :m_unnamedCount(0) {}
- virtual ~TestRegistry() {}
- virtual void RegisterTest(TestCase const& testCase)
- {
- std::string name = testCase.GetTestInfo().strName;
- if (name.empty()) {
- std::ostringstream oss;
- oss << "Anonymous test case " << ++m_unnamedCount;
- return RegisterTest(testCase.CloneExceptName(oss.str()));
- }
- m_functions.push_back(testCase);
- }
- virtual std::vector<TestCase> const& getAllTests(TestConfig const& config) const {
- return m_functions;
- }
- private:
- std::vector<TestCase> m_functions;
- size_t m_unnamedCount;
- };
- class CTestRegistryHub : public ITestRegistryHub {
- CTestRegistryHub(CTestRegistryHub const&) = delete;
- CTestRegistryHub& operator = (CTestRegistryHub const&) = delete;
- public:
- CTestRegistryHub() {}
- virtual void RegisterTest(TestCase const& testInfo) override
- {
- m_testCaseRegistry.RegisterTest(testInfo);
- }
- virtual ITestCaseRegistry const& GetTestCaseRegistry() const override
- {
- return m_testCaseRegistry;
- }
- private:
- TestRegistry m_testCaseRegistry;
- };
- CTestRegistryHub*& getTheRegistryHub() {
- static CTestRegistryHub* theRegistryHub = nullptr;
- if (!theRegistryHub) {
- theRegistryHub = new CTestRegistryHub();
- }
- return theRegistryHub;
- }
- }
- SPBASE_API ITestRegistryHub& GetRegistryHub()
- {
- return *getTheRegistryHub();
- }
- SPBASE_API TestCase MakeTestCase(IMethodTestCase* testCase,
- std::string const& className,
- std::string const& name,
- std::string const& desc,
- SourceLineInfo const& lineInfo)
- {
- TestCaseInfo info(name, className, desc, lineInfo);
- return TestCase(testCase, info);
- }
- SPBASE_API void RegisterTestCaseFunction(TestFunction function,
- NameAndDesc const& nameAndDesc,
- SourceLineInfo const& lineInfo
- )
- {
- RegisterTestCase(new DefaultFuncTestCase(function), "", nameAndDesc, lineInfo);
- }
- SPBASE_API void RegisterTestCase(IMethodTestCase* testCase, char const* className,
- NameAndDesc const& nameAndDesc,
- SourceLineInfo const& lineInfo)
- {
- GetRegistryHub().RegisterTest(
- MakeTestCase(testCase, SP::Utility::ExtractClassName(className),
- nameAndDesc.name, nameAndDesc.description,
- lineInfo
- ));
- }
- SPBASE_API CSmartPointer<ITransactionContext>
- CreateMockTransactionContext(CSmartPointer<IEntityFunction>const& entityFunction)
- {
- CSmartPointer<IEntityFunction> temp = entityFunction;
- CSmartPointer<ITransactionContext> pTransactionContext;
- SpEntity* entity = temp.ConvertCase<SpEntity>().GetRawPointer();
- pTransactionContext.Attach(new SpMockTransactionContext(entity/*nullptr*/));
- return pTransactionContext;
- }
|