You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

194 lines
4.0 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* 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;
}
};
//测试自定义onDestoryonDestory将被忽略调用 [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;
}