From 162962a7364a6c39a49f7936adee2a6d0cdb8da5 Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Sat, 29 May 2010 13:36:53 +0000 Subject: tests: Fixed tests for wchar_t mode, disabled some tests on compilers with broken NaN behavior git-svn-id: http://pugixml.googlecode.com/svn/trunk@463 99668b35-9821-0410-8761-19e4c4f06640 --- tests/test.hpp | 6 ++++++ tests/test_xpath.cpp | 20 ++++++++++---------- tests/test_xpath_operators.cpp | 12 ------------ tests/test_xpath_xalan_1.cpp | 25 ++++++++++++++++++------- 4 files changed, 34 insertions(+), 29 deletions(-) (limited to 'tests') diff --git a/tests/test.hpp b/tests/test.hpp index 5559baa..e99eb57 100644 --- a/tests/test.hpp +++ b/tests/test.hpp @@ -134,6 +134,12 @@ struct dummy_fixture {}; #define U_LITERALS // DMC does not understand \x01234 (it parses first three digits), but understands \u01234 #endif +#if (defined(_MSC_VER) && _MSC_VER == 1200) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER == 800) || defined(__BORLANDC__) +// NaN comparison on MSVC6 is incorrect, see http://www.nabble.com/assertDoubleEquals,-NaN---Microsoft-Visual-Studio-6-td9137859.html +// IC8 and BCC are also affected by the same bug +# define MSVC6_NAN_BUG +#endif + inline wchar_t wchar_cast(unsigned int value) { return static_cast(value); // to avoid C4310 on MSVC diff --git a/tests/test_xpath.cpp b/tests/test_xpath.cpp index 6f7f756..3a855cc 100644 --- a/tests/test_xpath.cpp +++ b/tests/test_xpath.cpp @@ -186,15 +186,15 @@ TEST_XML(xpath_xsl_list_2, "text1text20.5
") @@ -206,8 +206,8 @@ TEST_XML(xpath_star_token, "0.5
1023") { xml_node c; diff --git a/tests/test_xpath_xalan_1.cpp b/tests/test_xpath_xalan_1.cpp index c1d2733..4e685af 100644 --- a/tests/test_xpath_xalan_1.cpp +++ b/tests/test_xpath_xalan_1.cpp @@ -103,7 +103,7 @@ TEST_XML(xpath_xalan_boolean_4, "foobarfoobarfoofirstsecondthirdfourth") { - xml_node c = doc.child("doc"); + xml_node c = doc.child(STR("doc")); CHECK_XPATH_BOOLEAN(c, STR("j[@l='12'] = j[@w='33']"), true); CHECK_XPATH_BOOLEAN(c, STR("j[@l='12'] = j[@l='17']"), false); @@ -117,7 +117,7 @@ TEST_XML(xpath_xalan_boolean_5, "first12345678") { - xml_node c = doc.child("doc"); + xml_node c = doc.child(STR("doc")); CHECK_XPATH_BOOLEAN(c, STR("avj/good/*=34"), true); CHECK_XPATH_BOOLEAN(c, STR("not(avj/good/*=34)"), false); @@ -132,7 +132,7 @@ TEST_XML(xpath_xalan_boolean_6, "1234567 TEST_XML(xpath_xalan_boolean_7, "truefalse?10") { - xml_node c = doc.child("doc"); + xml_node c = doc.child(STR("doc")); CHECK_XPATH_BOOLEAN(c, STR("avj/bool/*=true()"), true); CHECK_XPATH_BOOLEAN(c, STR("not(avj/bool/*=true())"), false); @@ -165,7 +165,7 @@ TEST_XML(xpath_xalan_conditional, "b") CHECK_XPATH_BOOLEAN(c, STR("'a'='a'"), true); CHECK_XPATH_BOOLEAN(c, STR("2+2=4"), true); - xml_node b = doc.child("letters").first_child(); + xml_node b = doc.child(STR("letters")).first_child(); CHECK_XPATH_BOOLEAN(b, STR(".='b'"), true); CHECK_XPATH_BOOLEAN(b, STR("name(..)='letters'"), true); @@ -194,8 +194,12 @@ TEST_XML(xpath_xalan_math_1, "3") CHECK_XPATH_BOOLEAN(c, STR("number(string(1.0))=1"), true); CHECK_XPATH_BOOLEAN(c, STR("number(true())=1"), true); CHECK_XPATH_BOOLEAN(c, STR("number(false())=0"), true); + +#ifndef MSVC6_NAN_BUG CHECK_XPATH_BOOLEAN(c, STR("number('xxx')=number('xxx')"), false); CHECK_XPATH_BOOLEAN(c, STR("number('xxx')=0"), false); +#endif + CHECK_XPATH_NUMBER(doc, STR("floor(a)"), 3); CHECK_XPATH_NUMBER(c, STR("floor(1.9)"), 1); CHECK_XPATH_NUMBER(c, STR("floor(2.999999)"), 2); @@ -243,7 +247,7 @@ TEST_XML(xpath_xalan_math_3, "24 TEST_XML(xpath_xalan_math_4, "231237212
5
2
") { - xml_node c = doc.child("doc"); + xml_node c = doc.child(STR("doc")); CHECK_XPATH_NUMBER(c, STR("n1*n2"), 6); CHECK_XPATH_NUMBER(c, STR("n1/@a*n2/@a"), 2); @@ -275,8 +279,11 @@ TEST_XML(xpath_xalan_math_4, "23123
= 0"), false); CHECK_XPATH_BOOLEAN(c, STR("0 div 0 < 0"), false); +#endif CHECK_XPATH_NUMBER(c, STR("n1 mod n2"), 2); CHECK_XPATH_NUMBER(c, STR("div mod mod"), 1); @@ -301,8 +308,12 @@ TEST(xpath_xalan_math_5) CHECK_XPATH_NUMBER_NAN(c, STR("number('xxx') - 3")); CHECK_XPATH_NUMBER_NAN(c, STR("2 div number('xxx')")); CHECK_XPATH_NUMBER_NAN(c, STR("number('xxx') div 3")); + +#ifndef __BORLANDC__ // BCC fmod does not propagate NaN correctly CHECK_XPATH_NUMBER_NAN(c, STR("2 mod number('xxx')")); CHECK_XPATH_NUMBER_NAN(c, STR("number('xxx') mod 3")); +#endif + CHECK_XPATH_NUMBER_NAN(c, STR("floor(number('xxx'))")); CHECK_XPATH_NUMBER_NAN(c, STR("ceiling(number('xxx'))")); CHECK_XPATH_NUMBER_NAN(c, STR("round(number('xxx'))")); @@ -323,7 +334,7 @@ TEST(xpath_xalan_math_5) TEST_XML(xpath_xalan_math_6, "37x") { - xml_node c = doc.child("doc"); + xml_node c = doc.child(STR("doc")); CHECK_XPATH_NUMBER(c, STR("-(n1|n2)"), -3); CHECK_XPATH_NUMBER(c, STR("-(n2|n1)"), -3); @@ -333,7 +344,7 @@ TEST_XML(xpath_xalan_math_6, "37x") TEST_XML(xpath_xalan_math_7, "37x") { - xml_node c = doc.child("doc"); + xml_node c = doc.child(STR("doc")); CHECK_XPATH_NUMBER(c, STR("-(n1|n2)"), -3); CHECK_XPATH_NUMBER(c, STR("-(n2|n1)"), -3); -- cgit v1.2.3