diff --git a/rdf/tests/httest.cpp b/rdf/tests/httest.cpp new file mode 100644 index 000000000000..b8d3086ea5d3 --- /dev/null +++ b/rdf/tests/httest.cpp @@ -0,0 +1,121 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#include +#include "rdf.h" +#include "nsRDFCID.h" +#include "nsINetService.h" + +#include "nsITreeDMItem.h" +#include "nsITreeDataModel.h" +#include "nsITreeColumn.h" + +#include "nsIToolbarDataModel.h" + +#include "nsRepository.h" + +#include "plstr.h" +#include "plevent.h" + +// hackery to get stuff up and running +#include "nsRDFTreeDataModel.h" +#include "rdf-int.h" + +#if defined(XP_PC) +#define NETLIB_DLL "netlib.dll" +#define RDF_DLL "rdf.dll" +#elif defined(XP_UNIX) +#define NETLIB_DLL "libnetlib.so" +#define RDF_DLL "librdf.so" +#elif defined(XP_MAC) +#else +#error "unknown platform" +#endif + +static NS_DEFINE_IID(kNetServiceCID, NS_NETSERVICE_CID); +static NS_DEFINE_IID(kCRDFTreeDataModelCID, NS_RDFTREEDATAMODEL_CID); +static NS_DEFINE_IID(kCRDFToolbarDataModelCID, NS_RDFTOOLBARDATAMODEL_CID); + +int +main(int argc, char** argv) +{ + PL_InitializeEventsLib(""); + nsRepository::RegisterFactory(kNetServiceCID, NETLIB_DLL, PR_FALSE, PR_FALSE); + + nsRepository::RegisterFactory(kCRDFTreeDataModelCID, RDF_DLL, PR_FALSE, PR_FALSE); + nsRepository::RegisterFactory(kCRDFToolbarDataModelCID, RDF_DLL, PR_FALSE, PR_FALSE); + + static NS_DEFINE_IID(kITreeDataModelIID, NS_ITREEDATAMODEL_IID); + nsITreeDataModel* tree; + nsresult res = + nsRepository::CreateInstance(kCRDFTreeDataModelCID, + NULL, + kITreeDataModelIID, + (void**) &tree); + + if (NS_SUCCEEDED(res)) { + tree->InitFromURL(nsString("rdf:bookmarks")); + + PRUint32 numColumns; + tree->GetColumnCount(numColumns); + + nsITreeColumn** columns = new nsITreeColumn*[numColumns]; + { + for (int i = 0; i < numColumns; ++i) + tree->GetNthColumn(columns[i], i); + } + + { + PRUint32 size; + tree->GetTreeItemCount(size); + + nsITreeDMItem* item; + for (int i = 0; i < size; ++i) { + if (NS_FAILED(tree->GetNthTreeItem(item, i))) + break; + + std::cout << "Item " << i << ": "; + + for (int j = 0; j < numColumns; ++j) { + nsString columnName; + columns[j]->GetColumnName(columnName); + + nsString valueText; + tree->GetItemTextForColumn(valueText, item, columns[j]); + + char buf[256]; + std::cout << columnName.ToCString(buf, sizeof buf); + std::cout << "=\"" << valueText.ToCString(buf, sizeof buf) << "\" "; + } + + std::cout << std::endl; + item->Release(); + } + } + + { + for (int i = 0; i < numColumns; ++i) + columns[i]->Release(); + } + + delete[] columns; + tree->Release(); + } + + return 0; +}