summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/pugixml/tests/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/pugixml/tests/main.cpp')
-rw-r--r--3rdparty/pugixml/tests/main.cpp217
1 files changed, 0 insertions, 217 deletions
diff --git a/3rdparty/pugixml/tests/main.cpp b/3rdparty/pugixml/tests/main.cpp
deleted file mode 100644
index 8eb55eddd14..00000000000
--- a/3rdparty/pugixml/tests/main.cpp
+++ /dev/null
@@ -1,217 +0,0 @@
-#include "test.hpp"
-#include "allocator.hpp"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <float.h>
-#include <assert.h>
-
-#include <string>
-
-#ifndef PUGIXML_NO_EXCEPTIONS
-# include <exception>
-#endif
-
-#ifdef _WIN32_WCE
-# undef DebugBreak
-# pragma warning(disable: 4201) // nonstandard extension used: nameless struct/union
-# include <windows.h>
-#endif
-
-test_runner* test_runner::_tests = 0;
-size_t test_runner::_memory_fail_threshold = 0;
-bool test_runner::_memory_fail_triggered = false;
-jmp_buf test_runner::_failure_buffer;
-const char* test_runner::_failure_message;
-const char* test_runner::_temp_path;
-
-static size_t g_memory_total_size = 0;
-static size_t g_memory_total_count = 0;
-static size_t g_memory_fail_triggered = false;
-
-static void* custom_allocate(size_t size)
-{
- if (test_runner::_memory_fail_threshold > 0 && test_runner::_memory_fail_threshold < g_memory_total_size + size)
- {
- g_memory_fail_triggered = true;
- test_runner::_memory_fail_triggered = true;
-
- return 0;
- }
- else
- {
- void* ptr = memory_allocate(size);
- assert(ptr);
-
- g_memory_total_size += memory_size(ptr);
- g_memory_total_count++;
-
- return ptr;
- }
-}
-
-#ifndef PUGIXML_NO_EXCEPTIONS
-static void* custom_allocate_throw(size_t size)
-{
- void* result = custom_allocate(size);
-
- if (!result)
- throw std::bad_alloc();
-
- return result;
-}
-#endif
-
-static void custom_deallocate(void* ptr)
-{
- assert(ptr);
-
- g_memory_total_size -= memory_size(ptr);
- g_memory_total_count--;
-
- memory_deallocate(ptr);
-}
-
-static void replace_memory_management()
-{
- // create some document to touch original functions
- {
- pugi::xml_document doc;
- doc.append_child().set_name(STR("node"));
- }
-
- // replace functions
- pugi::set_memory_management_functions(custom_allocate, custom_deallocate);
-}
-
-#if defined(_MSC_VER) && _MSC_VER > 1200 && _MSC_VER < 1400 && !defined(__INTEL_COMPILER) && !defined(__DMC__)
-#include <exception>
-
-namespace std
-{
- _CRTIMP2 _Prhand _Raise_handler;
- _CRTIMP2 void __cdecl _Throw(const exception&) {}
-}
-#endif
-
-static bool run_test(test_runner* test, const char* test_name, pugi::allocation_function allocate)
-{
-#ifndef PUGIXML_NO_EXCEPTIONS
- try
- {
-#endif
- g_memory_total_size = 0;
- g_memory_total_count = 0;
- g_memory_fail_triggered = false;
- test_runner::_memory_fail_threshold = 0;
- test_runner::_memory_fail_triggered = false;
-
- pugi::set_memory_management_functions(allocate, custom_deallocate);
-
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable: 4611) // interaction between _setjmp and C++ object destruction is non-portable
-# pragma warning(disable: 4793) // function compiled as native: presence of '_setjmp' makes a function unmanaged
-#endif
-
- volatile int result = setjmp(test_runner::_failure_buffer);
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
- if (result)
- {
- printf("Test %s failed: %s\n", test_name, test_runner::_failure_message);
- return false;
- }
-
- test->run();
-
- if (test_runner::_memory_fail_triggered)
- {
- printf("Test %s failed: unguarded memory fail triggered\n", test_name);
- return false;
- }
-
- if (g_memory_total_size != 0 || g_memory_total_count != 0)
- {
- printf("Test %s failed: memory leaks found (%u bytes in %u allocations)\n", test_name, static_cast<unsigned int>(g_memory_total_size), static_cast<unsigned int>(g_memory_total_count));
- return false;
- }
-
- return true;
-#ifndef PUGIXML_NO_EXCEPTIONS
- }
- catch (const std::exception& e)
- {
- printf("Test %s failed: exception %s\n", test_name, e.what());
- return false;
- }
- catch (...)
- {
- printf("Test %s failed for unknown reason\n", test_name);
- return false;
- }
-#endif
-}
-
-#if defined(__CELLOS_LV2__) && defined(PUGIXML_NO_EXCEPTIONS) && !defined(__SNC__)
-#include <exception>
-
-void std::exception::_Raise() const
-{
- abort();
-}
-#endif
-
-int main(int, char** argv)
-{
-#ifdef __BORLANDC__
- _control87(MCW_EM | PC_53, MCW_EM | MCW_PC);
-#endif
-
- // setup temp path as the executable folder
- std::string temp = argv[0];
- std::string::size_type slash = temp.find_last_of("\\/");
- temp.erase((slash != std::string::npos) ? slash + 1 : 0);
-
- test_runner::_temp_path = temp.c_str();
-
- replace_memory_management();
-
- unsigned int total = 0;
- unsigned int passed = 0;
-
- test_runner* test = 0; // gcc3 "variable might be used uninitialized in this function" bug workaround
-
- for (test = test_runner::_tests; test; test = test->_next)
- {
- total++;
- passed += run_test(test, test->_name, custom_allocate);
-
- #ifndef PUGIXML_NO_EXCEPTIONS
- if (g_memory_fail_triggered)
- {
- total++;
- passed += run_test(test, (test->_name + std::string(" (throw)")).c_str(), custom_allocate_throw);
- }
- #endif
- }
-
- unsigned int failed = total - passed;
-
- if (failed != 0)
- printf("FAILURE: %u out of %u tests failed.\n", failed, total);
- else
- printf("Success: %u tests passed.\n", total);
-
- return failed;
-}
-
-#ifdef _WIN32_WCE
-int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
-{
- return main(0, NULL);
-}
-#endif