test.hpp.svn-base
来自「本人找过多个在linux下c++的lua5.1封装库,但很少.luabind已经」· SVN-BASE 代码 · 共 140 行
SVN-BASE
140 行
// Copyright (c) 2005 Daniel Wallin, Arvid Norberg// Permission is hereby granted, free of charge, to any person obtaining a// copy of this software and associated documentation files (the "Software"),// to deal in the Software without restriction, including without limitation// the rights to use, copy, modify, merge, publish, distribute, sublicense,// and/or sell copies of the Software, and to permit persons to whom the// Software is furnished to do so, subject to the following conditions:// The above copyright notice and this permission notice shall be included// in all copies or substantial portions of the Software.// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF// ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT// SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR// ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE// OR OTHER DEALINGS IN THE SOFTWARE.#ifndef TEST_050415_HPP#define TEST_050415_HPP#include <boost/preprocessor/cat.hpp>#include <luabind/error.hpp>extern "C" { #include "lua.h" #include "lauxlib.h" #include "lualib.h"}void report_failure(char const* str, char const* file, int line);#if defined(_MSC_VER)#define COUNTER_GUARD(x)#else#define COUNTER_GUARD(type) \ struct BOOST_PP_CAT(type, _counter_guard) \ { \ ~BOOST_PP_CAT(type, _counter_guard()) \ { \ TEST_CHECK(counted_type<type>::count == 0); \ } \ } BOOST_PP_CAT(type, _guard)#endif#define TEST_REPORT_AUX(x, line, file) \ report_failure(x, line, file)#define TEST_CHECK(x) \ if (!(x)) \ TEST_REPORT_AUX("TEST_CHECK failed: \"" #x "\"", __FILE__, __LINE__)#define TEST_ERROR(x) \ TEST_REPORT_AUX((std::string("ERROR: \"") + x + "\"").c_str(), __FILE__, __LINE__)#define TEST_NOTHROW(x) \ try \ { \ x; \ } \ catch (...) \ { \ TEST_ERROR("Exception thrown: " #x); \ }void dostring(lua_State* L, char const* str);template<class T>struct counted_type{ static int count; counted_type() { ++count; } counted_type(counted_type const&) { ++count; } ~counted_type() { TEST_CHECK(--count >= 0); }};template<class T>int counted_type<T>::count = 0;#define DOSTRING_EXPECTED(state_, str, expected) \{ \ try \ { \ dostring(state_, str); \ } \ catch (luabind::error const& e) \ { \ using namespace std; \ if (std::strcmp( \ lua_tostring(e.state(), -1) \ , (char const*)expected)) \ { \ TEST_ERROR(lua_tostring(e.state(), -1)); \ lua_pop(L, 1); \ } \ } \ catch (std::string const& s) \ { \ if (s != expected) \ TEST_ERROR(s.c_str()); \ } \}#define DOSTRING(state_, str) \{ \ try \ { \ dostring(state_, str); \ } \ catch (luabind::error const& e) \ { \ TEST_ERROR(lua_tostring(e.state(), -1)); \ lua_pop(L, 1); \ } \ catch (std::string const& s) \ { \ TEST_ERROR(s.c_str()); \ } \}#endif // TEST_050415_HPP
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?