// -*- mode:C++; tab-width:2; c-basic-offset:2; indent-tabs-mode:nil -*- // // Copyright (C) 2000-2005 by Roger Rene Kommer / artefaktur, Kassel, Germany. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public License (LGPL). // // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // License ACDK-FreeLicense document enclosed in the distribution // for more for more details. // This file is part of the Artefaktur Component Development Kit: // ACDK // // Please refer to // - http://www.acdk.de // - http://www.artefaktur.com // - http://acdk.sourceforge.net // for more information. // // $Header: /cvsroot/acdk/acdk/acdk_xml/tests/acdk/xml/acdk_xml_XMLObjectReaderWriter_Test.cpp,v 1.13 2005/03/07 20:21:42 kommer Exp $ #include <acdk.h> #include <acdk/lang/System.h> #include <acdk/lang/Integer.h> #include <acdk/io/FileWriter.h> #include <acdk/io/FileReader.h> #include <acdk/io/Reader.h> #include <acdk/util/Date.h> #include <acdk/util/HashMap.h> #include "../../../src/acdk/xml/XMLObjectWriter.h" #include "../../../src/acdk/xml/XMLObjectReader.h" namespace tests { namespace acdk { namespace xml { using namespace ::acdk::lang; USING_CLASS(::acdk::io::, FileWriter); USING_CLASS(::acdk::io::, FileReader); USING_CLASS(::acdk::util::, HashMap); USING_CLASS(::acdk::xml::, XMLObjectWriter); USING_CLASS(::acdk::xml::, XMLObjectReader); USING_CLASS(::acdk::xml::, TestClass); class XMLReaderWriter_Test : public acdk::lang::Object { public: static void readWrite(acdk::lang::Object obj); static int acdkmain(RStringArray args); }; //static void XMLReaderWriter_Test::readWrite(acdk::lang::Object object) { RString fname = "./TestClass.xml"; { FileWriter fout(fname); // the XMLObjectWriter XMLObjectWriter xmlout(&fout, ::acdk::xml::XMLSerializeDefaultFlags | ::acdk::io::SerializeAll); // dump out with field information //##xmlout->withFieldInfo(true); xmlout.writeObject(object); } FileReader fin(fname); XMLObjectReader xmlin(&fin, ::acdk::xml::XMLSerializeDefaultFlags | ::acdk::io::SerializeAll); acdk::lang::Object readedObject = xmlin.readObject(); if (object == readedObject && object == Nil) { System::out->println("Test OK with NIL"); } else if (readedObject->equals(object) == false) { System::out->println("Test failed with obj: " + object->getClass()->getName()); System::out->println(object->toString() + " | " + readedObject->toString()); } else System::out->println("Test OK with obj: " + object->getClass()->getName()); } //static int XMLReaderWriter_Test::acdkmain(RStringArray args) { // create an instance to serialize // test for Nil readWrite(Nil); readWrite(new String("Hello")); readWrite(new StringBuffer("Hello")); RintArray ia = new intArray(2); ia[0] = 12; ia[1] = 31; readWrite((acdk::lang::Object)ia); /* does't work at the moment RObjectArray ra = new ObjectArray(1); ra[0] = new acdk::lang::Object(); readWrite(&ra); ra[0] = &ra; readWrite(&ra); RHashMap hm = new HashMap(); //hm->put(&RString("Roger"), &RString("Kommer")); readWrite(&hm); { RTestClass object = new TestClass(); readWrite((acdk::lang::Object)object); } */ /* RString fname = new String("./XMLReaderWriter_Test.xml"); acdk::lang::Object theobject = new ::acdk::util::Date(); RHashMap hm = new HashMap(); hm->put(RString("Roger"), RString("Kommer")); hm->put(RString("Marco"), RString("Ernst")); theobject = hm; RIntegerArray sa = new IntegerArray(2); RInteger integer = new Integer(42); sa[0] = integer; sa[1] = integer; //theobject = sa; RdoubleArray da = new doubleArray(2); da[0] = 14.5; da[1] = 17.5; //theobject = da; //hm->put(sa, da); //hm->put(RString("The Props"), System::getProperties()); theobject = System::getProperties(); theobject = new TestClass(); System::out->println("Write object: " + theobject->toString()); RFileWriter fout = new FileWriter(fname); RXMLObjectWriter xmlout = new XMLObjectWriter(fout); xmlout->withFieldInfo(true); //not supported yet xmlout->writeObject(theobject); RFileReader fin = new FileReader(fname); RXMLObjectReader xmlin = new XMLObjectReader(fin); acdk::lang::Object obj = xmlin->readObject(); if (theobject->equals(obj) == false) { System::out->println("Test failed"); } else { System::out->println("Test OK"); } System::out->println("read object: " + obj->toString()); */ return 0; } } // namespace xml } //namespace acdk } //namespace tests int main(int argc, char* argv[], char** envptr) { return acdk::lang::System::main(tests::acdk::xml::XMLReaderWriter_Test::acdkmain, argc, argv, envptr); } |