From 5872cc7c1f0b41e7b9cfe7060ef88bc69daf8219 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Tue, 8 Dec 2009 11:44:50 -0500
Subject: Create CMakeLib test driver and test cmXMLParser

We create a new CMakeLibTests driver executable in which to writes unit
tests for CMakeLib.  Our first test is a smoke-test of cmXMLParser.
---
 Tests/CMakeLib/CMakeLists.txt     | 20 ++++++++++++++++++++
 Tests/CMakeLib/testXMLParser.cxx  | 17 +++++++++++++++++
 Tests/CMakeLib/testXMLParser.h.in |  6 ++++++
 Tests/CMakeLib/testXMLParser.xml  |  4 ++++
 Tests/CMakeLists.txt              |  2 ++
 5 files changed, 49 insertions(+)
 create mode 100644 Tests/CMakeLib/CMakeLists.txt
 create mode 100644 Tests/CMakeLib/testXMLParser.cxx
 create mode 100644 Tests/CMakeLib/testXMLParser.h.in
 create mode 100644 Tests/CMakeLib/testXMLParser.xml

diff --git a/Tests/CMakeLib/CMakeLists.txt b/Tests/CMakeLib/CMakeLists.txt
new file mode 100644
index 0000000..37bc09f
--- /dev/null
+++ b/Tests/CMakeLib/CMakeLists.txt
@@ -0,0 +1,20 @@
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${CMake_BINARY_DIR}/Source
+  ${CMake_SOURCE_DIR}/Source
+  )
+
+set(CMakeLib_TESTS
+  testXMLParser
+  )
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/testXMLParser.h.in
+               ${CMAKE_CURRENT_BINARY_DIR}/testXMLParser.h @ONLY)
+
+create_test_sourcelist(CMakeLib_TEST_SRCS CMakeLibTests.cxx ${CMakeLib_TESTS})
+add_executable(CMakeLibTests ${CMakeLib_TEST_SRCS})
+target_link_libraries(CMakeLibTests CMakeLib)
+
+foreach(test ${CMakeLib_TESTS})
+  add_test(CMakeLib.${test} CMakeLibTests ${test})
+endforeach()
diff --git a/Tests/CMakeLib/testXMLParser.cxx b/Tests/CMakeLib/testXMLParser.cxx
new file mode 100644
index 0000000..54ed5dc
--- /dev/null
+++ b/Tests/CMakeLib/testXMLParser.cxx
@@ -0,0 +1,17 @@
+#include "testXMLParser.h"
+
+#include "cmXMLParser.h"
+
+#include <cmsys/ios/iostream>
+
+int testXMLParser(int, char*[])
+{
+  // TODO: Derive from parser and check attributes.
+  cmXMLParser parser;
+  if(!parser.ParseFile(SOURCE_DIR "/testXMLParser.xml"))
+    {
+    cmsys_ios::cerr << "cmXMLParser failed!" << cmsys_ios::endl;
+    return 1;
+    }
+  return 0;
+}
diff --git a/Tests/CMakeLib/testXMLParser.h.in b/Tests/CMakeLib/testXMLParser.h.in
new file mode 100644
index 0000000..da0b275
--- /dev/null
+++ b/Tests/CMakeLib/testXMLParser.h.in
@@ -0,0 +1,6 @@
+#ifndef testXMLParser_h
+#define testXMLParser_h
+
+#define SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@"
+
+#endif
diff --git a/Tests/CMakeLib/testXMLParser.xml b/Tests/CMakeLib/testXMLParser.xml
new file mode 100644
index 0000000..5a13f07
--- /dev/null
+++ b/Tests/CMakeLib/testXMLParser.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Document>
+  <Element attr="1"/>
+</Document>
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index f47dccb..2a31989 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -37,6 +37,8 @@ SET_DIRECTORY_PROPERTIES(PROPERTIES
 
 # Testing
 IF(BUILD_TESTING)
+  ADD_SUBDIRECTORY(CMakeLib)
+
   # Collect a list of all test build directories.
   SET(TEST_BUILD_DIRS)
 
-- 
cgit v0.12