194 lines
4.0 KiB
C++
194 lines
4.0 KiB
C++
/*
|
||
* Copyright (c) 2016 The ZLToolKit project authors. All Rights Reserved.
|
||
*
|
||
* This file is part of ZLToolKit(https://github.com/ZLMediaKit/ZLToolKit).
|
||
*
|
||
* Use of this source code is governed by MIT license that can be found in the
|
||
* LICENSE file in the root of the source tree. All contributing project authors
|
||
* may be found in the AUTHORS file in the root of the source tree.
|
||
*/
|
||
|
||
#include <iostream>
|
||
#include "Util/logger.h"
|
||
using namespace std;
|
||
using namespace toolkit;
|
||
|
||
//测试onCreate和onDestory同时存在 [AUTO-TRANSLATED:152351be]
|
||
// Test when both onCreate and onDestroy exist
|
||
class TestA {
|
||
public:
|
||
TestA() {
|
||
TraceL;
|
||
}
|
||
|
||
~TestA() {
|
||
TraceL;
|
||
}
|
||
|
||
void onCreate() {
|
||
TraceL << demangle(typeid(*this).name()) << "::" << __FUNCTION__;
|
||
}
|
||
|
||
void onDestory() {
|
||
TraceL << demangle(typeid(*this).name()) << "::" << __FUNCTION__;
|
||
}
|
||
};
|
||
|
||
//测试只存在onCreate [AUTO-TRANSLATED:721019f3]
|
||
// Test when only onCreate exists
|
||
class TestB {
|
||
public:
|
||
TestB() {
|
||
TraceL;
|
||
}
|
||
|
||
~TestB() {
|
||
TraceL;
|
||
}
|
||
|
||
void onCreate() {
|
||
TraceL << demangle(typeid(*this).name()) << "::" << __FUNCTION__;
|
||
}
|
||
};
|
||
|
||
//测试只存在onDestory [AUTO-TRANSLATED:65090f10]
|
||
// Test when only onDestroy exists
|
||
class TestC {
|
||
public:
|
||
TestC() {
|
||
TraceL;
|
||
}
|
||
|
||
~TestC() {
|
||
TraceL;
|
||
}
|
||
|
||
void onDestory() {
|
||
TraceL << demangle(typeid(*this).name()) << "::" << __FUNCTION__;
|
||
}
|
||
};
|
||
|
||
//测试onCreate和onDestory返回值不为void时 [AUTO-TRANSLATED:cafa864e]
|
||
// Test when onCreate and onDestroy return values are not void
|
||
class TestD {
|
||
public:
|
||
TestD() {
|
||
TraceL;
|
||
}
|
||
|
||
~TestD() {
|
||
TraceL;
|
||
}
|
||
|
||
int onCreate() {
|
||
TraceL << demangle(typeid(*this).name()) << "::" << __FUNCTION__;
|
||
return 1;
|
||
}
|
||
|
||
std::string onDestory() {
|
||
TraceL << demangle(typeid(*this).name()) << "::" << __FUNCTION__;
|
||
return "test";
|
||
}
|
||
};
|
||
|
||
//测试onCreate和onDestory都不存在时 [AUTO-TRANSLATED:475fb8f1]
|
||
// Test when neither onCreate nor onDestroy exist
|
||
class TestE {
|
||
public:
|
||
TestE() {
|
||
TraceL;
|
||
}
|
||
|
||
~TestE() {
|
||
TraceL;
|
||
}
|
||
};
|
||
|
||
//测试自定义构造函数 [AUTO-TRANSLATED:13ffcdcf]
|
||
// Test custom constructor
|
||
class TestF {
|
||
public:
|
||
TestF(int a, const char *b) {
|
||
TraceL << a << " " << b;
|
||
}
|
||
|
||
~TestF() {
|
||
TraceL;
|
||
}
|
||
};
|
||
|
||
//测试自定义onCreate函数 [AUTO-TRANSLATED:35c11999]
|
||
// Test custom onCreate function
|
||
class TestH {
|
||
public:
|
||
TestH() {
|
||
TraceL;
|
||
}
|
||
|
||
int onCreate(int a = 0, const char *b = nullptr) {
|
||
TraceL << demangle(typeid(*this).name()) << "::" << __FUNCTION__ << " " << a << " " << b;
|
||
return 10;
|
||
}
|
||
|
||
~TestH() {
|
||
TraceL;
|
||
}
|
||
};
|
||
|
||
//测试onDestory函数抛异常 [AUTO-TRANSLATED:6d70c971]
|
||
// Test onDestroy function throws an exception
|
||
class TestI {
|
||
public:
|
||
TestI() {
|
||
TraceL;
|
||
}
|
||
|
||
int onDestory() {
|
||
TraceL << demangle(typeid(*this).name()) << "::" << __FUNCTION__;
|
||
throw std::runtime_error("TestI");
|
||
}
|
||
|
||
~TestI() {
|
||
TraceL;
|
||
}
|
||
};
|
||
|
||
//测试自定义onDestory,onDestory将被忽略调用 [AUTO-TRANSLATED:5ab2ba7d]
|
||
// Test custom onDestroy, onDestroy will be ignored when called
|
||
class TestJ {
|
||
public:
|
||
TestJ() {
|
||
TraceL;
|
||
}
|
||
|
||
int onDestory(int a) {
|
||
return a;
|
||
}
|
||
|
||
~TestJ() {
|
||
TraceL;
|
||
}
|
||
};
|
||
|
||
int main() {
|
||
//初始化日志系统 [AUTO-TRANSLATED:25c549de]
|
||
// Initialize the logging system
|
||
Logger::Instance().add(std::make_shared<ConsoleChannel>());
|
||
Logger::Instance().setWriter(std::make_shared<AsyncLogWriter>());
|
||
|
||
Creator::create<TestA>();
|
||
Creator::create<TestB>();
|
||
Creator::create<TestC>();
|
||
Creator::create<TestD>();
|
||
Creator::create<TestE>();
|
||
Creator::create<TestF>(1, "hellow");
|
||
{
|
||
auto h = Creator::create2<TestH>(1, "hellow");
|
||
TraceL << "invoke TestH onCreate ret:" << CLASS_FUNC_INVOKE(TestH, *h, Create, 1, "hellow");
|
||
}
|
||
|
||
Creator::create<TestI>();
|
||
Creator::create<TestJ>();
|
||
return 0;
|
||
}
|