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 ---------------

 	{