From 521384bd21b6321368b4094677d482698fe5c5a5 Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Tue, 14 Sep 2010 05:29:16 +0000 Subject: tests: Added XPath out of memory tests git-svn-id: http://pugixml.googlecode.com/svn/trunk@728 99668b35-9821-0410-8761-19e4c4f06640 --- tests/test_xpath_api.cpp | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'tests/test_xpath_api.cpp') diff --git a/tests/test_xpath_api.cpp b/tests/test_xpath_api.cpp index df9b9a6..281e357 100644 --- a/tests/test_xpath_api.cpp +++ b/tests/test_xpath_api.cpp @@ -314,6 +314,64 @@ TEST(xpath_api_exception_what) CHECK(e.what()[0] != 0); } } + +TEST(xpath_api_node_set_ctor_out_of_memory) +{ + test_runner::_memory_fail_threshold = 1; + + xpath_node data[2]; + + try + { + xpath_node_set ns(data, data + 2); + + CHECK_FORCE_FAIL("Expected out of memory exception"); + } + catch (const std::bad_alloc&) + { + } +} + +TEST(xpath_api_node_set_copy_ctor_out_of_memory) +{ + xpath_node data[2]; + xpath_node_set ns(data, data + 2); + + test_runner::_memory_fail_threshold = 1; + + try + { + xpath_node_set copy = ns; + + CHECK_FORCE_FAIL("Expected out of memory exception"); + } + catch (const std::bad_alloc&) + { + } +} + +TEST_XML(xpath_api_node_set_assign_out_of_memory_preserve, "") +{ + xpath_node_set ns = doc.select_nodes(STR("node/*")); + CHECK(ns.size() == 2); + + xpath_node_set nsall = doc.select_nodes(STR("//*")); + CHECK(nsall.size() == 3); + + test_runner::_memory_fail_threshold = 1; + + try + { + ns = nsall; + + CHECK_FORCE_FAIL("Expected out of memory exception"); + } + catch (const std::bad_alloc&) + { + } + + CHECK(ns.size() == 2 && ns[0] == doc.child(STR("node")).child(STR("a")) && ns[1] == doc.child(STR("node")).child(STR("b"))); +} #endif #endif -- cgit v1.2.3