add int64 support
diff --git a/xmltest.cpp b/xmltest.cpp
index 78f072c..2009d1a 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -686,6 +686,107 @@
XMLTest( "SetText types", "1.5", element->GetText() );
}
+ // ---------- Attributes ---------
+ {
+ static const int64_t BIG = -123456789012345678;
+ XMLDocument doc;
+ XMLElement* element = doc.NewElement("element");
+ doc.InsertFirstChild(element);
+
+ {
+ element->SetAttribute("attrib", int(-100));
+ int v = 0;
+ element->QueryIntAttribute("attrib", &v);
+ XMLTest("Attribute: int", -100, v, true);
+ element->QueryAttribute("attrib", &v);
+ XMLTest("Attribute: int", -100, v, true);
+ }
+ {
+ element->SetAttribute("attrib", unsigned(100));
+ unsigned v = 0;
+ element->QueryUnsignedAttribute("attrib", &v);
+ XMLTest("Attribute: unsigned", unsigned(100), v, true);
+ element->QueryAttribute("attrib", &v);
+ XMLTest("Attribute: unsigned", unsigned(100), v, true);
+ }
+ {
+ element->SetAttribute("attrib", BIG);
+ int64_t v = 0;
+ element->QueryInt64Attribute("attrib", &v);
+ XMLTest("Attribute: int64_t", BIG, v, true);
+ element->QueryAttribute("attrib", &v);
+ XMLTest("Attribute: int64_t", BIG, v, true);
+ }
+ {
+ element->SetAttribute("attrib", true);
+ bool v = false;
+ element->QueryBoolAttribute("attrib", &v);
+ XMLTest("Attribute: bool", true, v, true);
+ element->QueryAttribute("attrib", &v);
+ XMLTest("Attribute: bool", true, v, true);
+ }
+ {
+ element->SetAttribute("attrib", 100.0);
+ double v = 0;
+ element->QueryDoubleAttribute("attrib", &v);
+ XMLTest("Attribute: double", 100.0, v, true);
+ element->QueryAttribute("attrib", &v);
+ XMLTest("Attribute: double", 100.0, v, true);
+ }
+ {
+ element->SetAttribute("attrib", 100.0f);
+ float v = 0;
+ element->QueryFloatAttribute("attrib", &v);
+ XMLTest("Attribute: float", 100.0f, v, true);
+ element->QueryAttribute("attrib", &v);
+ XMLTest("Attribute: float", 100.0f, v, true);
+ }
+ {
+ element->SetText(BIG);
+ int64_t v = 0;
+ element->QueryInt64Text(&v);
+ XMLTest("Element: int64_t", BIG, v, true);
+ }
+ }
+
+ // ---------- XMLPrinter stream mode ------
+ {
+ {
+ FILE* printerfp = fopen("resources/printer.xml", "w");
+ XMLPrinter printer(printerfp);
+ printer.OpenElement("foo");
+ printer.PushAttribute("attrib-text", "text");
+ printer.PushAttribute("attrib-int", int(1));
+ printer.PushAttribute("attrib-unsigned", unsigned(2));
+ printer.PushAttribute("attrib-int64", int64_t(3));
+ printer.PushAttribute("attrib-bool", true);
+ printer.PushAttribute("attrib-double", 4.0);
+ printer.CloseElement();
+ fclose(printerfp);
+ }
+ {
+ XMLDocument doc;
+ doc.LoadFile("resources/printer.xml");
+ XMLTest("XMLPrinter Stream mode: load", doc.ErrorID(), XML_SUCCESS, true);
+
+ const XMLDocument& cdoc = doc;
+
+ const XMLAttribute* attrib = cdoc.FirstChildElement("foo")->FindAttribute("attrib-text");
+ XMLTest("attrib-text", "text", attrib->Value(), true);
+ attrib = cdoc.FirstChildElement("foo")->FindAttribute("attrib-int");
+ XMLTest("attrib-int", int(1), attrib->IntValue(), true);
+ attrib = cdoc.FirstChildElement("foo")->FindAttribute("attrib-unsigned");
+ XMLTest("attrib-unsigned", unsigned(2), attrib->UnsignedValue(), true);
+ attrib = cdoc.FirstChildElement("foo")->FindAttribute("attrib-int64");
+ XMLTest("attrib-int64", int64_t(3), attrib->Int64Value(), true);
+ attrib = cdoc.FirstChildElement("foo")->FindAttribute("attrib-bool");
+ XMLTest("attrib-bool", true, attrib->BoolValue(), true);
+ attrib = cdoc.FirstChildElement("foo")->FindAttribute("attrib-double");
+ XMLTest("attrib-double", 4.0, attrib->DoubleValue(), true);
+ }
+
+ }
+
// ---------- CDATA ---------------
{