summaryrefslogtreecommitdiffstats
path: root/unit-tests/demo.c
diff options
context:
space:
mode:
authorNima Talebi <nima@autonomy.net.au>2009-05-23 18:39:30 +1000
committerNima Talebi <nima@autonomy.net.au>2009-05-23 18:39:30 +1000
commit717ff3b75bca054a7f14de43a6ef6fc0535d3953 (patch)
tree0cf51391297472399778b8818e3a983f83a636d5 /unit-tests/demo.c
parentcc76255fecfc9a4168debf1baccd68097d8f7c71 (diff)
downloadpython-dmidecode-717ff3b75bca054a7f14de43a6ef6fc0535d3953.tar.gz
python-dmidecode-717ff3b75bca054a7f14de43a6ef6fc0535d3953.tar.xz
python-dmidecode-717ff3b75bca054a7f14de43a6ef6fc0535d3953.zip
Expanding the test case to include the POC demo
The POC demo does not actually do much testing yet, other than just working or not working - but it's in place now for future enhancements.
Diffstat (limited to 'unit-tests/demo.c')
-rw-r--r--unit-tests/demo.c99
1 files changed, 99 insertions, 0 deletions
diff --git a/unit-tests/demo.c b/unit-tests/demo.c
new file mode 100644
index 0000000..265f3cb
--- /dev/null
+++ b/unit-tests/demo.c
@@ -0,0 +1,99 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * For the avoidance of doubt the "preferred form" of this code is one which
+ * is in an open unpatent encumbered format. Where cryptographic key signing
+ * forms part of the process of creating an executable the information
+ * including keys needed to generate an equivalently functional executable
+ * are deemed to be part of the source code.
+ */
+
+#include "demo.h"
+
+xmlNode *gen_nodes(const char *entry ) {
+ xmlNode *c_xmlNode_root = NULL;
+ xmlNode *c_xmlNode_tag = NULL;
+
+ // Prepare a root node
+ c_xmlNode_root = xmlNewNode(NULL, (xmlChar *) "dmixml_demo");
+ assert( c_xmlNode_root != NULL );
+
+ dmixml_AddAttribute(c_xmlNode_root, "entrypoint", "%s", entry);
+
+ // Populate XML
+ dmixml_AddTextChild(c_xmlNode_root, "Test", "Yes, just testing");
+
+ c_xmlNode_tag = dmixml_AddTextChild(c_xmlNode_root, "tag1", "Another test");
+ dmixml_AddAttribute(c_xmlNode_tag, "TestTagID", "%i", 1);
+
+ c_xmlNode_tag = c_xmlNode_root;
+ int i;
+ for(i = 0; i <= 3; ++i) {
+ c_xmlNode_tag = xmlNewChild(c_xmlNode_tag, NULL, (xmlChar *) "subtag", NULL);
+ dmixml_AddAttribute(c_xmlNode_tag, "SubLevel", "%i", i);
+ }
+ dmixml_AddTextContent(c_xmlNode_tag, "%s - Adding data to the tag at sublevel %i", "TEST", i-1);
+
+ return c_xmlNode_root;
+}
+
+
+
+
+PyObject* demo_dump_doc() {
+ PyObject *py_xmlDoc = NULL;
+ xmlDoc *c_xmlDoc = NULL;
+
+ // Create an XML document
+ c_xmlDoc = xmlNewDoc((xmlChar *) "1.0");
+ assert( c_xmlDoc != NULL );
+
+ // Generate XML nodes and assign the root node to the document
+ xmlDocSetRootElement( c_xmlDoc, gen_nodes("demo_dump_doc") );
+
+ py_xmlDoc = libxml_xmlDocPtrWrap((xmlDocPtr) c_xmlDoc);
+ Py_INCREF(py_xmlDoc);
+
+ return py_xmlDoc;
+}
+
+PyObject* demo_dump_node() {
+ PyObject *py_xmlNode = NULL;
+ xmlNode *nodes = NULL;
+
+ nodes = gen_nodes("demo_dump_node");
+ py_xmlNode = libxml_xmlNodePtrWrap((xmlNodePtr) nodes);
+ Py_INCREF(py_xmlNode);
+
+ return py_xmlNode;
+}
+
+
+
+static PyMethodDef DemoMethods[] = {
+ { "dump_doc", demo_dump_doc, METH_NOARGS, (char *)"Return an XML document" },
+ { "dump_node", demo_dump_node, METH_NOARGS, (char *)"Retuen an XML node" },
+ { NULL, NULL, 0, NULL }
+};
+
+PyMODINIT_FUNC initdemomodule(void) {
+ PyObject *module =
+ Py_InitModule3((char *)"demomodule", DemoMethods,
+ "LibXML2 DMIDecode Proof-of-Concept Python Module");
+
+ PyObject *version = PyString_FromString("0.10");
+ Py_INCREF(version);
+ PyModule_AddObject(module, "version", version);
+}