[libkml] 05/11: Drop patches applied upstream.

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Sun Jul 26 22:22:50 UTC 2015


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository libkml.

commit a0727af022591c30b45584c139f9551845effb21
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sun Jul 26 18:43:30 2015 +0200

    Drop patches applied upstream.
---
 debian/changelog                        |    3 +-
 debian/patches/compiler-flags.patch     |   28 -
 debian/patches/include-path.patch       |   38 -
 debian/patches/install-paths.patch      |   69 -
 debian/patches/java-install-path.patch  |   21 -
 debian/patches/java-run-sh-shebang.diff |   13 -
 debian/patches/series                   |    7 -
 debian/patches/soversion.patch          |   23 -
 debian/patches/swig-bindings.patch      | 8522 -------------------------------
 9 files changed, 2 insertions(+), 8722 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 655adeb..39c149c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,7 +1,8 @@
 libkml (1.3.0~r864+git20150726-3f3f37f-1~exp1) UNRELEASED; urgency=medium
 
-  * Add patches to build swig bindings.
   * New upstream git snapshot.
+    - Re-enable swig bindings
+  * Drop patches applied upstream.
 
  -- Bas Couwenberg <sebastic at debian.org>  Sun, 26 Jul 2015 18:38:00 +0200
 
diff --git a/debian/patches/compiler-flags.patch b/debian/patches/compiler-flags.patch
deleted file mode 100644
index 43e206a..0000000
--- a/debian/patches/compiler-flags.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Description: Don't quote compiler flags to avoid insertion of ; character.
- Fixes build failure:
- .
- make[3]: Entering directory '/tmp/buildd/libkml-1.3.0~r864+git20150723-0fa2f22/obj-x86_64-linux-gnu'
- /usr/bin/cmake -E cmake_progress_report "/tmp/buildd/libkml-1.3.0~r864+git20150723-0fa2f22/obj-x86_64-linux-gnu/CMakeFiles" 
- [  0%] Building CXX object src/kml/base/CMakeFiles/kmlbase.dir/time_util.cc.o
- cd "/tmp/buildd/libkml-1.3.0~r864+git20150723-0fa2f22/obj-x86_64-linux-gnu/src/kml/base" && /usr/bin/c++   -Dkmlbase_EXPORTS -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 ;-Wall -Wextra -Wno-unused-parameter -pedantic -fno-rtti -fPIC -I/usr/include/minizip -I/usr/include/uriparser -I"/tmp/buildd/libkml-1.3.0~r864+git20150723-0fa2f22/src"    -o CMakeFiles/kmlbase.dir/time_util.cc.o -c "/tmp/buildd/libkml-1.3.0~r864+git20150723-0fa2f22/src/kml/base/t [...]
- c++: fatal error: no input files
- compilation terminated.
- /bin/sh: 1: -Wall: not found
- src/kml/base/CMakeFiles/kmlbase.dir/build.make:57: recipe for target 'src/kml/base/CMakeFiles/kmlbase.dir/time_util.cc.o' failed
- make[3]: *** [src/kml/base/CMakeFiles/kmlbase.dir/time_util.cc.o] Error 127
- .
-Author: Bas Couwenberg <sebastic at debian.org>
-Forwarded: https://github.com/libkml/libkml/pull/197
-Applied-Upstream: https://github.com/libkml/libkml/commit/c08e38a975fd4ed83a16fd0068db267f721536c4
-
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -20,7 +20,7 @@ set(LIBKML_DATA_DIR  ${CMAKE_SOURCE_DIR}
- #AM_CXXFLAGS = -Wall -Wextra -Wno-unused-parameter -pedantic -fno-rtti
- #AM_TEST_CXXFLAGS = -Wall -Wextra -Wno-unused-parameter -Werror -fno-rtti -DGTEST_HAS_RTTI=0
- if(CMAKE_COMPILER_IS_GNUCXX)
--set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-Wall -Wextra -Wno-unused-parameter -pedantic -fno-rtti")
-+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter -pedantic -fno-rtti")
- set(TEST_FLAGS "-Wall -Wextra -Wno-unused-parameter -fno-rtti -DGTEST_HAS_RTTI=0")
- endif()
- 
diff --git a/debian/patches/include-path.patch b/debian/patches/include-path.patch
deleted file mode 100644
index e31e2cf..0000000
--- a/debian/patches/include-path.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Description: Fix include path, from kmlbase/attributes.h to kml/base/attributes.h.
-Author: Bas Couwenberg <sebastic at debian.org>
-Bug: https://github.com/libkml/libkml/pull/198
-Origin: https://github.com/libkml/libkml/commit/8601371365f7ce5e40215d7a5f3dce22e045ac5c
-Forwarded: https://github.com/libkml/libkml/pull/199
-Applied-Upstream: https://github.com/libkml/libkml/commit/94a80ce7ae969b7036895da5f0b476d81981465c
-
---- a/cmake/LibKMLHelper.cmake
-+++ b/cmake/LibKMLHelper.cmake
-@@ -21,7 +21,7 @@ macro(build_target)
-   string(SUBSTRING ${LIB_NAME} 3 ${${LIB_NAME}_END} ${LIB_NAME}_INCLUDE_DIR)
-   install(
-     FILES ${LIB_INCS}
--    DESTINATION ${INCLUDE_INSTALL_DIR}/${LIB_NAME})
-+    DESTINATION ${INCLUDE_INSTALL_DIR}/${${LIB_NAME}_INCLUDE_DIR})
- 
-   install_target(${LIB_NAME})
- 
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -38,7 +38,7 @@ if(NOT DEFINED DATA_INSTALL_DIR)
-     set(DATA_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share")
- endif(NOT DEFINED DATA_INSTALL_DIR)
- if(NOT DEFINED INCLUDE_INSTALL_DIR)
--    set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include")
-+    set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include/kml")
- endif(NOT DEFINED INCLUDE_INSTALL_DIR)
- if(NOT DEFINED MAN_INSTALL_DIR)
-     set(MAN_INSTALL_DIR "${DATA_INSTALL_DIR}/man")
---- a/src/kml/CMakeLists.txt
-+++ b/src/kml/CMakeLists.txt
-@@ -7,5 +7,5 @@ add_subdirectory(regionator)
- 
- 
- install(  FILES dom.h engine.h
--          DESTINATION ${INCLUDE_INSTALL_DIR}/kml
-+          DESTINATION ${INCLUDE_INSTALL_DIR}
-           COMPONENT Development)
diff --git a/debian/patches/install-paths.patch b/debian/patches/install-paths.patch
deleted file mode 100644
index 4c99a45..0000000
--- a/debian/patches/install-paths.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-Description: Add user customizable install paths.
-Author: Bas Couwenberg <sebastic at debian.org>
-Forwarded: https://github.com/libkml/libkml/pull/198
-Applied-Upstream: https://github.com/libkml/libkml/commit/361643ce925bd06e16f2311badabf1d05714e75d
-
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -28,6 +28,28 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMA
- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
- 
-+if(NOT DEFINED BIN_INSTALL_DIR)
-+    set(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin")
-+endif(NOT DEFINED BIN_INSTALL_DIR)
-+if(NOT DEFINED LIB_INSTALL_DIR)
-+    set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib")
-+endif(NOT DEFINED LIB_INSTALL_DIR)
-+if(NOT DEFINED DATA_INSTALL_DIR)
-+    set(DATA_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share")
-+endif(NOT DEFINED DATA_INSTALL_DIR)
-+if(NOT DEFINED INCLUDE_INSTALL_DIR)
-+    set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include")
-+endif(NOT DEFINED INCLUDE_INSTALL_DIR)
-+if(NOT DEFINED MAN_INSTALL_DIR)
-+    set(MAN_INSTALL_DIR "${DATA_INSTALL_DIR}/man")
-+endif(NOT DEFINED MAN_INSTALL_DIR)
-+if(NOT DEFINED RESOURCE_INSTALL_DIR)
-+    set(RESOURCE_INSTALL_DIR "${DATA_INSTALL_DIR}/libkml${VERSION_MAJOR}/resource/")
-+endif(NOT DEFINED RESOURCE_INSTALL_DIR)
-+if(NOT DEFINED LOCALE_INSTALL_DIR)
-+    set(LOCALE_INSTALL_DIR "${DATA_INSTALL_DIR}/locale/")
-+endif(NOT DEFINED LOCALE_INSTALL_DIR)
-+
- set(HAVE_SYSTEM_ZLIB CACHE INTERNAL FALSE)
- set(HAVE_SYSTEM_MINIZIP CACHE INTERNAL FALSE)
- set(HAVE_SYSTEM_EXPAT CACHE INTERNAL FALSE)
---- a/cmake/LibKMLHelper.cmake
-+++ b/cmake/LibKMLHelper.cmake
-@@ -21,7 +21,7 @@ macro(build_target)
-   string(SUBSTRING ${LIB_NAME} 3 ${${LIB_NAME}_END} ${LIB_NAME}_INCLUDE_DIR)
-   install(
-     FILES ${LIB_INCS}
--    DESTINATION include/${${LIB_NAME}_INCLUDE_DIR})
-+    DESTINATION ${INCLUDE_INSTALL_DIR}/${LIB_NAME})
- 
-   install_target(${LIB_NAME})
- 
-@@ -29,9 +29,9 @@ endmacro(build_target)
- 
- macro(install_target _target)
-   install(TARGETS ${_target}
--    RUNTIME DESTINATION bin
--    LIBRARY DESTINATION lib
--    ARCHIVE DESTINATION lib)
-+    RUNTIME DESTINATION ${BIN_INSTALL_DIR}
-+    LIBRARY DESTINATION ${LIB_INSTALL_DIR}
-+    ARCHIVE DESTINATION ${LIB_INSTALL_DIR})
- endmacro(install_target)
- 
- function(build_test)
---- a/src/kml/CMakeLists.txt
-+++ b/src/kml/CMakeLists.txt
-@@ -7,5 +7,5 @@ add_subdirectory(regionator)
- 
- 
- install(  FILES dom.h engine.h
--          DESTINATION include/kml
-+          DESTINATION ${INCLUDE_INSTALL_DIR}/kml
-           COMPONENT Development)
diff --git a/debian/patches/java-install-path.patch b/debian/patches/java-install-path.patch
deleted file mode 100644
index cce49c9..0000000
--- a/debian/patches/java-install-path.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From 55e0c8f83149e898fdb5e72b5e007f96f693ddc1 Mon Sep 17 00:00:00 2001
-From: Bas Couwenberg <sebastic at xs4all.nl>
-Date: Sun, 26 Jul 2015 17:49:04 +0200
-Subject: [PATCH] Fix Java JAR installation directory, /usr/share/java instead
- of /usr/lib/java.
-
----
- CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -53,7 +53,7 @@ if(NOT DEFINED PYTHON_INSTALL_DIR)
-   set(PYTHON_INSTALL_DIR "${LIB_INSTALL_DIR}/python")
- endif(NOT DEFINED PYTHON_INSTALL_DIR)
- if(NOT DEFINED JAVA_INSTALL_DIR)
--  set(JAVA_INSTALL_DIR "${LIB_INSTALL_DIR}/java")
-+  set(JAVA_INSTALL_DIR "${DATA_INSTALL_DIR}/java")
- endif(NOT DEFINED JAVA_INSTALL_DIR)
- 
- # Path to additional CMake modules
diff --git a/debian/patches/java-run-sh-shebang.diff b/debian/patches/java-run-sh-shebang.diff
deleted file mode 100644
index 53feb5d..0000000
--- a/debian/patches/java-run-sh-shebang.diff
+++ /dev/null
@@ -1,13 +0,0 @@
-Description: Add shebang to java run example to fix lintian issue.
-Author: Bas Couwenberg <sebastic at xs4al.nl>
-Forwarded: https://github.com/libkml/libkml/pull/197
-Applied-Upstream: https://github.com/libkml/libkml/commit/c08e38a975fd4ed83a16fd0068db267f721536c4
-
---- a/examples/java/run.sh
-+++ b/examples/java/run.sh
-@@ -1,3 +1,5 @@
-+#!/bin/sh
-+
- # The relative path to the directory that holds the build shared libraries.
- BUILT_LIB_DIR=../../build/src/swig/.libs
- echo "=== setting shared library path to built libraries dir: $BUILT_LIB_DIR"
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index 0f79c0a..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1,7 +0,0 @@
-java-run-sh-shebang.diff
-compiler-flags.patch
-soversion.patch
-install-paths.patch
-include-path.patch
-swig-bindings.patch
-java-install-path.patch
diff --git a/debian/patches/soversion.patch b/debian/patches/soversion.patch
deleted file mode 100644
index 3d94bfa..0000000
--- a/debian/patches/soversion.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Description: Fix SOVERSION to single integer.
-Author: Bas Couwenberg <sebastic at debian.org>
-Forwarded: https://github.com/libkml/libkml/pull/197
-Applied-Upstream: https://github.com/libkml/libkml/commit/c08e38a975fd4ed83a16fd0068db267f721536c4
-
---- a/cmake/LibKMLHelper.cmake
-+++ b/cmake/LibKMLHelper.cmake
-@@ -14,7 +14,7 @@ macro(build_target)
-   if(VERSION_STRING)
-     set_target_properties(${LIB_NAME} PROPERTIES
-       VERSION   "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
--      SOVERSION "${VERSION_MAJOR}.${VERSION_MINOR}")
-+      SOVERSION "${VERSION_MAJOR}")
-   endif()
-   string(LENGTH ${LIB_NAME} ${LIB_NAME}_LEN)
-   MATH(EXPR ${LIB_NAME}_END "${${LIB_NAME}_LEN} - 3")
-@@ -63,4 +63,4 @@ macro(include_project_vars _project _lib
-   endif(WIN32)
-   set(${_project}_LIBRARY "${INSTALL_DIR}/lib/${_lib}${_suffix}" )
-   include_directories(${${_project}_INCLUDE_DIR})
--endmacro()
-\ No newline at end of file
-+endmacro()
diff --git a/debian/patches/swig-bindings.patch b/debian/patches/swig-bindings.patch
deleted file mode 100644
index e9b81c5..0000000
--- a/debian/patches/swig-bindings.patch
+++ /dev/null
@@ -1,8522 +0,0 @@
-From d05d79a84387bfa96c3bd066fbc5b52bb146b522 Mon Sep 17 00:00:00 2001
-From: Rashad Kanavath <mohammedrashadkm at gmail.com>
-Date: Sun, 26 Jul 2015 02:18:24 +0200
-Subject: [PATCH 1/7] building python bindings
-
----
- CMakeLists.txt                |    6 +-
- cmake/pycompile.py            |    3 +
- src/CMakeLists.txt            |    2 +-
- src/swig/CMakeLists.txt       |   52 ++
- src/swig/kmldom.i             |   14 +-
- src/swig/kmlelements.i        | 1750 -----------------------------------------
- src/swig/libkml_kmlelements.i | 1750 +++++++++++++++++++++++++++++++++++++++++
- 7 files changed, 1816 insertions(+), 1761 deletions(-)
- create mode 100755 cmake/pycompile.py
- create mode 100644 src/swig/CMakeLists.txt
- delete mode 100644 src/swig/kmlelements.i
- create mode 100644 src/swig/libkml_kmlelements.i
-
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -11,9 +11,9 @@ option(BUILD_EXAMPLES  "Build examples."
- option(INSTALL_EXAMPLES   "Install examples sources and executables" OFF)
- option(BUILD_SHARED_LIBS  "Build shared libs." ON)
- 
--option(BUILD_SWIG        "Build swig bindings"   OFF)
--option(BUILD_SWIG_PYTHON "Build python bindings" OFF)
--option(BUILD_SWIG_JAVA   "Build java bindings"   OFF)
-+option(WITH_SWIG   "Build all swig bindings"   ON)
-+option(WITH_PYTHON "Build python bindings" ON)
-+option(WITH_JAVA   "Build java bindings"   ON)
- 
- set(LIBKML_DATA_DIR  ${CMAKE_SOURCE_DIR}/testdata CACHE "Directory containing test data" PATH)
- 
-@@ -29,32 +29,32 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMA
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
- 
- if(NOT DEFINED BIN_INSTALL_DIR)
--    set(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin")
-+  set(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin")
- endif(NOT DEFINED BIN_INSTALL_DIR)
- if(NOT DEFINED LIB_INSTALL_DIR)
--    set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib")
-+  set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib")
- endif(NOT DEFINED LIB_INSTALL_DIR)
- if(NOT DEFINED DATA_INSTALL_DIR)
--    set(DATA_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share")
-+  set(DATA_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share")
- endif(NOT DEFINED DATA_INSTALL_DIR)
- if(NOT DEFINED INCLUDE_INSTALL_DIR)
--    set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include/kml")
-+  set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include/kml")
- endif(NOT DEFINED INCLUDE_INSTALL_DIR)
- if(NOT DEFINED MAN_INSTALL_DIR)
--    set(MAN_INSTALL_DIR "${DATA_INSTALL_DIR}/man")
-+  set(MAN_INSTALL_DIR "${DATA_INSTALL_DIR}/man")
- endif(NOT DEFINED MAN_INSTALL_DIR)
- if(NOT DEFINED RESOURCE_INSTALL_DIR)
--    set(RESOURCE_INSTALL_DIR "${DATA_INSTALL_DIR}/libkml${VERSION_MAJOR}/resource/")
-+  set(RESOURCE_INSTALL_DIR "${DATA_INSTALL_DIR}/libkml${VERSION_MAJOR}/resource/")
- endif(NOT DEFINED RESOURCE_INSTALL_DIR)
- if(NOT DEFINED LOCALE_INSTALL_DIR)
--    set(LOCALE_INSTALL_DIR "${DATA_INSTALL_DIR}/locale/")
-+  set(LOCALE_INSTALL_DIR "${DATA_INSTALL_DIR}/locale/")
- endif(NOT DEFINED LOCALE_INSTALL_DIR)
--
--set(HAVE_SYSTEM_ZLIB CACHE INTERNAL FALSE)
--set(HAVE_SYSTEM_MINIZIP CACHE INTERNAL FALSE)
--set(HAVE_SYSTEM_EXPAT CACHE INTERNAL FALSE)
--set(HAVE_SYSTEM_BOOST CACHE INTERNAL FALSE)
--set(HAVE_SYSTEM_URIPARSER CACHE INTERNAL FALSE)
-+if(NOT DEFINED PYTHON_INSTALL_DIR)
-+  set(PYTHON_INSTALL_DIR "${LIB_INSTALL_DIR}/python")
-+endif(NOT DEFINED PYTHON_INSTALL_DIR)
-+if(NOT DEFINED JAVA_INSTALL_DIR)
-+  set(JAVA_INSTALL_DIR "${LIB_INSTALL_DIR}/java")
-+endif(NOT DEFINED JAVA_INSTALL_DIR)
- 
- # Path to additional CMake modules
- set(CMAKE_MODULE_PATH
-@@ -63,8 +63,6 @@ set(CMAKE_MODULE_PATH
- 
- include(LibKMLHelper)
- 
--set(KMLBASE_DEPENDS)
--
- if(NOT CMAKE_BUILD_TYPE)
-   set(CMAKE_BUILD_TYPE "Release")
- endif()
-@@ -72,23 +70,23 @@ endif()
- include(ExternalProject)
- 
- if(NOT INSTALL_DIR)
--  set(INSTALL_DIR "${CMAKE_INSTALL_PREFIX}")
-+  set(INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" CACHE "install directory " PATH)
- endif()
- 
--set(KMLBASE_LINK_LIBS)
--set(KMLBASE_DEPENDS)
--set(MINIZIP_DEPENDS)
-+set(KMLBASE_LINK_LIBS "" CACHE INTERNAL "KMLBASE_LINK_LIBS")
-+set(KMLBASE_DEPENDS "" CACHE INTERNAL "KMLBASE_DEPENDS")
-+set(MINIZIP_DEPENDS "" CACHE INTERNAL "MINIZIP_DEPENDS")
- 
--include(ImportEXPAT)
--if(HAVE_SYSTEM_EXPAT)
-+find_package(EXPAT)
-+if(EXPAT_FOUND)
-   include_directories(${EXPAT_INCLUDE_DIR})
- else()
-   include(External_expat)
-   list(APPEND KMLBASE_DEPENDS EXPAT)
- endif()
- 
--include(ImportZLIB)
--if(HAVE_SYSTEM_ZLIB)
-+find_package(ZLIB 1.2.8)
-+if(ZLIB_FOUND)
-   include_directories(${ZLIB_INCLUDE_DIR})
- else()
-   include(External_zlib)
-@@ -96,24 +94,24 @@ else()
-   list(APPEND MINIZIP_DEPENDS ZLIB)
- endif()
- 
--include(ImportMinizip)
--if(HAVE_SYSTEM_MINIZIP)
-+find_package(MiniZip)
-+if(MINIZIP_FOUND)
-   include_directories(${MINIZIP_INCLUDE_DIR})
- else()
-   include(External_minizip)
-   list(APPEND KMLBASE_DEPENDS MINIZIP)
- endif()
- 
--include(ImportUriParser)
--if(HAVE_SYSTEM_URIPARSER)
-+find_package(UriParser)
-+if(URIPARSER_FOUND)
-   include_directories(${URIPARSER_INCLUDE_DIR})
- else()
-   include(External_uriparser)
-   list(APPEND KMLBASE_DEPENDS URIPARSER)
- endif()
- 
--include(ImportBoost)
--if(HAVE_SYSTEM_BOOST)
-+find_package(Boost)
-+if(Boost_FOUND)
-   message(STATUS "Found Boost: ${Boost_VERSION}")
- else()
-   include(External_boost)
-@@ -134,7 +132,7 @@ add_subdirectory(src)
- 
- if(BUILD_TESTING)
-   enable_testing()
--  include(ImportGoogleTest)
-+  find_package(GoogleTest REQUIRED)
-   include_directories(${GTEST_INCLUDE_DIR})
-   include_directories(${CMAKE_SOURCE_DIR}/tests)
-   add_definitions("-DDATADIR=\"${LIBKML_DATA_DIR}\"")
---- /dev/null
-+++ b/cmake/pycompile.py
-@@ -0,0 +1,3 @@
-+import compileall
-+from sys import argv
-+compileall.compile_file(argv[1])
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -1,4 +1,4 @@
- add_subdirectory(kml)
--if(BUILD_SWIG)
-+if(WITH_SWIG)
- add_subdirectory(swig)
- endif()
-\ No newline at end of file
---- /dev/null
-+++ b/src/swig/CMakeLists.txt
-@@ -0,0 +1,95 @@
-+find_package(SWIG REQUIRED)
-+include(${SWIG_USE_FILE})
-+
-+if(WITH_PYTHON)
-+  find_package(PythonLibs REQUIRED)
-+  if(NOT PYTHONLIBS_FOUND)
-+    message(FATAL_ERROR "Python Libraries not found.")
-+  endif()
-+
-+  find_package(PythonInterp REQUIRED)
-+
-+  include_directories(${PYTHON_INCLUDE_PATH})
-+
-+  # execute_process(COMMAND
-+  #   python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(True)"
-+  #   OUTPUT_VARIABLE PYTHON_SITE_PACKAGES
-+  #   OUTPUT_STRIP_TRAILING_WHITESPACE )
-+
-+  file(GLOB IFILES "kml*.i")
-+  foreach(INTERFACE_FILE ${IFILES})
-+    get_filename_component(MODULE_NAME ${INTERFACE_FILE} NAME_WE)
-+    set_source_files_properties(${INTERFACE_FILE} PROPERTIES CPLUSPLUS ON )
-+    set_source_files_properties(${INTERFACE_FILE} PROPERTIES CMAKE_SWIG_FLAGS "-includeall -DSWIGPYTHON")
-+    set_source_files_properties( ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}PYTHON_wrap.cxx COMPILE_FLAGS "-Wno-long-long" )
-+    swig_add_module(${MODULE_NAME} python ${INTERFACE_FILE})
-+    swig_link_libraries(${MODULE_NAME} kmlbase kmlengine kmldom ${PYTHON_LIBRARIES})
-+    add_custom_command(
-+      TARGET _${MODULE_NAME}
-+      POST_BUILD
-+      COMMAND ${CMAKE_COMMAND} -E echo "Byte-compiling ${MODULE_NAME}.py"
-+      COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cmake/pycompile.py ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}.py
-+      DEPENDS kmlbase kmlengine kmldom)
-+
-+    install(TARGETS
-+      _${MODULE_NAME}
-+      DESTINATION ${PYTHON_INSTALL_DIR})
-+
-+    install(FILES
-+      ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}.py
-+      ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}.pyc
-+      DESTINATION ${PYTHON_INSTALL_DIR})
-+
-+  endforeach()
-+
-+endif(WITH_PYTHON)
-+
-+if(WITH_JAVA)
-+  find_package(Java REQUIRED)
-+  find_package(JNI REQUIRED)
-+  mark_as_advanced(JAVA_HOME)
-+
-+  include_directories(${JAVA_INCLUDE_PATH}
-+    ${JNI_INCLUDE_DIRS})
-+  include_directories ( ${JAVA_INCLUDE_PATH} ${JNI_INCLUDE_DIRS} )
-+
-+  # Make sure the nested directory structure exists
-+  set(JAVA_SOURCE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/com/google/libkml)
-+  set(JAVA_BINARY_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build)
-+  if(NOT EXISTS "${JAVA_SOURCE_DIRECTORY}")
-+    file(MAKE_DIRECTORY ${JAVA_SOURCE_DIRECTORY})
-+  endif()
-+  if(NOT EXISTS "${JAVA_BINARY_DIRECTORY}")
-+    file(MAKE_DIRECTORY ${JAVA_BINARY_DIRECTORY})
-+  endif()
-+  #  java_package_dir = com/googlecode/libkml
-+  file(GLOB IFILES "kml*.i")
-+  set(LIBKML_JAVA_PACKAGE "com.googlecode.libkml")
-+  set(CMAKE_SWIG_OUTDIR ${JAVA_SOURCE_DIRECTORY})
-+  set(CMAKE_SWIG_FLAGS -package "${LIBKML_JAVA_PACKAGE}" ${CMAKE_SWIG_GLOBAL_FLAGS})
-+
-+  foreach(INTERFACE_FILE ${IFILES})
-+    get_filename_component(MODULE_NAME ${INTERFACE_FILE} NAME_WE)
-+    set_source_files_properties(${INTERFACE_FILE} PROPERTIES CPLUSPLUS ON)
-+    set_source_files_properties(${INTERFACE_FILE} PROPERTIES CMAKE_SWIG_FLAGS "-includeall  -DSWIGJAVA")
-+    set_source_files_properties( ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}JAVA_wrap.cxx COMPILE_FLAGS "-w")
-+    swig_add_module(${MODULE_NAME}_java java ${INTERFACE_FILE})
-+    swig_link_libraries(${MODULE_NAME}_java kmlbase kmlengine kmldom)
-+  endforeach()
-+
-+  add_custom_target(LibKML_jar ALL DEPENDS LibKML.jar)
-+
-+  add_custom_command(
-+    OUTPUT LibKML.jar
-+    COMMENT "Creating jar file..."
-+    COMMAND ${Java_JAVAC_EXECUTABLE} -d ${JAVA_BINARY_DIRECTORY} ${JAVA_SOURCE_DIRECTORY}/*.java
-+    COMMAND ${Java_JAR_EXECUTABLE} cf ${CMAKE_CURRENT_BINARY_DIR}/LibKML.jar -C ${JAVA_BINARY_DIRECTORY} com
-+    DEPENDS LibKML_jar kmlbase_java kmldom_java kmlengine_java kmlengine kmlbase kmldom)
-+
-+   # Get the location of the extension directory
-+   string(REGEX REPLACE "include"  "jre/lib/ext" JAVA_EXTENSION_DIR ${JAVA_INCLUDE_PATH})
-+
-+   install(FILES ${CMAKE_CURRENT_BINARY_DIR}/LibKML.jar
-+     DESTINATION ${JAVA_INSTALL_DIR})
-+
-+endif(WITH_JAVA)
---- a/src/swig/kmldom.i
-+++ b/src/swig/kmldom.i
-@@ -1,9 +1,9 @@
- // Copyright 2008, Google Inc. All rights reserved.
- //
--// Redistribution and use in source and binary forms, with or without 
-+// Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are met:
- //
--//  1. Redistributions of source code must retain the above copyright notice, 
-+//  1. Redistributions of source code must retain the above copyright notice,
- //     this list of conditions and the following disclaimer.
- //  2. Redistributions in binary form must reproduce the above copyright notice,
- //     this list of conditions and the following disclaimer in the documentation
-@@ -13,14 +13,14 @@
- //     specific prior written permission.
- //
- // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
--// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
-+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
--// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
-+// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
--// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
--// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
-+// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- 
- // This is the SWIG interface file for the KML DOM.
-@@ -33,6 +33,7 @@
- // Include the headers needed to build kmldom_wrap.cc.
- %{
- #include "kml/dom.h"
-+#include "kml/dom/xsd.h"
- %}
- 
- // Tell SWIG about boost::intrusive_ptr and the inheritance hierarchy
-@@ -176,7 +177,11 @@ SWIG_INTRUSIVE_PTR_DERIVED(GxWait, kmldo
- // Tell SWIG about C++ Standard Library std::string.
- %include "std_string.i"
- 
-+
-+%include "kml/dom/xsd.h"
-+
- // Tell SWIG about the kmldom type ids (Type_Placemark, etc).
-+
- %include "kml/dom/kml22.h"
- 
- // Tell SWIG about the intrusive_ptr typedefs.
-@@ -249,7 +254,7 @@ public:
-   void clear_yunits();
- };
- 
--%include "kmlelements.i"
-+%include "libkml_kmlelements.i"
- 
- %nodefaultctor KmlFactory;
- class KmlFactory {
---- a/src/swig/kmlelements.i
-+++ /dev/null
-@@ -1,1750 +0,0 @@
--// Copyright 2008, Google Inc. All rights reserved.
--//
--// Redistribution and use in source and binary forms, with or without 
--// modification, are permitted provided that the following conditions are met:
--//
--//  1. Redistributions of source code must retain the above copyright notice, 
--//     this list of conditions and the following disclaimer.
--//  2. Redistributions in binary form must reproduce the above copyright notice,
--//     this list of conditions and the following disclaimer in the documentation
--//     and/or other materials provided with the distribution.
--//  3. Neither the name of Google Inc. nor the names of its contributors may be
--//     used to endorse or promote products derived from this software without
--//     specific prior written permission.
--//
--// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
--// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
--// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
--// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
--// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
--// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
--// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
--// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
--// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
--// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--
--// Generated from the KML 2.2 XSD.
--
--// This is the SWIG interface file for the public API to the KML DOM.
--// In addition to serving the needs of SWIG this also serves to document the
--// public C++ API separate from the present implementation found in the
--// private sections of the present C++ .h files.
--
--// This is AbstractObjectType in the KML 2.2 XSD.
--%nodefaultctor Object;
--class Object : public Element {
--public:
--  // id=
--  const std::string& get_id();
--  void set_id(const std::string& id);
--  bool has_id();
--  void clear_id();
--
--  // targetId=
--  const std::string& get_targetid();
--  void set_targetid(const std::string& targetid);
--  bool has_targetid();
--  void clear_targetid();
--};
--
--%nodefaultctor SubStyle;
--class SubStyle : public Object {
--};
--
--%nodefaultctor ColorStyle;
--class ColorStyle : public SubStyle {
--public:
--  // <color>
--  const kmlbase::Color32& get_color();
--  void set_color(const kmlbase::Color32& color);
--  bool has_color();
--  void clear_color();
--
--  // <colorMode>
--  int get_colormode();
--  void set_colormode(int colormode);
--  bool has_colormode();
--  void clear_colormode();
--};
--
--%nodefaultctor SnippetCommon;
--class SnippetCommon : public Element {
--public:
--  // Content.
--  const std::string& get_text();
--  void set_text(const std::string& text);
--  bool has_text();
--  void clear_text();
--
--  // maxLines=
--  int get_maxlines();
--  void set_maxlines(int maxlines);
--  bool has_maxlines();
--  void clear_maxlines();
--};
--
--%nodefaultctor Snippet;
--class Snippet : public SnippetCommon {
--};
--
--%nodefaultctor LinkSnippet;
--class LinkSnippet : public SnippetCommon {
--};
--
--%nodefaultctor AbstractView;
--class AbstractView : public Object {
-- public:
--  // gx:TimeStamp and gx:TimeSpan.
--  const TimePrimitivePtr get_gx_timeprimitive();
--  bool has_gx_timeprimitive();
--  void set_gx_timeprimitive(const TimePrimitivePtr& gx_timeprimitive);
--  void clear_gx_timeprimitive();
--};
--
--%nodefaultctor TimePrimitive;
--class TimePrimitive : public Object {
--};
--
--%nodefaultctor StyleSelector;
--class StyleSelector : public Object {
--};
--
--%nodefaultctor AbstractLatLonBox;
--class AbstractLatLonBox : public Object {
--public:
--  // <north>
--  double get_north();
--  bool has_north();
--  void set_north(double north);
--  void clear_north();
--
--  // <south>
--  double get_south();
--  bool has_south();
--  void set_south(double south);
--  void clear_south();
--
--  // <east>
--  double get_east();
--  bool has_east();
--  void set_east(double east);
--  void clear_east();
--
--  // <west>
--  double get_west();
--  bool has_west();
--  void set_west(double west);
--  void clear_west();
--};
--
--%nodefaultctor LatLonAltBox;
--class LatLonAltBox : public AbstractLatLonBox {
--public:
--  // <minAltitude>
--  double get_minaltitude();
--  void set_minaltitude(double minaltitude);
--  bool has_minaltitude();
--  void clear_minaltitude();
--
--  // <maxAltitude>
--  double get_maxaltitude();
--  void set_maxaltitude(double maxaltitude);
--  bool has_maxaltitude();
--  void clear_maxaltitude();
--
--  // <altitudeMode>
--  int get_altitudemode();
--  void set_altitudemode(int altitudemode);
--  bool has_altitudemode();
--  void clear_altitudemode();
--
--  // <gx:altitudeMode>
--  int get_gx_altitudemode();
--  bool has_gx_altitudemode();
--  void set_gx_altitudemode(int gx_altitudemode);
--  void clear_gx_altitudemode();
--};
--
--%nodefaultctor Lod;
--class Lod : public Object {
--public:
--  // <minLodPixels>
--  double get_minlodpixels();
--  void set_minlodpixels(double minlodpixels);
--  bool has_minlodpixels();
--  void clear_minlodpixels();
--
--  // <maxLodPixels>
--  double get_maxlodpixels();
--  void set_maxlodpixels(double maxlodpixels);
--  bool has_maxlodpixels();
--  void clear_maxlodpixels();
--
--  // <minFadeExtent>
--  double get_minfadeextent();
--  void set_minfadeextent(double minfadeextent);
--  bool has_minfadeextent();
--  void clear_minfadeextent();
--
--  // <maxFadeExtent>
--  double get_maxfadeextent();
--  void set_maxfadeextent(double maxfadeextent);
--  bool has_maxfadeextent();
--  void clear_maxfadeextent();
--};
--
--%nodefaultctor Region;
--class Region : public Object {
--public:
--  // <LatLonAltBox>
--  const LatLonAltBoxPtr get_latlonaltbox();
--  void set_latlonaltbox(LatLonAltBoxPtr latlonaltbox);
--  bool has_latlonaltbox();
--  void clear_latlonaltbox();
--
--  // <Lod>
--  const LodPtr get_lod();
--  void set_lod(LodPtr lod);
--  bool has_lod();
--  void clear_lod();
--};
--
--%nodefaultctor ExtendedData;
--class ExtendedData : public Element {
--public:
--  // <Data>.
--  void add_data(DataPtr data);
--  const size_t get_data_array_size();
--  const DataPtr get_data_array_at(unsigned int index);
--  // <SchemaData>.
--  void add_schemadata(SchemaDataPtr schemadata);
--  const size_t get_schemadata_array_size();
--  const SchemaDataPtr get_schemadata_array_at(unsigned int index);
--};
--
--%nodefaultctor Feature;
--class Feature : public Object {
--public:
--  // <name>
--  const std::string& get_name();
--  void set_name(const std::string& name);
--  bool has_name();
--  void clear_name();
--
--  // <visibility>
--  bool get_visibility();
--  void set_visibility(bool visibility);
--  bool has_visibility();
--  void clear_visibility();
--
--  // <open>
--  bool get_open();
--  void set_open(bool open);
--  bool has_open();
--  void clear_open();
--
--  // <atom:author>
--  const AtomAuthorPtr get_atomauthor();
--  bool has_atomauthor();
--  void set_atomauthor(AtomAuthorPtr atomauthor);
--  void clear_atomauthor();
--
--  // <atom:link>
--  const AtomLinkPtr get_atomlink();
--  bool has_atomlink();
--  void set_atomlink(AtomLinkPtr atomlink);
--  void clear_atomlink();
--
--  // <address>
--  const std::string& get_address();
--  void set_address(const std::string& address);
--  bool has_address();
--  void clear_address();
--
--  // <phoneNumber>
--  const std::string& get_phonenumber();
--  void set_phonenumber(const std::string& phonenumber);
--  bool has_phonenumber();
--  void clear_phonenumber();
--
--  // <Snippet>
--  const SnippetPtr get_snippet();
--  void set_snippet(SnippetPtr snippet);
--  bool has_snippet();
--  void clear_snippet();
--
--  // <description>
--  const std::string& get_description();
--  void set_description(const std::string& description);
--  bool has_description();
--  void clear_description();
--
--  // AbstractView
--  const AbstractViewPtr get_abstractview();
--  void set_abstractview(AbstractViewPtr abstractview);
--  bool has_abstractview();
--  void clear_abstractview();
--
--  // TimePrimitive
--  const TimePrimitivePtr get_timeprimitive();
--  void set_timeprimitive(TimePrimitivePtr timeprimitive);
--  bool has_timeprimitive();
--  void clear_timeprimitive();
--
--  // <styleUrl>
--  const std::string& get_styleurl();
--  void set_styleurl(const std::string& styleurl);
--  bool has_styleurl();
--  void clear_styleurl();
--
--  // StyleSelector
--  const StyleSelectorPtr get_styleselector();
--  void set_styleselector(StyleSelectorPtr styleselector);
--  bool has_styleselector();
--  void clear_styleselector();
--
--  // <Region>
--  const RegionPtr get_region();
--  void set_region(RegionPtr region);
--  bool has_region();
--  void clear_region();
--
--  // <ExtendedData>
--  const ExtendedDataPtr get_extendeddata();
--  void set_extendeddata(ExtendedDataPtr extendeddata);
--  bool has_extendeddata();
--  void clear_extendeddata();
--
--  // <gx:balloonVisibility>
--  bool get_gx_balloonvisibility();
--  void set_gx_balloonvisibility(bool balloonvisibility);
--  bool has_gx_balloonvisibility();
--  void clear_gx_balloonvisibility();
--};
--
--%nodefaultctor Container;
--class Container : public Feature {
--public:
--  // Feature...
--  void add_feature(FeaturePtr feature);
--  const size_t get_feature_array_size();
--  const FeaturePtr get_feature_array_at(unsigned int index);
--};
--
--%nodefaultctor Geometry;
--class Geometry : public Object {
--};
--
--%nodefaultctor BasicLink;
--class BasicLink : public Object {
--public:
--  // <href>
--  const std::string& get_href();
--  bool has_href();
--  void set_href(const std::string& href);
--  void clear_href();
--};
--
--%nodefaultctor Icon;
--class Icon : public BasicLink {
--public:
--  // <refreshMode>
--  int get_refreshmode();
--  void set_refreshmode(int refreshmode);
--  bool has_refreshmode();
--  void clear_refreshmode();
--
--  // <refreshInterval>
--  double get_refreshinterval();
--  void set_refreshinterval(double refreshinterval);
--  bool has_refreshinterval();
--  void clear_refreshinterval();
--
--  // <viewRefreshMode>
--  int get_viewrefreshmode();
--  void set_viewrefreshmode(int viewrefreshmode);
--  bool has_viewrefreshmode();
--  void clear_viewrefreshmode();
--
--  // <viewRefreshTime>
--  double get_viewrefreshtime();
--  void set_viewrefreshtime(double viewrefreshtime);
--  bool has_viewrefreshtime();
--  void clear_viewrefreshtime();
--
--  // <viewBoundScale>
--  double get_viewboundscale();
--  void set_viewboundscale(double viewboundscale);
--  bool has_viewboundscale();
--  void clear_viewboundscale();
--
--  // <viewFormat>
--  const std::string& get_viewformat();
--  void set_viewformat(const std::string& viewformat);
--  bool has_viewformat();
--  void clear_viewformat();
--
--  // <httpQuery>
--  const std::string& get_httpquery();
--  void set_httpquery(const std::string& httpquery);
--  bool has_httpquery();
--  void clear_httpquery();
--};
--
--%nodefaultctor IconStyleIcon;
--class IconStyleIcon : public BasicLink {
--public:
--  // <href>
--  const std::string& get_href();
--  bool has_href();
--  void set_href(const std::string& href);
--  void clear_href();
--};
--
--%nodefaultctor Overlay;
--class Overlay : public Feature {
--public:
--  // <color>
--  const kmlbase::Color32& get_color();
--  void set_color(const kmlbase::Color32& color);
--  bool has_color();
--  void clear_color();
--
--  // <drawOrder>
--  int get_draworder();
--  void set_draworder(int draworder);
--  bool has_draworder();
--  void clear_draworder();
--
--  // <Icon>
--  const IconPtr get_icon();
--  void set_icon(IconPtr icon);
--  bool has_icon();
--  void clear_icon();
--};
--
--%nodefaultctor BalloonStyle;
--class BalloonStyle : public SubStyle {
--public:
--  // <bgColor>
--  const kmlbase::Color32& get_bgcolor();
--  void set_bgcolor(const kmlbase::Color32& bgcolor);
--  bool has_bgcolor();
--  void clear_bgcolor();
--
--  // <textColor>
--  const kmlbase::Color32& get_textcolor();
--  void set_textcolor(const kmlbase::Color32& textcolor);
--  bool has_textcolor();
--  void clear_textcolor();
--
--  // <text>
--  const std::string& get_text();
--  void set_text(const std::string& text);
--  bool has_text();
--  void clear_text();
--
--  // <displayMode>
--  int get_displaymode();
--  void set_displaymode(int displaymode);
--  bool has_displaymode();
--  void clear_displaymode();
--};
--
--%nodefaultctor Camera;
--class Camera : public AbstractView {
--public:
--  // <longitude>
--  double get_longitude();
--  void set_longitude(double longitude);
--  bool has_longitude();
--  void clear_longitude();
--
--  // <latitude>
--  double get_latitude();
--  void set_latitude(double latitude);
--  bool has_latitude();
--  void clear_latitude();
--
--  // <altitude>
--  double get_altitude();
--  void set_altitude(double altitude);
--  bool has_altitude();
--  void clear_altitude();
--
--  // <heading>
--  double get_heading();
--  void set_heading(double heading);
--  bool has_heading();
--  void clear_heading();
--
--  // <tilt>
--  double get_tilt();
--  void set_tilt(double tilt);
--  bool has_tilt();
--  void clear_tilt();
--
--  // <roll>
--  double get_roll();
--  void set_roll(double roll);
--  bool has_roll();
--  void clear_roll();
--
--  // <altitudeMode>
--  int get_altitudemode();
--  void set_altitudemode(int altitudemode);
--  bool has_altitudemode();
--  void clear_altitudemode();
--
--  // <gx:altitudeMode>
--  int get_gx_altitudemode();
--  bool has_gx_altitudemode();
--  void set_gx_altitudemode(int gx_altitudemode);
--  void clear_gx_altitudemode();
--};
--
--%nodefaultctor UpdateOperation;
--class UpdateOperation : public Element {
--};
--
--%nodefaultctor Change;
--class Change : public UpdateOperation {
--public:
--  // Object...
--  void add_object(ObjectPtr object);
--  const size_t get_object_array_size();
--  const ObjectPtr get_object_array_at(unsigned int index);
--};
--
--%nodefaultctor Create;
--class Create : public UpdateOperation {
--public:
--  // Container...
--  void add_container(ContainerPtr container);
--  const size_t get_container_array_size();
--  const ContainerPtr get_container_array_at(unsigned int index);
--};
--
--%nodefaultctor Data;
--class Data : public Object {
--public:
--  // name=
--  const std::string& get_name();
--  bool has_name();
--  void set_name(const std::string& name);
--  void clear_name();
--
--  // <displayname>
--  const std::string& get_displayname();
--  bool has_displayname();
--  void set_displayname(const std::string& displayname);
--  void clear_displayname();
--
--  // <value>
--  const std::string& get_value();
--  bool has_value();
--  void set_value(const std::string& value);
--  void clear_value();
--};
--
--%nodefaultctor Delete;
--class Delete : public UpdateOperation {
--public:
--  // Feature...
--  void add_feature(FeaturePtr feature);
--  const size_t get_feature_array_size();
--  const FeaturePtr get_feature_array_at(unsigned int index);
--};
--
--%nodefaultctor SimpleField;
--class SimpleField : public Element {
--public:
--  // type=
--  const std::string& get_type();
--  bool has_type();
--  void set_type(const std::string& value);
--  void clear_type();
--
--  // name=
--  const std::string& get_name();
--  bool has_name();
--  void set_name(const std::string& value);
--  void clear_name();
--
--  // <displayName>
--  const std::string& get_displayname();
--  void set_displayname(const std::string& displayname);
--  bool has_displayname();
--  void clear_displayname();
--};
--
--%nodefaultctor Schema;
--class Schema : public Object {
--public:
--  // name=
--  const std::string& get_name();
--  bool has_name();
--  void set_name(const std::string& value);
--  void clear_name();
--
--  // <SimpleField>...
--  void add_simplefield(SimpleFieldPtr simplefield);
--  const size_t get_simplefield_array_size();
--  const SimpleFieldPtr get_simplefield_array_at(unsigned int index);
--};
--
--%nodefaultctor Document;
--class Document : public Container {
--public:
--  // <Schema>...
--  void add_schema(SchemaPtr schema);
--  const size_t get_schema_array_size();
--  const SchemaPtr get_schema_array_at(unsigned int index);
--
--  // <Style>,<StyleMap>...
--  void add_styleselector(StyleSelectorPtr styleselector);
--  const size_t get_styleselector_array_size();
--  const StyleSelectorPtr get_styleselector_array_at(unsigned int index);
--};
--
--%nodefaultctor Folder;
--class Folder : public Container {
--};
--
--%nodefaultctor LatLonBox;
--class LatLonBox : public AbstractLatLonBox {
--public:
--  // <rotation>
--  double get_rotation();
--  void set_rotation(double rotation);
--  bool has_rotation();
--  void clear_rotation();
--};
--
--%nodefaultctor GxLatLonQuad;
--class GxLatLonQuad : public Object {
--public:
--  // <coordinates>
--  const CoordinatesPtr get_coordinates();
--  bool has_coordinates();
--  void set_coordinates(const CoordinatesPtr& coordinates);
--  void clear_coordinates();
--};
--
--%nodefaultctor GroundOverlay;
--class GroundOverlay : public Overlay {
--public:
--  // <altitude>
--  double get_altitude();
--  void set_altitude(double altitude);
--  bool has_altitude();
--  void clear_altitude();
--
--  // <altitudeMode>
--  int get_altitudemode();
--  void set_altitudemode(int altitudemode);
--  bool has_altitudemode();
--  void clear_altitudemode();
--
--  // <gx:altitudeMode>
--  int get_gx_altitudemode();
--  bool has_gx_altitudemode();
--  void set_gx_altitudemode(int gx_altitudemode);
--  void clear_gx_altitudemode();
--
--  // <LatLonBox>
--  const LatLonBoxPtr get_latlonbox();
--  void set_latlonbox(LatLonBoxPtr latlonbox);
--  bool has_latlonbox();
--  void clear_latlonbox();
--
--  // <gx:LatLonQuad>
--  const GxLatLonQuadPtr get_gx_latlonquad();
--  bool has_gx_latlonquad();
--  void set_gx_latlonquad(GxLatLonQuadPtr gx_latlonquad);
--  void clear_gx_latlonquad();
--};
--
--%nodefaultctor HotSpot;
--class HotSpot : public Vec2 {
--};
--
--%nodefaultctor IconStyle;
--class IconStyle : public ColorStyle {
--public:
--  // <scale>
--  double get_scale();
--  void set_scale(double scale);
--  bool has_scale();
--  void clear_scale();
--
--  // <Icon> (different from Overlay Icon)
--  const IconStyleIconPtr get_icon();
--  void set_icon(IconStyleIconPtr icon);
--  bool has_icon();
--  void clear_icon();
--
--  // <heading>
--  double get_heading();
--  void set_heading(double heading);
--  bool has_heading();
--  void clear_heading();
--
--  // <hotSpot>
--  const HotSpotPtr get_hotspot();
--  void set_hotspot(HotSpotPtr hotspot);
--  bool has_hotspot();
--  void clear_hotspot();
--};
--
--%nodefaultctor ImagePyramid;
--class ImagePyramid : public Object {
--public:
--  // <tileSize>
--  int get_tilesize();
--  void set_tilesize(int tilesize);
--  bool has_tilesize();
--  void clear_tilesize();
--
--  // <maxWidth>
--  int get_maxwidth();
--  void set_maxwidth(int maxwidth);
--  bool has_maxwidth();
--  void clear_maxwidth();
--
--  // <maxHeight>
--  int get_maxheight();
--  void set_maxheight(int maxheight);
--  bool has_maxheight();
--  void clear_maxheight();
--
--  // <gridOrigin>
--  int get_gridorigin();
--  void set_gridorigin(int gridorigin);
--  bool has_gridorigin();
--  void clear_gridorigin();
--};
--
--%nodefaultctor ItemIcon;
--class ItemIcon : public Object {
--public:
--  // <state>
--  int get_state_array_at(unsigned int index);
--  const size_t get_state_array_size();
--  bool has_state();
--  void add_state(int state);
--  void clear_state();
--
--  // <href>
--  const std::string& get_href();
--  void set_href(const std::string& href);
--  bool has_href();
--  void clear_href();
--};
--
--%nodefaultctor LabelStyle;
--class LabelStyle : public ColorStyle {
--public:
--  // <scale>
--  double get_scale();
--  void set_scale(double scale);
--  bool has_scale();
--  void clear_scale();
--};
--
--%nodefaultctor LineString;
--class LineString : public Geometry {
--public:
--  // <extrude>
--  bool get_extrude();
--  void set_extrude(bool extrude);
--  bool has_extrude();
--  void clear_extrude();
--
--  // <tessellate>
--  bool get_tessellate();
--  void set_tessellate(bool tessellate);
--  bool has_tessellate();
--  void clear_tessellate();
--
--  // <altitudeMode>
--  int get_altitudemode();
--  void set_altitudemode(int altitudemode);
--  bool has_altitudemode();
--  void clear_altitudemode();
--
--  // <gx:altitudeMode>
--  int get_gx_altitudemode();
--  bool has_gx_altitudemode();
--  void set_gx_altitudemode(int gx_altitudemode);
--  void clear_gx_altitudemode();
--
--  // <coordinates>
--  const CoordinatesPtr get_coordinates();
--  void set_coordinates(CoordinatesPtr coordinates);
--  bool has_coordinates();
--  void clear_coordinates();
--};
--
--%nodefaultctor LineStyle;
--class LineStyle : public ColorStyle {
--public:
--  // <width>
--  double get_width();
--  void set_width(double width);
--  bool has_width();
--  void clear_width();
--};
--
--%nodefaultctor LinearRing;
--class LinearRing : public Geometry {
--public:
--  // <extrude>
--  bool get_extrude();
--  void set_extrude(bool extrude);
--  bool has_extrude();
--  void clear_extrude();
--
--  // <tessellate>
--  bool get_tessellate();
--  void set_tessellate(bool tessellate);
--  bool has_tessellate();
--  void clear_tessellate();
--
--  // <altitudeMode>
--  int get_altitudemode();
--  void set_altitudemode(int altitudemode);
--  bool has_altitudemode();
--  void clear_altitudemode();
--
--  // <gx:altitudeMode>
--  int get_gx_altitudemode();
--  bool has_gx_altitudemode();
--  void set_gx_altitudemode(int gx_altitudemode);
--  void clear_gx_altitudemode();
--
--  // <coordinates>
--  const CoordinatesPtr get_coordinates();
--  void set_coordinates(CoordinatesPtr coordinates);
--  bool has_coordinates();
--  void clear_coordinates();
--};
--
--%nodefaultctor Link;
--class Link : public BasicLink {
--public:
--  // <refreshMode>
--  int get_refreshmode();
--  void set_refreshmode(int refreshmode);
--  bool has_refreshmode();
--  void clear_refreshmode();
--
--  // <refreshInterval>
--  double get_refreshinterval();
--  void set_refreshinterval(double refreshinterval);
--  bool has_refreshinterval();
--  void clear_refreshinterval();
--
--  // <viewRefreshMode>
--  int get_viewrefreshmode();
--  void set_viewrefreshmode(int viewrefreshmode);
--  bool has_viewrefreshmode();
--  void clear_viewrefreshmode();
--
--  // <viewRefreshTime>
--  double get_viewrefreshtime();
--  void set_viewrefreshtime(double viewrefreshtime);
--  bool has_viewrefreshtime();
--  void clear_viewrefreshtime();
--
--  // <viewBoundScale>
--  double get_viewboundscale();
--  void set_viewboundscale(double viewboundscale);
--  bool has_viewboundscale();
--  void clear_viewboundscale();
--
--  // <viewFormat>
--  const std::string& get_viewformat();
--  void set_viewformat(const std::string& viewformat);
--  bool has_viewformat();
--  void clear_viewformat();
--
--  // <httpQuery>
--  const std::string& get_httpquery();
--  void set_httpquery(const std::string& httpquery);
--  bool has_httpquery();
--  void clear_httpquery();
--};
--
--%nodefaultctor ListStyle;
--class ListStyle : public SubStyle {
--public:
--  // <listItemType>
--  int get_listitemtype();
--  void set_listitemtype(int listitemtype);
--  bool has_listitemtype();
--  void clear_listitemtype();
--
--  // <bgColor>
--  const kmlbase::Color32& get_bgcolor();
--  void set_bgcolor(const kmlbase::Color32& bgcolor);
--  bool has_bgcolor();
--  void clear_bgcolor();
--
--  // <ItemIcon>...
--  void add_itemicon(ItemIconPtr itemicon);
--  const size_t get_itemicon_array_size();
--  const ItemIconPtr get_itemicon_array_at(unsigned int index);
--};
--
--%nodefaultctor Location;
--class Location : public Object {
--public:
--  // <longitude>
--  double get_longitude();
--  void set_longitude(double longitude);
--  bool has_longitude();
--  void clear_longitude();
--
--  // <latitude>
--  double get_latitude();
--  void set_latitude(double latitude);
--  bool has_latitude();
--  void clear_latitude();
--
--  // <altitude>
--  double get_altitude();
--  void set_altitude(double altitude);
--  bool has_altitude();
--  void clear_altitude();
--};
--
--%nodefaultctor LookAt;
--class LookAt : public AbstractView {
--public:
--  // <longitude>
--  double get_longitude();
--  void set_longitude(double longitude);
--  bool has_longitude();
--  void clear_longitude();
--
--  // <latitude>
--  double get_latitude();
--  void set_latitude(double latitude);
--  bool has_latitude();
--  void clear_latitude();
--
--  // <altitude>
--  double get_altitude();
--  void set_altitude(double altitude);
--  bool has_altitude();
--  void clear_altitude();
--
--  // <heading>
--  double get_heading();
--  void set_heading(double heading);
--  bool has_heading();
--  void clear_heading();
--
--  // <tilt>
--  double get_tilt();
--  void set_tilt(double tilt);
--  bool has_tilt();
--  void clear_tilt();
--
--  // <range>
--  double get_range();
--  void set_range(double range);
--  bool has_range();
--  void clear_range();
--
--  // <altitudeMode>
--  int get_altitudemode();
--  void set_altitudemode(int altitudemode);
--  bool has_altitudemode();
--  void clear_altitudemode();
--
--  // <gx:altitudeMode>
--  int get_gx_altitudemode();
--  bool has_gx_altitudemode();
--  void set_gx_altitudemode(int gx_altitudemode);
--  void clear_gx_altitudemode();
--};
--
--%nodefaultctor Orientation;
--class Orientation : public Object {
--public:
--  // <heading>
--  double get_heading();
--  void set_heading(double heading);
--  bool has_heading();
--  void clear_heading();
--
--  // <tilt>
--  double get_tilt();
--  void set_tilt(double tilt);
--  bool has_tilt();
--  void clear_tilt();
--
--  // <roll>
--  double get_roll();
--  void set_roll(double roll);
--  bool has_roll();
--  void clear_roll();
--};
--
--%nodefaultctor Scale;
--class Scale : public Object {
--public:
--  // <x>
--  double get_x();
--  void set_x(double x);
--  bool has_x();
--  void clear_x();
--
--  // <y>
--  double get_y();
--  void set_y(double y);
--  bool has_y();
--  void clear_y();
--
--  // <z>
--  double get_z();
--  void set_z(double z);
--  bool has_z();
--  void clear_z();
--};
--
--%nodefaultctor Alias;
--class Alias : public Object {
--public:
--  // <targetHref>
--  const std::string& get_targethref();
--  void set_targethref(const std::string& targethref);
--  bool has_targethref();
--  void clear_targethref();
--
--  // <sourceHref>
--  const std::string& get_sourcehref();
--  void set_sourcehref(const std::string& sourcehref);
--  bool has_sourcehref();
--  void clear_sourcehref();
--};
--
--%nodefaultctor ResourceMap;
--class ResourceMap : public Object {
--public:
--  // <Alias>...
--  void add_alias(AliasPtr alias);
--  const size_t get_alias_array_size();
--  const AliasPtr get_alias_array_at(unsigned int index);
--};
--
--%nodefaultctor Model;
--class Model : public Geometry {
--public:
--  // <altitudeMode>
--  int get_altitudemode();
--  void set_altitudemode(int altitudemode);
--  bool has_altitudemode();
--  void clear_altitudemode();
--
--  // <gx:altitudeMode>
--  int get_gx_altitudemode();
--  bool has_gx_altitudemode();
--  void set_gx_altitudemode(int gx_altitudemode);
--  void clear_gx_altitudemode();
--
--  // <Location>
--  const LocationPtr get_location();
--  void set_location(LocationPtr location);
--  bool has_location();
--  void clear_location();
--
--  // <Orientation>
--  const OrientationPtr get_orientation();
--  void set_orientation(OrientationPtr orientation);
--  bool has_orientation();
--  void clear_orientation();
--
--  // <Scale>
--  const ScalePtr get_scale();
--  void set_scale(ScalePtr scale);
--  bool has_scale();
--  void clear_scale();
--
--  // <Link>
--  const LinkPtr get_link();
--  void set_link(LinkPtr link);
--  bool has_link();
--  void clear_link();
--
--  // <ResourceMap>
--  const ResourceMapPtr get_resourcemap();
--  void set_resourcemap(ResourceMapPtr resourcemap);
--  bool has_resourcemap();
--  void clear_resourcemap();
--};
--
--%nodefaultctor MultiGeometry;
--class MultiGeometry : public Geometry {
--public:
--  // Geometry...
--  void add_geometry(GeometryPtr geometry);
--  const size_t get_geometry_array_size();
--  const GeometryPtr get_geometry_array_at(unsigned int index);
--};
--
--%nodefaultctor NetworkLink;
--class NetworkLink : public Feature {
--public:
--  // <refreshVisibility>
--  bool get_refreshvisibility();
--  void set_refreshvisibility(bool refreshvisibility);
--  bool has_refreshvisibility();
--  void clear_refreshvisibility();
--
--  // <flyToView>
--  bool get_flytoview();
--  void set_flytoview(bool flytoview);
--  bool has_flytoview();
--  void clear_flytoview();
--
--  // <Link>
--  const LinkPtr get_link();
--  void set_link(LinkPtr link);
--  bool has_link();
--  void clear_link();
--};
--
--%nodefaultctor Update;
--class Update : public Element {
--public:
--  // <targetHref>
--  const std::string& get_targethref();
--  bool has_targethref();
--  void set_targethref(const std::string& targethref);
--  void clear_targethref();
--
--  // <Change>,<Create>,<Delete>...
--  void add_updateoperation(UpdateOperationPtr updateoperation);
--  const size_t get_updateoperation_array_size();
--  const UpdateOperationPtr get_updateoperation_array_at(unsigned int index);
--};
--
--%nodefaultctor NetworkLinkControl;
--class NetworkLinkControl : public Element {
--public:
--  // <minRefreshPeriod>
--  double get_minrefreshperiod();
--  void set_minrefreshperiod(double minrefreshperiod);
--  bool has_minrefreshperiod();
--  void clear_minrefreshperiod();
--
--  // <maxSessionLength>
--  double get_maxsessionlength();
--  void set_maxsessionlength(double maxsessionlength);
--  bool has_maxsessionlength();
--  void clear_maxsessionlength();
--
--  // <cookie>
--  const std::string& get_cookie();
--  void set_cookie(const std::string& cookie);
--  bool has_cookie();
--  void clear_cookie();
--
--  // <message>
--  const std::string& get_message();
--  void set_message(const std::string& message);
--  bool has_message();
--  void clear_message();
--
--  // <linkName>
--  const std::string& get_linkname();
--  void set_linkname(const std::string& linkname);
--  bool has_linkname();
--  void clear_linkname();
--
--  // <linkDescription>
--  const std::string& get_linkdescription();
--  void set_linkdescription(const std::string& linkdescription);
--  bool has_linkdescription();
--  void clear_linkdescription();
--
--  // <linkSnippet>
--  const LinkSnippetPtr get_linksnippet();
--  void set_linksnippet(LinkSnippetPtr linksnippet);
--  bool has_linksnippet();
--  void clear_linksnippet();
--
--  // <expires>
--  const std::string& get_expires();
--  void set_expires(const std::string& expires);
--  bool has_expires();
--  void clear_expires();
--
--  // <Update>
--  const UpdatePtr get_update();
--  void set_update(UpdatePtr update);
--  bool has_update();
--  void clear_update();
--
--  // AbstractView
--  const AbstractViewPtr get_abstractview();
--  void set_abstractview(AbstractViewPtr abstractview);
--  bool has_abstractview();
--  void clear_abstractview();
--};
--
--%nodefaultctor Pair;
--class Pair : public Object {
--public:
--  // <key>
--  int get_key();
--  void set_key(int key);
--  bool has_key();
--  void clear_key();
--
--  // <styleUrl>
--  const std::string& get_styleurl();
--  void set_styleurl(const std::string& styleurl);
--  bool has_styleurl();
--  void clear_styleurl();
--
--  // <StyleSelector>
--  const StyleSelectorPtr get_styleselector();
--  void set_styleselector(StyleSelectorPtr styleselector);
--  bool has_styleselector();
--  void clear_styleselector();
--};
--
--%nodefaultctor ViewVolume;
--class ViewVolume : public Object {
--public:
--  // <leftFov>
--  double get_leftfov();
--  void set_leftfov(double leftfov);
--  bool has_leftfov();
--  void clear_leftfov();
--
--  // <rightFov>
--  double get_rightfov();
--  void set_rightfov(double rightfov);
--  bool has_rightfov();
--  void clear_rightfov();
--
--  // <bottomFov>
--  double get_bottomfov();
--  void set_bottomfov(double bottomfov);
--  bool has_bottomfov();
--  void clear_bottomfov();
--
--  // <topFov>
--  double get_topfov();
--  void set_topfov(double topfov);
--  bool has_topfov();
--  void clear_topfov();
--
--  // <near>
--  double get_near();
--  void set_near(double val);
--  bool has_near();
--  void clear_near();
--};
--
--%nodefaultctor Point;
--class Point : public Geometry {
--public:
--  // <extrude>
--  bool get_extrude();
--  void set_extrude(bool extrude);
--  bool has_extrude();
--  void clear_extrude();
--
--  // <altitudeMode>
--  int get_altitudemode();
--  void set_altitudemode(int altitudemode);
--  bool has_altitudemode();
--  void clear_altitudemode();
--
--  // <gx:altitudeMode>
--  int get_gx_altitudemode();
--  bool has_gx_altitudemode();
--  void set_gx_altitudemode(int gx_altitudemode);
--  void clear_gx_altitudemode();
--
--  // <coordinates>
--  const CoordinatesPtr get_coordinates();
--  void set_coordinates(CoordinatesPtr coordinates);
--  bool has_coordinates();
--  void clear_coordinates();
--};
--
--%nodefaultctor PhotoOverlay;
--class PhotoOverlay : public Overlay {
--public:
--  // <rotation>
--  double get_rotation();
--  void set_rotation(double rotation);
--  bool has_rotation();
--  void clear_rotation();
--
--  // <ViewVolume>
--  const ViewVolumePtr get_viewvolume();
--  void set_viewvolume(ViewVolumePtr viewvolume);
--  bool has_viewvolume();
--  void clear_viewvolume();
--
--  // <ImagePyramid>
--  const ImagePyramidPtr get_imagepyramid();
--  void set_imagepyramid(ImagePyramidPtr imagepyramid);
--  bool has_imagepyramid();
--  void clear_imagepyramid();
--
--  // <Point>
--  const PointPtr get_point();
--  void set_point(PointPtr point);
--  bool has_point();
--  void clear_point();
--
--  // <shape>
--  int get_shape();
--  bool has_shape();
--  void set_shape(int shape);
--  void clear_shape();
--};
--
--%nodefaultctor Placemark;
--class Placemark : public Feature {
--public:
--  // Geometry
--  const GeometryPtr get_geometry();
--  void set_geometry(GeometryPtr geometry);
--  bool has_geometry();
--  void clear_geometry();
--};
--
--%nodefaultctor PolyStyle;
--class PolyStyle : public ColorStyle {
--public:
--  // <fill>
--  bool get_fill();
--  void set_fill(bool fill);
--  bool has_fill();
--  void clear_fill();
--
--  // <outline>
--  bool get_outline();
--  void set_outline(bool outline);
--  bool has_outline();
--  void clear_outline();
--};
--
--%nodefaultctor OuterBoundaryIs;
--class OuterBoundaryIs : public Element {
--public:
--  // <LinearRing>
--  const LinearRingPtr get_linearring();
--  void set_linearring(LinearRingPtr linearring);
--  bool has_linearring();
--  void clear_linearring();
--};
--
--%nodefaultctor InnerBoundaryIs;
--class InnerBoundaryIs : public Element {
--public:
--  // <LinearRing>
--  const LinearRingPtr get_linearring();
--  void set_linearring(LinearRingPtr linearring);
--  bool has_linearring();
--  void clear_linearring();
--};
--
--%nodefaultctor Polygon;
--class Polygon : public Geometry {
--public:
--  // <extrude>
--  bool get_extrude();
--  void set_extrude(bool extrude);
--  bool has_extrude();
--  void clear_extrude();
--
--  // <tessellate>
--  bool get_tessellate();
--  void set_tessellate(bool tessellate);
--  bool has_tessellate();
--  void clear_tessellate();
--
--  // <altitudeMode>
--  int get_altitudemode();
--  void set_altitudemode(int altitudemode);
--  bool has_altitudemode();
--  void clear_altitudemode();
--
--  // <gx:altitudeMode>
--  int get_gx_altitudemode();
--  bool has_gx_altitudemode();
--  void set_gx_altitudemode(int gx_altitudemode);
--  void clear_gx_altitudemode();
--
--  // <outerBoundaryIs>
--  const OuterBoundaryIsPtr get_outerboundaryis();
--  void set_outerboundaryis(OuterBoundaryIsPtr outerboundaryis);
--  bool has_outerboundaryis();
--  void clear_outerboundaryis();
--
--  // <innerBoundaryIs>...
--  void add_innerboundaryis(InnerBoundaryIsPtr innerboundaryis);
--  const size_t get_innerboundaryis_array_size();
--  const InnerBoundaryIsPtr get_innerboundaryis_array_at(unsigned int index);
--};
--
--%nodefaultctor SimpleData;
--class SimpleData : public Element {
--public:
--  // name=
--  const std::string& get_name();
--  bool has_name();
--  void set_name(const std::string& value);
--  void clear_name();
--
--  // char data
--  const std::string& get_text();
--  bool has_text();
--  void set_text(const std::string& value);
--  void clear_text();
--};
--
--%nodefaultctor SchemaData;
--class SchemaData : public Object {
--public:
--  // schemaUrl=
--  const std::string& get_schemaurl();
--  bool has_schemaurl();
--  void set_schemaurl(const std::string& value);
--  void clear_schemaurl();
--  // <SimpleData>...
--  void add_simpledata(SimpleDataPtr simpledata);
--  const size_t get_simpledata_array_size();
--  const SimpleDataPtr get_simpledata_array_at(unsigned int index);
--};
--
--%nodefaultctor OverlayXY;
--class OverlayXY : public Vec2 {
--};
--
--%nodefaultctor ScreenXY;
--class ScreenXY : public Vec2 {
--};
--
--%nodefaultctor RotationXY;
--class RotationXY : public Vec2 {
--};
--
--%nodefaultctor Size;
--class Size : public Vec2 {
--};
--
--%nodefaultctor ScreenOverlay;
--class ScreenOverlay : public Overlay {
--public:
--  // <OverlayXY>
--  const OverlayXYPtr get_overlayxy();
--  void set_overlayxy(OverlayXYPtr overlayxy);
--  bool has_overlayxy();
--  void clear_overlayxy();
--
--  // <ScreenXY>
--  const ScreenXYPtr get_screenxy();
--  void set_screenxy(ScreenXYPtr screenxy);
--  bool has_screenxy();
--  void clear_screenxy();
--
--  // <RotationXY>
--  const RotationXYPtr get_rotationxy();
--  void set_rotationxy(RotationXYPtr rotationxy);
--  bool has_rotationxy();
--  void clear_rotationxy();
--
--  // <size>
--  const SizePtr get_size();
--  void set_size(SizePtr size);
--  bool has_size();
--  void clear_size();
--
--  // <rotation>
--  double get_rotation();
--  void set_rotation(double rotation);
--  bool has_rotation();
--  void clear_rotation();
--};
--
--%nodefaultctor Style;
--class Style : public StyleSelector {
--public:
--  // <IconStyle>
--  const IconStylePtr get_iconstyle();
--  void set_iconstyle(IconStylePtr iconstyle);
--  bool has_iconstyle();
--  void clear_iconstyle();
--
--  // <LabelStyle>
--  const LabelStylePtr get_labelstyle();
--  void set_labelstyle(LabelStylePtr labelstyle);
--  bool has_labelstyle();
--  void clear_labelstyle();
--
--  // <LineStyle>
--  const LineStylePtr get_linestyle();
--  void set_linestyle(LineStylePtr linestyle);
--  bool has_linestyle();
--  void clear_linestyle();
--
--  // <PolyStyle>
--  const PolyStylePtr get_polystyle();
--  void set_polystyle(PolyStylePtr polystyle);
--  bool has_polystyle();
--  void clear_polystyle();
--
--  // <BalloonStyle>
--  const BalloonStylePtr get_balloonstyle();
--  void set_balloonstyle(BalloonStylePtr balloonstyle);
--  bool has_balloonstyle();
--  void clear_balloonstyle();
--
--  // <ListStyle>
--  const ListStylePtr get_liststyle();
--  void set_liststyle(ListStylePtr liststyle);
--  bool has_liststyle();
--  void clear_liststyle();
--};
--
--%nodefaultctor StyleMap;
--class StyleMap : public StyleSelector {
--public:
--  // <Pair>...
--  void add_pair(PairPtr pair);
--  const size_t get_pair_array_size();
--  const PairPtr get_pair_array_at(unsigned int index);
--};
--
--%nodefaultctor TimeSpan;
--class TimeSpan : public TimePrimitive {
--public:
--  // <begin>
--  const std::string& get_begin();
--  void set_begin(const std::string& begin);
--  bool has_begin();
--  void clear_begin();
--
--  // <end>
--  const std::string& get_end();
--  void set_end(const std::string& end);
--  bool has_end();
--  void clear_end();
--};
--
--%nodefaultctor GxTimeSpan;
--class GxTimeSpan : public TimeSpan {
--};
--
--%nodefaultctor TimeStamp;
--class TimeStamp : public TimePrimitive {
--public:
--  // <when>
--  const std::string& get_when();
--  void set_when(const std::string& when);
--  bool has_when();
--  void clear_when();
--};
--
--%nodefaultctor GxTimeStamp;
--class GxTimeStamp : public TimeStamp {
--};
--
--%nodefaultctor Kml;
--class Kml : public Element {
--public:
--  // hint=
--  const std::string& get_hint();
--  void set_hint(const std::string& hint);
--  bool has_hint();
--  void clear_hint();
--
--  // <NetworkLinkControl>
--  const NetworkLinkControlPtr get_networklinkcontrol();
--  void set_networklinkcontrol(NetworkLinkControlPtr networklinkcontrol);
--  bool has_networklinkcontrol();
--  void clear_networklinkcontrol();
--
--  // Feature
--  const FeaturePtr get_feature();
--  void set_feature(FeaturePtr feature);
--  bool has_feature();
--  void clear_feature();
--};
--
--// <atom:author>
--%nodefaultctor AtomAuthor;
--class AtomAuthor : public Element {
--public:
--  // <atom:name>
--  const std::string& get_name();
--  void set_name(const std::string& name);
--  bool has_name();
--  void clear_name();
--
--  // <atom:uri>
--  const std::string& get_uri();
--  void set_uri(const std::string& uri);
--  bool has_uri();
--  void clear_uri();
--
--  // <atom:email>
--  const std::string& get_email();
--  void set_email(const std::string& email);
--  bool has_email();
--  void clear_email();
--};
--
--// <atom:link>
--%nodefaultctor AtomLink;
--class AtomLink : public Element {
--public:
--   // href=, RFC 4287 4.2.7.1, RFC 3987
--  const std::string& get_href();
--  bool has_href();
--  void set_href(const std::string& value);
--  void clear_href();
--
--  // rel=, RFC 4287 4.2.7.2, RFC 3987
--  const std::string& get_rel();
--  bool has_rel();
--  void set_rel(const std::string& value);
--  void clear_rel();
--
--  // type=, RFC 4287 4.2.7.3, MIME
--  const std::string& get_type();
--  bool has_type();
--  void set_type(const std::string& value);
--  void clear_type();
--
--  // hreflang=, RFC 4287 4.2.7.4, RFC 3066
--  const std::string& get_hreflang();
--  bool has_hreflang();
--  void set_hreflang(const std::string& value);
--  void clear_hreflang();
--
--  // title=, RFC 4287 4.2.7.5
--  const std::string& get_title();
--  bool has_title();
--  void set_title(const std::string& value);
--  void clear_title();
--
--  // length=, RFC 4287 4.2.7.6
--  const int get_length();
--  bool has_length();
--  void set_length(int value);
--  void clear_length();
--};
--
--// GxTourPrimitive is an abstract base type.  This corresponds to
--// gx:AbstractGxTourPrimitiveType/Group in KML 2.2 gx.
--%nodefaultctor GxTourPrimitive;
--class GxTourPrimitive : public Object {
--};
--
--// <gx:Playlist>
--%nodefaultctor GxPlaylist;
--class GxPlaylist : public Object {
--  // GxTourPrimitive...
-- public:
--  void add_gx_tourprimitive(GxTourPrimitivePtr tourprimitive);
--  const size_t get_gx_tourprimitive_array_size();
--  const GxTourPrimitivePtr get_gx_tourprimitive_array_at(unsigned int index);
--};
--
--// <gx:Tour>
--%nodefaultctor GxTour;
--class GxTour : public Feature {
-- public:
--  // <gx:Playlist>
--  const GxPlaylistPtr get_gx_playlist();
--  bool has_gx_playlist();
--  void set_gx_playlist(GxPlaylistPtr gx_playlist);
--  void clear_gx_playlist();
--};
--
--// <gx:AnimatedUpdate>
--%nodefaultctor GxAnimatedUpdate;
--class GxAnimatedUpdate : public GxTourPrimitive {
--public:
--  //  <gx:duration>
--  double get_gx_duration();
--  bool has_gx_duration();
--  void set_gx_duration(double gx_duration);
--  void clear_gx_duration();
--
--  // <Update>
--  const UpdatePtr get_update();
--  bool has_update();
--  void set_update(UpdatePtr update);
--  void clear_update();
--};
--
--// <gx:FlyTo>
--%nodefaultctor GxFlyTo;
--class GxFlyTo : public GxTourPrimitive {
-- public:
--  //  <gx:duration>
--  double get_gx_duration();
--  bool has_gx_duration();
--  void set_gx_duration(double gx_duration);
--  void clear_gx_duration();
--
--  // <gx:flyToMode>.
--  int get_gx_flytomode();
--  bool has_gx_flytomode();
--  void set_gx_flytomode(int value);
--  void clear_gx_flytomode();
--
--  // AbstractView
--  const AbstractViewPtr get_abstractview();
--  bool has_abstractview();
--  void set_abstractview(AbstractViewPtr abstractview);
--  void clear_abstractview();
--};
--
--// <gx:Wait>
--%nodefaultctor GxWait;
--class GxWait : public GxTourPrimitive {
--public:
--  //  <gx:duration>
--  double get_gx_duration();
--  bool has_gx_duration();
--  void set_gx_duration(double gx_duration);
--  void clear_gx_duration();
--};
--
--// <gx:SoundCue>
--%nodefaultctor GxSoundCue;
--class GxSoundCue : public GxTourPrimitive {
--public:
--  // <href>
--  const std::string& get_href();
--  bool has_href();
--  void set_href(const std::string& href);
--  void clear_href();
--};
--
--// <gx:TourControl>
--%nodefaultctor GxTourControl;
--class GxTourControl : public GxTourPrimitive {
--public:
--  // <gx:playMode>
--  int get_gx_playmode();
--  bool has_gx_playmode();
--  void set_gx_playmode(int value);
--  void clear_gx_playmode();
--};
--
---- /dev/null
-+++ b/src/swig/libkml_kmlelements.i
-@@ -0,0 +1,1750 @@
-+// Copyright 2008, Google Inc. All rights reserved.
-+//
-+// Redistribution and use in source and binary forms, with or without 
-+// modification, are permitted provided that the following conditions are met:
-+//
-+//  1. Redistributions of source code must retain the above copyright notice, 
-+//     this list of conditions and the following disclaimer.
-+//  2. Redistributions in binary form must reproduce the above copyright notice,
-+//     this list of conditions and the following disclaimer in the documentation
-+//     and/or other materials provided with the distribution.
-+//  3. Neither the name of Google Inc. nor the names of its contributors may be
-+//     used to endorse or promote products derived from this software without
-+//     specific prior written permission.
-+//
-+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
-+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-+// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
-+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-+// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-+// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
-+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
-+// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+// Generated from the KML 2.2 XSD.
-+
-+// This is the SWIG interface file for the public API to the KML DOM.
-+// In addition to serving the needs of SWIG this also serves to document the
-+// public C++ API separate from the present implementation found in the
-+// private sections of the present C++ .h files.
-+
-+// This is AbstractObjectType in the KML 2.2 XSD.
-+%nodefaultctor Object;
-+class Object : public Element {
-+public:
-+  // id=
-+  const std::string& get_id();
-+  void set_id(const std::string& id);
-+  bool has_id();
-+  void clear_id();
-+
-+  // targetId=
-+  const std::string& get_targetid();
-+  void set_targetid(const std::string& targetid);
-+  bool has_targetid();
-+  void clear_targetid();
-+};
-+
-+%nodefaultctor SubStyle;
-+class SubStyle : public Object {
-+};
-+
-+%nodefaultctor ColorStyle;
-+class ColorStyle : public SubStyle {
-+public:
-+  // <color>
-+  const kmlbase::Color32& get_color();
-+  void set_color(const kmlbase::Color32& color);
-+  bool has_color();
-+  void clear_color();
-+
-+  // <colorMode>
-+  int get_colormode();
-+  void set_colormode(int colormode);
-+  bool has_colormode();
-+  void clear_colormode();
-+};
-+
-+%nodefaultctor SnippetCommon;
-+class SnippetCommon : public Element {
-+public:
-+  // Content.
-+  const std::string& get_text();
-+  void set_text(const std::string& text);
-+  bool has_text();
-+  void clear_text();
-+
-+  // maxLines=
-+  int get_maxlines();
-+  void set_maxlines(int maxlines);
-+  bool has_maxlines();
-+  void clear_maxlines();
-+};
-+
-+%nodefaultctor Snippet;
-+class Snippet : public SnippetCommon {
-+};
-+
-+%nodefaultctor LinkSnippet;
-+class LinkSnippet : public SnippetCommon {
-+};
-+
-+%nodefaultctor AbstractView;
-+class AbstractView : public Object {
-+ public:
-+  // gx:TimeStamp and gx:TimeSpan.
-+  const TimePrimitivePtr get_gx_timeprimitive();
-+  bool has_gx_timeprimitive();
-+  void set_gx_timeprimitive(const TimePrimitivePtr& gx_timeprimitive);
-+  void clear_gx_timeprimitive();
-+};
-+
-+%nodefaultctor TimePrimitive;
-+class TimePrimitive : public Object {
-+};
-+
-+%nodefaultctor StyleSelector;
-+class StyleSelector : public Object {
-+};
-+
-+%nodefaultctor AbstractLatLonBox;
-+class AbstractLatLonBox : public Object {
-+public:
-+  // <north>
-+  double get_north();
-+  bool has_north();
-+  void set_north(double north);
-+  void clear_north();
-+
-+  // <south>
-+  double get_south();
-+  bool has_south();
-+  void set_south(double south);
-+  void clear_south();
-+
-+  // <east>
-+  double get_east();
-+  bool has_east();
-+  void set_east(double east);
-+  void clear_east();
-+
-+  // <west>
-+  double get_west();
-+  bool has_west();
-+  void set_west(double west);
-+  void clear_west();
-+};
-+
-+%nodefaultctor LatLonAltBox;
-+class LatLonAltBox : public AbstractLatLonBox {
-+public:
-+  // <minAltitude>
-+  double get_minaltitude();
-+  void set_minaltitude(double minaltitude);
-+  bool has_minaltitude();
-+  void clear_minaltitude();
-+
-+  // <maxAltitude>
-+  double get_maxaltitude();
-+  void set_maxaltitude(double maxaltitude);
-+  bool has_maxaltitude();
-+  void clear_maxaltitude();
-+
-+  // <altitudeMode>
-+  int get_altitudemode();
-+  void set_altitudemode(int altitudemode);
-+  bool has_altitudemode();
-+  void clear_altitudemode();
-+
-+  // <gx:altitudeMode>
-+  int get_gx_altitudemode();
-+  bool has_gx_altitudemode();
-+  void set_gx_altitudemode(int gx_altitudemode);
-+  void clear_gx_altitudemode();
-+};
-+
-+%nodefaultctor Lod;
-+class Lod : public Object {
-+public:
-+  // <minLodPixels>
-+  double get_minlodpixels();
-+  void set_minlodpixels(double minlodpixels);
-+  bool has_minlodpixels();
-+  void clear_minlodpixels();
-+
-+  // <maxLodPixels>
-+  double get_maxlodpixels();
-+  void set_maxlodpixels(double maxlodpixels);
-+  bool has_maxlodpixels();
-+  void clear_maxlodpixels();
-+
-+  // <minFadeExtent>
-+  double get_minfadeextent();
-+  void set_minfadeextent(double minfadeextent);
-+  bool has_minfadeextent();
-+  void clear_minfadeextent();
-+
-+  // <maxFadeExtent>
-+  double get_maxfadeextent();
-+  void set_maxfadeextent(double maxfadeextent);
-+  bool has_maxfadeextent();
-+  void clear_maxfadeextent();
-+};
-+
-+%nodefaultctor Region;
-+class Region : public Object {
-+public:
-+  // <LatLonAltBox>
-+  const LatLonAltBoxPtr get_latlonaltbox();
-+  void set_latlonaltbox(LatLonAltBoxPtr latlonaltbox);
-+  bool has_latlonaltbox();
-+  void clear_latlonaltbox();
-+
-+  // <Lod>
-+  const LodPtr get_lod();
-+  void set_lod(LodPtr lod);
-+  bool has_lod();
-+  void clear_lod();
-+};
-+
-+%nodefaultctor ExtendedData;
-+class ExtendedData : public Element {
-+public:
-+  // <Data>.
-+  void add_data(DataPtr data);
-+  const size_t get_data_array_size();
-+  const DataPtr get_data_array_at(unsigned int index);
-+  // <SchemaData>.
-+  void add_schemadata(SchemaDataPtr schemadata);
-+  const size_t get_schemadata_array_size();
-+  const SchemaDataPtr get_schemadata_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor Feature;
-+class Feature : public Object {
-+public:
-+  // <name>
-+  const std::string& get_name();
-+  void set_name(const std::string& name);
-+  bool has_name();
-+  void clear_name();
-+
-+  // <visibility>
-+  bool get_visibility();
-+  void set_visibility(bool visibility);
-+  bool has_visibility();
-+  void clear_visibility();
-+
-+  // <open>
-+  bool get_open();
-+  void set_open(bool open);
-+  bool has_open();
-+  void clear_open();
-+
-+  // <atom:author>
-+  const AtomAuthorPtr get_atomauthor();
-+  bool has_atomauthor();
-+  void set_atomauthor(AtomAuthorPtr atomauthor);
-+  void clear_atomauthor();
-+
-+  // <atom:link>
-+  const AtomLinkPtr get_atomlink();
-+  bool has_atomlink();
-+  void set_atomlink(AtomLinkPtr atomlink);
-+  void clear_atomlink();
-+
-+  // <address>
-+  const std::string& get_address();
-+  void set_address(const std::string& address);
-+  bool has_address();
-+  void clear_address();
-+
-+  // <phoneNumber>
-+  const std::string& get_phonenumber();
-+  void set_phonenumber(const std::string& phonenumber);
-+  bool has_phonenumber();
-+  void clear_phonenumber();
-+
-+  // <Snippet>
-+  const SnippetPtr get_snippet();
-+  void set_snippet(SnippetPtr snippet);
-+  bool has_snippet();
-+  void clear_snippet();
-+
-+  // <description>
-+  const std::string& get_description();
-+  void set_description(const std::string& description);
-+  bool has_description();
-+  void clear_description();
-+
-+  // AbstractView
-+  const AbstractViewPtr get_abstractview();
-+  void set_abstractview(AbstractViewPtr abstractview);
-+  bool has_abstractview();
-+  void clear_abstractview();
-+
-+  // TimePrimitive
-+  const TimePrimitivePtr get_timeprimitive();
-+  void set_timeprimitive(TimePrimitivePtr timeprimitive);
-+  bool has_timeprimitive();
-+  void clear_timeprimitive();
-+
-+  // <styleUrl>
-+  const std::string& get_styleurl();
-+  void set_styleurl(const std::string& styleurl);
-+  bool has_styleurl();
-+  void clear_styleurl();
-+
-+  // StyleSelector
-+  const StyleSelectorPtr get_styleselector();
-+  void set_styleselector(StyleSelectorPtr styleselector);
-+  bool has_styleselector();
-+  void clear_styleselector();
-+
-+  // <Region>
-+  const RegionPtr get_region();
-+  void set_region(RegionPtr region);
-+  bool has_region();
-+  void clear_region();
-+
-+  // <ExtendedData>
-+  const ExtendedDataPtr get_extendeddata();
-+  void set_extendeddata(ExtendedDataPtr extendeddata);
-+  bool has_extendeddata();
-+  void clear_extendeddata();
-+
-+  // <gx:balloonVisibility>
-+  bool get_gx_balloonvisibility();
-+  void set_gx_balloonvisibility(bool balloonvisibility);
-+  bool has_gx_balloonvisibility();
-+  void clear_gx_balloonvisibility();
-+};
-+
-+%nodefaultctor Container;
-+class Container : public Feature {
-+public:
-+  // Feature...
-+  void add_feature(FeaturePtr feature);
-+  const size_t get_feature_array_size();
-+  const FeaturePtr get_feature_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor Geometry;
-+class Geometry : public Object {
-+};
-+
-+%nodefaultctor BasicLink;
-+class BasicLink : public Object {
-+public:
-+  // <href>
-+  const std::string& get_href();
-+  bool has_href();
-+  void set_href(const std::string& href);
-+  void clear_href();
-+};
-+
-+%nodefaultctor Icon;
-+class Icon : public BasicLink {
-+public:
-+  // <refreshMode>
-+  int get_refreshmode();
-+  void set_refreshmode(int refreshmode);
-+  bool has_refreshmode();
-+  void clear_refreshmode();
-+
-+  // <refreshInterval>
-+  double get_refreshinterval();
-+  void set_refreshinterval(double refreshinterval);
-+  bool has_refreshinterval();
-+  void clear_refreshinterval();
-+
-+  // <viewRefreshMode>
-+  int get_viewrefreshmode();
-+  void set_viewrefreshmode(int viewrefreshmode);
-+  bool has_viewrefreshmode();
-+  void clear_viewrefreshmode();
-+
-+  // <viewRefreshTime>
-+  double get_viewrefreshtime();
-+  void set_viewrefreshtime(double viewrefreshtime);
-+  bool has_viewrefreshtime();
-+  void clear_viewrefreshtime();
-+
-+  // <viewBoundScale>
-+  double get_viewboundscale();
-+  void set_viewboundscale(double viewboundscale);
-+  bool has_viewboundscale();
-+  void clear_viewboundscale();
-+
-+  // <viewFormat>
-+  const std::string& get_viewformat();
-+  void set_viewformat(const std::string& viewformat);
-+  bool has_viewformat();
-+  void clear_viewformat();
-+
-+  // <httpQuery>
-+  const std::string& get_httpquery();
-+  void set_httpquery(const std::string& httpquery);
-+  bool has_httpquery();
-+  void clear_httpquery();
-+};
-+
-+%nodefaultctor IconStyleIcon;
-+class IconStyleIcon : public BasicLink {
-+public:
-+  // <href>
-+  const std::string& get_href();
-+  bool has_href();
-+  void set_href(const std::string& href);
-+  void clear_href();
-+};
-+
-+%nodefaultctor Overlay;
-+class Overlay : public Feature {
-+public:
-+  // <color>
-+  const kmlbase::Color32& get_color();
-+  void set_color(const kmlbase::Color32& color);
-+  bool has_color();
-+  void clear_color();
-+
-+  // <drawOrder>
-+  int get_draworder();
-+  void set_draworder(int draworder);
-+  bool has_draworder();
-+  void clear_draworder();
-+
-+  // <Icon>
-+  const IconPtr get_icon();
-+  void set_icon(IconPtr icon);
-+  bool has_icon();
-+  void clear_icon();
-+};
-+
-+%nodefaultctor BalloonStyle;
-+class BalloonStyle : public SubStyle {
-+public:
-+  // <bgColor>
-+  const kmlbase::Color32& get_bgcolor();
-+  void set_bgcolor(const kmlbase::Color32& bgcolor);
-+  bool has_bgcolor();
-+  void clear_bgcolor();
-+
-+  // <textColor>
-+  const kmlbase::Color32& get_textcolor();
-+  void set_textcolor(const kmlbase::Color32& textcolor);
-+  bool has_textcolor();
-+  void clear_textcolor();
-+
-+  // <text>
-+  const std::string& get_text();
-+  void set_text(const std::string& text);
-+  bool has_text();
-+  void clear_text();
-+
-+  // <displayMode>
-+  int get_displaymode();
-+  void set_displaymode(int displaymode);
-+  bool has_displaymode();
-+  void clear_displaymode();
-+};
-+
-+%nodefaultctor Camera;
-+class Camera : public AbstractView {
-+public:
-+  // <longitude>
-+  double get_longitude();
-+  void set_longitude(double longitude);
-+  bool has_longitude();
-+  void clear_longitude();
-+
-+  // <latitude>
-+  double get_latitude();
-+  void set_latitude(double latitude);
-+  bool has_latitude();
-+  void clear_latitude();
-+
-+  // <altitude>
-+  double get_altitude();
-+  void set_altitude(double altitude);
-+  bool has_altitude();
-+  void clear_altitude();
-+
-+  // <heading>
-+  double get_heading();
-+  void set_heading(double heading);
-+  bool has_heading();
-+  void clear_heading();
-+
-+  // <tilt>
-+  double get_tilt();
-+  void set_tilt(double tilt);
-+  bool has_tilt();
-+  void clear_tilt();
-+
-+  // <roll>
-+  double get_roll();
-+  void set_roll(double roll);
-+  bool has_roll();
-+  void clear_roll();
-+
-+  // <altitudeMode>
-+  int get_altitudemode();
-+  void set_altitudemode(int altitudemode);
-+  bool has_altitudemode();
-+  void clear_altitudemode();
-+
-+  // <gx:altitudeMode>
-+  int get_gx_altitudemode();
-+  bool has_gx_altitudemode();
-+  void set_gx_altitudemode(int gx_altitudemode);
-+  void clear_gx_altitudemode();
-+};
-+
-+%nodefaultctor UpdateOperation;
-+class UpdateOperation : public Element {
-+};
-+
-+%nodefaultctor Change;
-+class Change : public UpdateOperation {
-+public:
-+  // Object...
-+  void add_object(ObjectPtr object);
-+  const size_t get_object_array_size();
-+  const ObjectPtr get_object_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor Create;
-+class Create : public UpdateOperation {
-+public:
-+  // Container...
-+  void add_container(ContainerPtr container);
-+  const size_t get_container_array_size();
-+  const ContainerPtr get_container_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor Data;
-+class Data : public Object {
-+public:
-+  // name=
-+  const std::string& get_name();
-+  bool has_name();
-+  void set_name(const std::string& name);
-+  void clear_name();
-+
-+  // <displayname>
-+  const std::string& get_displayname();
-+  bool has_displayname();
-+  void set_displayname(const std::string& displayname);
-+  void clear_displayname();
-+
-+  // <value>
-+  const std::string& get_value();
-+  bool has_value();
-+  void set_value(const std::string& value);
-+  void clear_value();
-+};
-+
-+%nodefaultctor Delete;
-+class Delete : public UpdateOperation {
-+public:
-+  // Feature...
-+  void add_feature(FeaturePtr feature);
-+  const size_t get_feature_array_size();
-+  const FeaturePtr get_feature_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor SimpleField;
-+class SimpleField : public Element {
-+public:
-+  // type=
-+  const std::string& get_type();
-+  bool has_type();
-+  void set_type(const std::string& value);
-+  void clear_type();
-+
-+  // name=
-+  const std::string& get_name();
-+  bool has_name();
-+  void set_name(const std::string& value);
-+  void clear_name();
-+
-+  // <displayName>
-+  const std::string& get_displayname();
-+  void set_displayname(const std::string& displayname);
-+  bool has_displayname();
-+  void clear_displayname();
-+};
-+
-+%nodefaultctor Schema;
-+class Schema : public Object {
-+public:
-+  // name=
-+  const std::string& get_name();
-+  bool has_name();
-+  void set_name(const std::string& value);
-+  void clear_name();
-+
-+  // <SimpleField>...
-+  void add_simplefield(SimpleFieldPtr simplefield);
-+  const size_t get_simplefield_array_size();
-+  const SimpleFieldPtr get_simplefield_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor Document;
-+class Document : public Container {
-+public:
-+  // <Schema>...
-+  void add_schema(SchemaPtr schema);
-+  const size_t get_schema_array_size();
-+  const SchemaPtr get_schema_array_at(unsigned int index);
-+
-+  // <Style>,<StyleMap>...
-+  void add_styleselector(StyleSelectorPtr styleselector);
-+  const size_t get_styleselector_array_size();
-+  const StyleSelectorPtr get_styleselector_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor Folder;
-+class Folder : public Container {
-+};
-+
-+%nodefaultctor LatLonBox;
-+class LatLonBox : public AbstractLatLonBox {
-+public:
-+  // <rotation>
-+  double get_rotation();
-+  void set_rotation(double rotation);
-+  bool has_rotation();
-+  void clear_rotation();
-+};
-+
-+%nodefaultctor GxLatLonQuad;
-+class GxLatLonQuad : public Object {
-+public:
-+  // <coordinates>
-+  const CoordinatesPtr get_coordinates();
-+  bool has_coordinates();
-+  void set_coordinates(const CoordinatesPtr& coordinates);
-+  void clear_coordinates();
-+};
-+
-+%nodefaultctor GroundOverlay;
-+class GroundOverlay : public Overlay {
-+public:
-+  // <altitude>
-+  double get_altitude();
-+  void set_altitude(double altitude);
-+  bool has_altitude();
-+  void clear_altitude();
-+
-+  // <altitudeMode>
-+  int get_altitudemode();
-+  void set_altitudemode(int altitudemode);
-+  bool has_altitudemode();
-+  void clear_altitudemode();
-+
-+  // <gx:altitudeMode>
-+  int get_gx_altitudemode();
-+  bool has_gx_altitudemode();
-+  void set_gx_altitudemode(int gx_altitudemode);
-+  void clear_gx_altitudemode();
-+
-+  // <LatLonBox>
-+  const LatLonBoxPtr get_latlonbox();
-+  void set_latlonbox(LatLonBoxPtr latlonbox);
-+  bool has_latlonbox();
-+  void clear_latlonbox();
-+
-+  // <gx:LatLonQuad>
-+  const GxLatLonQuadPtr get_gx_latlonquad();
-+  bool has_gx_latlonquad();
-+  void set_gx_latlonquad(GxLatLonQuadPtr gx_latlonquad);
-+  void clear_gx_latlonquad();
-+};
-+
-+%nodefaultctor HotSpot;
-+class HotSpot : public Vec2 {
-+};
-+
-+%nodefaultctor IconStyle;
-+class IconStyle : public ColorStyle {
-+public:
-+  // <scale>
-+  double get_scale();
-+  void set_scale(double scale);
-+  bool has_scale();
-+  void clear_scale();
-+
-+  // <Icon> (different from Overlay Icon)
-+  const IconStyleIconPtr get_icon();
-+  void set_icon(IconStyleIconPtr icon);
-+  bool has_icon();
-+  void clear_icon();
-+
-+  // <heading>
-+  double get_heading();
-+  void set_heading(double heading);
-+  bool has_heading();
-+  void clear_heading();
-+
-+  // <hotSpot>
-+  const HotSpotPtr get_hotspot();
-+  void set_hotspot(HotSpotPtr hotspot);
-+  bool has_hotspot();
-+  void clear_hotspot();
-+};
-+
-+%nodefaultctor ImagePyramid;
-+class ImagePyramid : public Object {
-+public:
-+  // <tileSize>
-+  int get_tilesize();
-+  void set_tilesize(int tilesize);
-+  bool has_tilesize();
-+  void clear_tilesize();
-+
-+  // <maxWidth>
-+  int get_maxwidth();
-+  void set_maxwidth(int maxwidth);
-+  bool has_maxwidth();
-+  void clear_maxwidth();
-+
-+  // <maxHeight>
-+  int get_maxheight();
-+  void set_maxheight(int maxheight);
-+  bool has_maxheight();
-+  void clear_maxheight();
-+
-+  // <gridOrigin>
-+  int get_gridorigin();
-+  void set_gridorigin(int gridorigin);
-+  bool has_gridorigin();
-+  void clear_gridorigin();
-+};
-+
-+%nodefaultctor ItemIcon;
-+class ItemIcon : public Object {
-+public:
-+  // <state>
-+  int get_state_array_at(unsigned int index);
-+  const size_t get_state_array_size();
-+  bool has_state();
-+  void add_state(int state);
-+  void clear_state();
-+
-+  // <href>
-+  const std::string& get_href();
-+  void set_href(const std::string& href);
-+  bool has_href();
-+  void clear_href();
-+};
-+
-+%nodefaultctor LabelStyle;
-+class LabelStyle : public ColorStyle {
-+public:
-+  // <scale>
-+  double get_scale();
-+  void set_scale(double scale);
-+  bool has_scale();
-+  void clear_scale();
-+};
-+
-+%nodefaultctor LineString;
-+class LineString : public Geometry {
-+public:
-+  // <extrude>
-+  bool get_extrude();
-+  void set_extrude(bool extrude);
-+  bool has_extrude();
-+  void clear_extrude();
-+
-+  // <tessellate>
-+  bool get_tessellate();
-+  void set_tessellate(bool tessellate);
-+  bool has_tessellate();
-+  void clear_tessellate();
-+
-+  // <altitudeMode>
-+  int get_altitudemode();
-+  void set_altitudemode(int altitudemode);
-+  bool has_altitudemode();
-+  void clear_altitudemode();
-+
-+  // <gx:altitudeMode>
-+  int get_gx_altitudemode();
-+  bool has_gx_altitudemode();
-+  void set_gx_altitudemode(int gx_altitudemode);
-+  void clear_gx_altitudemode();
-+
-+  // <coordinates>
-+  const CoordinatesPtr get_coordinates();
-+  void set_coordinates(CoordinatesPtr coordinates);
-+  bool has_coordinates();
-+  void clear_coordinates();
-+};
-+
-+%nodefaultctor LineStyle;
-+class LineStyle : public ColorStyle {
-+public:
-+  // <width>
-+  double get_width();
-+  void set_width(double width);
-+  bool has_width();
-+  void clear_width();
-+};
-+
-+%nodefaultctor LinearRing;
-+class LinearRing : public Geometry {
-+public:
-+  // <extrude>
-+  bool get_extrude();
-+  void set_extrude(bool extrude);
-+  bool has_extrude();
-+  void clear_extrude();
-+
-+  // <tessellate>
-+  bool get_tessellate();
-+  void set_tessellate(bool tessellate);
-+  bool has_tessellate();
-+  void clear_tessellate();
-+
-+  // <altitudeMode>
-+  int get_altitudemode();
-+  void set_altitudemode(int altitudemode);
-+  bool has_altitudemode();
-+  void clear_altitudemode();
-+
-+  // <gx:altitudeMode>
-+  int get_gx_altitudemode();
-+  bool has_gx_altitudemode();
-+  void set_gx_altitudemode(int gx_altitudemode);
-+  void clear_gx_altitudemode();
-+
-+  // <coordinates>
-+  const CoordinatesPtr get_coordinates();
-+  void set_coordinates(CoordinatesPtr coordinates);
-+  bool has_coordinates();
-+  void clear_coordinates();
-+};
-+
-+%nodefaultctor Link;
-+class Link : public BasicLink {
-+public:
-+  // <refreshMode>
-+  int get_refreshmode();
-+  void set_refreshmode(int refreshmode);
-+  bool has_refreshmode();
-+  void clear_refreshmode();
-+
-+  // <refreshInterval>
-+  double get_refreshinterval();
-+  void set_refreshinterval(double refreshinterval);
-+  bool has_refreshinterval();
-+  void clear_refreshinterval();
-+
-+  // <viewRefreshMode>
-+  int get_viewrefreshmode();
-+  void set_viewrefreshmode(int viewrefreshmode);
-+  bool has_viewrefreshmode();
-+  void clear_viewrefreshmode();
-+
-+  // <viewRefreshTime>
-+  double get_viewrefreshtime();
-+  void set_viewrefreshtime(double viewrefreshtime);
-+  bool has_viewrefreshtime();
-+  void clear_viewrefreshtime();
-+
-+  // <viewBoundScale>
-+  double get_viewboundscale();
-+  void set_viewboundscale(double viewboundscale);
-+  bool has_viewboundscale();
-+  void clear_viewboundscale();
-+
-+  // <viewFormat>
-+  const std::string& get_viewformat();
-+  void set_viewformat(const std::string& viewformat);
-+  bool has_viewformat();
-+  void clear_viewformat();
-+
-+  // <httpQuery>
-+  const std::string& get_httpquery();
-+  void set_httpquery(const std::string& httpquery);
-+  bool has_httpquery();
-+  void clear_httpquery();
-+};
-+
-+%nodefaultctor ListStyle;
-+class ListStyle : public SubStyle {
-+public:
-+  // <listItemType>
-+  int get_listitemtype();
-+  void set_listitemtype(int listitemtype);
-+  bool has_listitemtype();
-+  void clear_listitemtype();
-+
-+  // <bgColor>
-+  const kmlbase::Color32& get_bgcolor();
-+  void set_bgcolor(const kmlbase::Color32& bgcolor);
-+  bool has_bgcolor();
-+  void clear_bgcolor();
-+
-+  // <ItemIcon>...
-+  void add_itemicon(ItemIconPtr itemicon);
-+  const size_t get_itemicon_array_size();
-+  const ItemIconPtr get_itemicon_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor Location;
-+class Location : public Object {
-+public:
-+  // <longitude>
-+  double get_longitude();
-+  void set_longitude(double longitude);
-+  bool has_longitude();
-+  void clear_longitude();
-+
-+  // <latitude>
-+  double get_latitude();
-+  void set_latitude(double latitude);
-+  bool has_latitude();
-+  void clear_latitude();
-+
-+  // <altitude>
-+  double get_altitude();
-+  void set_altitude(double altitude);
-+  bool has_altitude();
-+  void clear_altitude();
-+};
-+
-+%nodefaultctor LookAt;
-+class LookAt : public AbstractView {
-+public:
-+  // <longitude>
-+  double get_longitude();
-+  void set_longitude(double longitude);
-+  bool has_longitude();
-+  void clear_longitude();
-+
-+  // <latitude>
-+  double get_latitude();
-+  void set_latitude(double latitude);
-+  bool has_latitude();
-+  void clear_latitude();
-+
-+  // <altitude>
-+  double get_altitude();
-+  void set_altitude(double altitude);
-+  bool has_altitude();
-+  void clear_altitude();
-+
-+  // <heading>
-+  double get_heading();
-+  void set_heading(double heading);
-+  bool has_heading();
-+  void clear_heading();
-+
-+  // <tilt>
-+  double get_tilt();
-+  void set_tilt(double tilt);
-+  bool has_tilt();
-+  void clear_tilt();
-+
-+  // <range>
-+  double get_range();
-+  void set_range(double range);
-+  bool has_range();
-+  void clear_range();
-+
-+  // <altitudeMode>
-+  int get_altitudemode();
-+  void set_altitudemode(int altitudemode);
-+  bool has_altitudemode();
-+  void clear_altitudemode();
-+
-+  // <gx:altitudeMode>
-+  int get_gx_altitudemode();
-+  bool has_gx_altitudemode();
-+  void set_gx_altitudemode(int gx_altitudemode);
-+  void clear_gx_altitudemode();
-+};
-+
-+%nodefaultctor Orientation;
-+class Orientation : public Object {
-+public:
-+  // <heading>
-+  double get_heading();
-+  void set_heading(double heading);
-+  bool has_heading();
-+  void clear_heading();
-+
-+  // <tilt>
-+  double get_tilt();
-+  void set_tilt(double tilt);
-+  bool has_tilt();
-+  void clear_tilt();
-+
-+  // <roll>
-+  double get_roll();
-+  void set_roll(double roll);
-+  bool has_roll();
-+  void clear_roll();
-+};
-+
-+%nodefaultctor Scale;
-+class Scale : public Object {
-+public:
-+  // <x>
-+  double get_x();
-+  void set_x(double x);
-+  bool has_x();
-+  void clear_x();
-+
-+  // <y>
-+  double get_y();
-+  void set_y(double y);
-+  bool has_y();
-+  void clear_y();
-+
-+  // <z>
-+  double get_z();
-+  void set_z(double z);
-+  bool has_z();
-+  void clear_z();
-+};
-+
-+%nodefaultctor Alias;
-+class Alias : public Object {
-+public:
-+  // <targetHref>
-+  const std::string& get_targethref();
-+  void set_targethref(const std::string& targethref);
-+  bool has_targethref();
-+  void clear_targethref();
-+
-+  // <sourceHref>
-+  const std::string& get_sourcehref();
-+  void set_sourcehref(const std::string& sourcehref);
-+  bool has_sourcehref();
-+  void clear_sourcehref();
-+};
-+
-+%nodefaultctor ResourceMap;
-+class ResourceMap : public Object {
-+public:
-+  // <Alias>...
-+  void add_alias(AliasPtr alias);
-+  const size_t get_alias_array_size();
-+  const AliasPtr get_alias_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor Model;
-+class Model : public Geometry {
-+public:
-+  // <altitudeMode>
-+  int get_altitudemode();
-+  void set_altitudemode(int altitudemode);
-+  bool has_altitudemode();
-+  void clear_altitudemode();
-+
-+  // <gx:altitudeMode>
-+  int get_gx_altitudemode();
-+  bool has_gx_altitudemode();
-+  void set_gx_altitudemode(int gx_altitudemode);
-+  void clear_gx_altitudemode();
-+
-+  // <Location>
-+  const LocationPtr get_location();
-+  void set_location(LocationPtr location);
-+  bool has_location();
-+  void clear_location();
-+
-+  // <Orientation>
-+  const OrientationPtr get_orientation();
-+  void set_orientation(OrientationPtr orientation);
-+  bool has_orientation();
-+  void clear_orientation();
-+
-+  // <Scale>
-+  const ScalePtr get_scale();
-+  void set_scale(ScalePtr scale);
-+  bool has_scale();
-+  void clear_scale();
-+
-+  // <Link>
-+  const LinkPtr get_link();
-+  void set_link(LinkPtr link);
-+  bool has_link();
-+  void clear_link();
-+
-+  // <ResourceMap>
-+  const ResourceMapPtr get_resourcemap();
-+  void set_resourcemap(ResourceMapPtr resourcemap);
-+  bool has_resourcemap();
-+  void clear_resourcemap();
-+};
-+
-+%nodefaultctor MultiGeometry;
-+class MultiGeometry : public Geometry {
-+public:
-+  // Geometry...
-+  void add_geometry(GeometryPtr geometry);
-+  const size_t get_geometry_array_size();
-+  const GeometryPtr get_geometry_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor NetworkLink;
-+class NetworkLink : public Feature {
-+public:
-+  // <refreshVisibility>
-+  bool get_refreshvisibility();
-+  void set_refreshvisibility(bool refreshvisibility);
-+  bool has_refreshvisibility();
-+  void clear_refreshvisibility();
-+
-+  // <flyToView>
-+  bool get_flytoview();
-+  void set_flytoview(bool flytoview);
-+  bool has_flytoview();
-+  void clear_flytoview();
-+
-+  // <Link>
-+  const LinkPtr get_link();
-+  void set_link(LinkPtr link);
-+  bool has_link();
-+  void clear_link();
-+};
-+
-+%nodefaultctor Update;
-+class Update : public Element {
-+public:
-+  // <targetHref>
-+  const std::string& get_targethref();
-+  bool has_targethref();
-+  void set_targethref(const std::string& targethref);
-+  void clear_targethref();
-+
-+  // <Change>,<Create>,<Delete>...
-+  void add_updateoperation(UpdateOperationPtr updateoperation);
-+  const size_t get_updateoperation_array_size();
-+  const UpdateOperationPtr get_updateoperation_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor NetworkLinkControl;
-+class NetworkLinkControl : public Element {
-+public:
-+  // <minRefreshPeriod>
-+  double get_minrefreshperiod();
-+  void set_minrefreshperiod(double minrefreshperiod);
-+  bool has_minrefreshperiod();
-+  void clear_minrefreshperiod();
-+
-+  // <maxSessionLength>
-+  double get_maxsessionlength();
-+  void set_maxsessionlength(double maxsessionlength);
-+  bool has_maxsessionlength();
-+  void clear_maxsessionlength();
-+
-+  // <cookie>
-+  const std::string& get_cookie();
-+  void set_cookie(const std::string& cookie);
-+  bool has_cookie();
-+  void clear_cookie();
-+
-+  // <message>
-+  const std::string& get_message();
-+  void set_message(const std::string& message);
-+  bool has_message();
-+  void clear_message();
-+
-+  // <linkName>
-+  const std::string& get_linkname();
-+  void set_linkname(const std::string& linkname);
-+  bool has_linkname();
-+  void clear_linkname();
-+
-+  // <linkDescription>
-+  const std::string& get_linkdescription();
-+  void set_linkdescription(const std::string& linkdescription);
-+  bool has_linkdescription();
-+  void clear_linkdescription();
-+
-+  // <linkSnippet>
-+  const LinkSnippetPtr get_linksnippet();
-+  void set_linksnippet(LinkSnippetPtr linksnippet);
-+  bool has_linksnippet();
-+  void clear_linksnippet();
-+
-+  // <expires>
-+  const std::string& get_expires();
-+  void set_expires(const std::string& expires);
-+  bool has_expires();
-+  void clear_expires();
-+
-+  // <Update>
-+  const UpdatePtr get_update();
-+  void set_update(UpdatePtr update);
-+  bool has_update();
-+  void clear_update();
-+
-+  // AbstractView
-+  const AbstractViewPtr get_abstractview();
-+  void set_abstractview(AbstractViewPtr abstractview);
-+  bool has_abstractview();
-+  void clear_abstractview();
-+};
-+
-+%nodefaultctor Pair;
-+class Pair : public Object {
-+public:
-+  // <key>
-+  int get_key();
-+  void set_key(int key);
-+  bool has_key();
-+  void clear_key();
-+
-+  // <styleUrl>
-+  const std::string& get_styleurl();
-+  void set_styleurl(const std::string& styleurl);
-+  bool has_styleurl();
-+  void clear_styleurl();
-+
-+  // <StyleSelector>
-+  const StyleSelectorPtr get_styleselector();
-+  void set_styleselector(StyleSelectorPtr styleselector);
-+  bool has_styleselector();
-+  void clear_styleselector();
-+};
-+
-+%nodefaultctor ViewVolume;
-+class ViewVolume : public Object {
-+public:
-+  // <leftFov>
-+  double get_leftfov();
-+  void set_leftfov(double leftfov);
-+  bool has_leftfov();
-+  void clear_leftfov();
-+
-+  // <rightFov>
-+  double get_rightfov();
-+  void set_rightfov(double rightfov);
-+  bool has_rightfov();
-+  void clear_rightfov();
-+
-+  // <bottomFov>
-+  double get_bottomfov();
-+  void set_bottomfov(double bottomfov);
-+  bool has_bottomfov();
-+  void clear_bottomfov();
-+
-+  // <topFov>
-+  double get_topfov();
-+  void set_topfov(double topfov);
-+  bool has_topfov();
-+  void clear_topfov();
-+
-+  // <near>
-+  double get_near();
-+  void set_near(double val);
-+  bool has_near();
-+  void clear_near();
-+};
-+
-+%nodefaultctor Point;
-+class Point : public Geometry {
-+public:
-+  // <extrude>
-+  bool get_extrude();
-+  void set_extrude(bool extrude);
-+  bool has_extrude();
-+  void clear_extrude();
-+
-+  // <altitudeMode>
-+  int get_altitudemode();
-+  void set_altitudemode(int altitudemode);
-+  bool has_altitudemode();
-+  void clear_altitudemode();
-+
-+  // <gx:altitudeMode>
-+  int get_gx_altitudemode();
-+  bool has_gx_altitudemode();
-+  void set_gx_altitudemode(int gx_altitudemode);
-+  void clear_gx_altitudemode();
-+
-+  // <coordinates>
-+  const CoordinatesPtr get_coordinates();
-+  void set_coordinates(CoordinatesPtr coordinates);
-+  bool has_coordinates();
-+  void clear_coordinates();
-+};
-+
-+%nodefaultctor PhotoOverlay;
-+class PhotoOverlay : public Overlay {
-+public:
-+  // <rotation>
-+  double get_rotation();
-+  void set_rotation(double rotation);
-+  bool has_rotation();
-+  void clear_rotation();
-+
-+  // <ViewVolume>
-+  const ViewVolumePtr get_viewvolume();
-+  void set_viewvolume(ViewVolumePtr viewvolume);
-+  bool has_viewvolume();
-+  void clear_viewvolume();
-+
-+  // <ImagePyramid>
-+  const ImagePyramidPtr get_imagepyramid();
-+  void set_imagepyramid(ImagePyramidPtr imagepyramid);
-+  bool has_imagepyramid();
-+  void clear_imagepyramid();
-+
-+  // <Point>
-+  const PointPtr get_point();
-+  void set_point(PointPtr point);
-+  bool has_point();
-+  void clear_point();
-+
-+  // <shape>
-+  int get_shape();
-+  bool has_shape();
-+  void set_shape(int shape);
-+  void clear_shape();
-+};
-+
-+%nodefaultctor Placemark;
-+class Placemark : public Feature {
-+public:
-+  // Geometry
-+  const GeometryPtr get_geometry();
-+  void set_geometry(GeometryPtr geometry);
-+  bool has_geometry();
-+  void clear_geometry();
-+};
-+
-+%nodefaultctor PolyStyle;
-+class PolyStyle : public ColorStyle {
-+public:
-+  // <fill>
-+  bool get_fill();
-+  void set_fill(bool fill);
-+  bool has_fill();
-+  void clear_fill();
-+
-+  // <outline>
-+  bool get_outline();
-+  void set_outline(bool outline);
-+  bool has_outline();
-+  void clear_outline();
-+};
-+
-+%nodefaultctor OuterBoundaryIs;
-+class OuterBoundaryIs : public Element {
-+public:
-+  // <LinearRing>
-+  const LinearRingPtr get_linearring();
-+  void set_linearring(LinearRingPtr linearring);
-+  bool has_linearring();
-+  void clear_linearring();
-+};
-+
-+%nodefaultctor InnerBoundaryIs;
-+class InnerBoundaryIs : public Element {
-+public:
-+  // <LinearRing>
-+  const LinearRingPtr get_linearring();
-+  void set_linearring(LinearRingPtr linearring);
-+  bool has_linearring();
-+  void clear_linearring();
-+};
-+
-+%nodefaultctor Polygon;
-+class Polygon : public Geometry {
-+public:
-+  // <extrude>
-+  bool get_extrude();
-+  void set_extrude(bool extrude);
-+  bool has_extrude();
-+  void clear_extrude();
-+
-+  // <tessellate>
-+  bool get_tessellate();
-+  void set_tessellate(bool tessellate);
-+  bool has_tessellate();
-+  void clear_tessellate();
-+
-+  // <altitudeMode>
-+  int get_altitudemode();
-+  void set_altitudemode(int altitudemode);
-+  bool has_altitudemode();
-+  void clear_altitudemode();
-+
-+  // <gx:altitudeMode>
-+  int get_gx_altitudemode();
-+  bool has_gx_altitudemode();
-+  void set_gx_altitudemode(int gx_altitudemode);
-+  void clear_gx_altitudemode();
-+
-+  // <outerBoundaryIs>
-+  const OuterBoundaryIsPtr get_outerboundaryis();
-+  void set_outerboundaryis(OuterBoundaryIsPtr outerboundaryis);
-+  bool has_outerboundaryis();
-+  void clear_outerboundaryis();
-+
-+  // <innerBoundaryIs>...
-+  void add_innerboundaryis(InnerBoundaryIsPtr innerboundaryis);
-+  const size_t get_innerboundaryis_array_size();
-+  const InnerBoundaryIsPtr get_innerboundaryis_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor SimpleData;
-+class SimpleData : public Element {
-+public:
-+  // name=
-+  const std::string& get_name();
-+  bool has_name();
-+  void set_name(const std::string& value);
-+  void clear_name();
-+
-+  // char data
-+  const std::string& get_text();
-+  bool has_text();
-+  void set_text(const std::string& value);
-+  void clear_text();
-+};
-+
-+%nodefaultctor SchemaData;
-+class SchemaData : public Object {
-+public:
-+  // schemaUrl=
-+  const std::string& get_schemaurl();
-+  bool has_schemaurl();
-+  void set_schemaurl(const std::string& value);
-+  void clear_schemaurl();
-+  // <SimpleData>...
-+  void add_simpledata(SimpleDataPtr simpledata);
-+  const size_t get_simpledata_array_size();
-+  const SimpleDataPtr get_simpledata_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor OverlayXY;
-+class OverlayXY : public Vec2 {
-+};
-+
-+%nodefaultctor ScreenXY;
-+class ScreenXY : public Vec2 {
-+};
-+
-+%nodefaultctor RotationXY;
-+class RotationXY : public Vec2 {
-+};
-+
-+%nodefaultctor Size;
-+class Size : public Vec2 {
-+};
-+
-+%nodefaultctor ScreenOverlay;
-+class ScreenOverlay : public Overlay {
-+public:
-+  // <OverlayXY>
-+  const OverlayXYPtr get_overlayxy();
-+  void set_overlayxy(OverlayXYPtr overlayxy);
-+  bool has_overlayxy();
-+  void clear_overlayxy();
-+
-+  // <ScreenXY>
-+  const ScreenXYPtr get_screenxy();
-+  void set_screenxy(ScreenXYPtr screenxy);
-+  bool has_screenxy();
-+  void clear_screenxy();
-+
-+  // <RotationXY>
-+  const RotationXYPtr get_rotationxy();
-+  void set_rotationxy(RotationXYPtr rotationxy);
-+  bool has_rotationxy();
-+  void clear_rotationxy();
-+
-+  // <size>
-+  const SizePtr get_size();
-+  void set_size(SizePtr size);
-+  bool has_size();
-+  void clear_size();
-+
-+  // <rotation>
-+  double get_rotation();
-+  void set_rotation(double rotation);
-+  bool has_rotation();
-+  void clear_rotation();
-+};
-+
-+%nodefaultctor Style;
-+class Style : public StyleSelector {
-+public:
-+  // <IconStyle>
-+  const IconStylePtr get_iconstyle();
-+  void set_iconstyle(IconStylePtr iconstyle);
-+  bool has_iconstyle();
-+  void clear_iconstyle();
-+
-+  // <LabelStyle>
-+  const LabelStylePtr get_labelstyle();
-+  void set_labelstyle(LabelStylePtr labelstyle);
-+  bool has_labelstyle();
-+  void clear_labelstyle();
-+
-+  // <LineStyle>
-+  const LineStylePtr get_linestyle();
-+  void set_linestyle(LineStylePtr linestyle);
-+  bool has_linestyle();
-+  void clear_linestyle();
-+
-+  // <PolyStyle>
-+  const PolyStylePtr get_polystyle();
-+  void set_polystyle(PolyStylePtr polystyle);
-+  bool has_polystyle();
-+  void clear_polystyle();
-+
-+  // <BalloonStyle>
-+  const BalloonStylePtr get_balloonstyle();
-+  void set_balloonstyle(BalloonStylePtr balloonstyle);
-+  bool has_balloonstyle();
-+  void clear_balloonstyle();
-+
-+  // <ListStyle>
-+  const ListStylePtr get_liststyle();
-+  void set_liststyle(ListStylePtr liststyle);
-+  bool has_liststyle();
-+  void clear_liststyle();
-+};
-+
-+%nodefaultctor StyleMap;
-+class StyleMap : public StyleSelector {
-+public:
-+  // <Pair>...
-+  void add_pair(PairPtr pair);
-+  const size_t get_pair_array_size();
-+  const PairPtr get_pair_array_at(unsigned int index);
-+};
-+
-+%nodefaultctor TimeSpan;
-+class TimeSpan : public TimePrimitive {
-+public:
-+  // <begin>
-+  const std::string& get_begin();
-+  void set_begin(const std::string& begin);
-+  bool has_begin();
-+  void clear_begin();
-+
-+  // <end>
-+  const std::string& get_end();
-+  void set_end(const std::string& end);
-+  bool has_end();
-+  void clear_end();
-+};
-+
-+%nodefaultctor GxTimeSpan;
-+class GxTimeSpan : public TimeSpan {
-+};
-+
-+%nodefaultctor TimeStamp;
-+class TimeStamp : public TimePrimitive {
-+public:
-+  // <when>
-+  const std::string& get_when();
-+  void set_when(const std::string& when);
-+  bool has_when();
-+  void clear_when();
-+};
-+
-+%nodefaultctor GxTimeStamp;
-+class GxTimeStamp : public TimeStamp {
-+};
-+
-+%nodefaultctor Kml;
-+class Kml : public Element {
-+public:
-+  // hint=
-+  const std::string& get_hint();
-+  void set_hint(const std::string& hint);
-+  bool has_hint();
-+  void clear_hint();
-+
-+  // <NetworkLinkControl>
-+  const NetworkLinkControlPtr get_networklinkcontrol();
-+  void set_networklinkcontrol(NetworkLinkControlPtr networklinkcontrol);
-+  bool has_networklinkcontrol();
-+  void clear_networklinkcontrol();
-+
-+  // Feature
-+  const FeaturePtr get_feature();
-+  void set_feature(FeaturePtr feature);
-+  bool has_feature();
-+  void clear_feature();
-+};
-+
-+// <atom:author>
-+%nodefaultctor AtomAuthor;
-+class AtomAuthor : public Element {
-+public:
-+  // <atom:name>
-+  const std::string& get_name();
-+  void set_name(const std::string& name);
-+  bool has_name();
-+  void clear_name();
-+
-+  // <atom:uri>
-+  const std::string& get_uri();
-+  void set_uri(const std::string& uri);
-+  bool has_uri();
-+  void clear_uri();
-+
-+  // <atom:email>
-+  const std::string& get_email();
-+  void set_email(const std::string& email);
-+  bool has_email();
-+  void clear_email();
-+};
-+
-+// <atom:link>
-+%nodefaultctor AtomLink;
-+class AtomLink : public Element {
-+public:
-+   // href=, RFC 4287 4.2.7.1, RFC 3987
-+  const std::string& get_href();
-+  bool has_href();
-+  void set_href(const std::string& value);
-+  void clear_href();
-+
-+  // rel=, RFC 4287 4.2.7.2, RFC 3987
-+  const std::string& get_rel();
-+  bool has_rel();
-+  void set_rel(const std::string& value);
-+  void clear_rel();
-+
-+  // type=, RFC 4287 4.2.7.3, MIME
-+  const std::string& get_type();
-+  bool has_type();
-+  void set_type(const std::string& value);
-+  void clear_type();
-+
-+  // hreflang=, RFC 4287 4.2.7.4, RFC 3066
-+  const std::string& get_hreflang();
-+  bool has_hreflang();
-+  void set_hreflang(const std::string& value);
-+  void clear_hreflang();
-+
-+  // title=, RFC 4287 4.2.7.5
-+  const std::string& get_title();
-+  bool has_title();
-+  void set_title(const std::string& value);
-+  void clear_title();
-+
-+  // length=, RFC 4287 4.2.7.6
-+  const int get_length();
-+  bool has_length();
-+  void set_length(int value);
-+  void clear_length();
-+};
-+
-+// GxTourPrimitive is an abstract base type.  This corresponds to
-+// gx:AbstractGxTourPrimitiveType/Group in KML 2.2 gx.
-+%nodefaultctor GxTourPrimitive;
-+class GxTourPrimitive : public Object {
-+};
-+
-+// <gx:Playlist>
-+%nodefaultctor GxPlaylist;
-+class GxPlaylist : public Object {
-+  // GxTourPrimitive...
-+ public:
-+  void add_gx_tourprimitive(GxTourPrimitivePtr tourprimitive);
-+  const size_t get_gx_tourprimitive_array_size();
-+  const GxTourPrimitivePtr get_gx_tourprimitive_array_at(unsigned int index);
-+};
-+
-+// <gx:Tour>
-+%nodefaultctor GxTour;
-+class GxTour : public Feature {
-+ public:
-+  // <gx:Playlist>
-+  const GxPlaylistPtr get_gx_playlist();
-+  bool has_gx_playlist();
-+  void set_gx_playlist(GxPlaylistPtr gx_playlist);
-+  void clear_gx_playlist();
-+};
-+
-+// <gx:AnimatedUpdate>
-+%nodefaultctor GxAnimatedUpdate;
-+class GxAnimatedUpdate : public GxTourPrimitive {
-+public:
-+  //  <gx:duration>
-+  double get_gx_duration();
-+  bool has_gx_duration();
-+  void set_gx_duration(double gx_duration);
-+  void clear_gx_duration();
-+
-+  // <Update>
-+  const UpdatePtr get_update();
-+  bool has_update();
-+  void set_update(UpdatePtr update);
-+  void clear_update();
-+};
-+
-+// <gx:FlyTo>
-+%nodefaultctor GxFlyTo;
-+class GxFlyTo : public GxTourPrimitive {
-+ public:
-+  //  <gx:duration>
-+  double get_gx_duration();
-+  bool has_gx_duration();
-+  void set_gx_duration(double gx_duration);
-+  void clear_gx_duration();
-+
-+  // <gx:flyToMode>.
-+  int get_gx_flytomode();
-+  bool has_gx_flytomode();
-+  void set_gx_flytomode(int value);
-+  void clear_gx_flytomode();
-+
-+  // AbstractView
-+  const AbstractViewPtr get_abstractview();
-+  bool has_abstractview();
-+  void set_abstractview(AbstractViewPtr abstractview);
-+  void clear_abstractview();
-+};
-+
-+// <gx:Wait>
-+%nodefaultctor GxWait;
-+class GxWait : public GxTourPrimitive {
-+public:
-+  //  <gx:duration>
-+  double get_gx_duration();
-+  bool has_gx_duration();
-+  void set_gx_duration(double gx_duration);
-+  void clear_gx_duration();
-+};
-+
-+// <gx:SoundCue>
-+%nodefaultctor GxSoundCue;
-+class GxSoundCue : public GxTourPrimitive {
-+public:
-+  // <href>
-+  const std::string& get_href();
-+  bool has_href();
-+  void set_href(const std::string& href);
-+  void clear_href();
-+};
-+
-+// <gx:TourControl>
-+%nodefaultctor GxTourControl;
-+class GxTourControl : public GxTourPrimitive {
-+public:
-+  // <gx:playMode>
-+  int get_gx_playmode();
-+  bool has_gx_playmode();
-+  void set_gx_playmode(int value);
-+  void clear_gx_playmode();
-+};
-+
---- a/.travis.yml
-+++ b/.travis.yml
-@@ -6,5 +6,7 @@ compiler:
- before_script:
-     - mkdir build
-     - cd build
-+    - sudo apt-get update -qq
-+    - sudo apt-get install swig python-dev
- 
- script: cmake -DCMAKE_INSTALL_PREFIX=../../install .. && make
---- a/cmake/FindMiniZip.cmake
-+++ b/cmake/FindMiniZip.cmake
-@@ -7,32 +7,26 @@
- 
- 
- if (MINIZIP_INCLUDE_DIR)
--  #check cache 
-+  #check cache
-   set(MINIZIP_FIND_QUIETLY TRUE)
- endif ()
- 
- 
- if (NOT MINIZIP_INCLUDE_DIR)
-     find_path(MINIZIP_INCLUDE_DIR NAMES unzip.h zip.h PATH_SUFFIXES minizip)
--    set(MINIZIP_INCLUDE_DIR ${MINIZIP_INCLUDE_DIR}/minizip CACHE PATH "MiniZip includes")
- endif ()
- 
- find_library(MINIZIP_LIBRARY NAMES minizip)
- 
--if (MINIZIP_INCLUDE_DIR AND MINIZIP_LIBRARY)
--   set(MINIZIP_FOUND TRUE)
--endif ()
--
--if (MINIZIP_FOUND)
--   if (NOT MINIZIP_FIND_QUIETLY)
--      message(STATUS "Found MiniZip: ${MINIZIP_LIBRARY}")
--   endif ()
--else ()
--    if (MINIZIP_FIND_REQUIRED)
--      message(FATAL_ERROR "Could NOT find MiniZip")
--    else ()
--      message(STATUS "Could NOT find MiniZip")
--    endif ()
--endif ()
-+include( FindPackageHandleStandardArgs )
-+find_package_handle_standard_args( MINIZIP DEFAULT_MSG MINIZIP_LIBRARY MINIZIP_INCLUDE_DIR )
- 
-+mark_as_advanced( MINIZIP_INCLUDE_DIR MINIZIP_LIBRARY )
- 
-+if(MINIZIP_FOUND)
-+  set(MINIZIP_INCLUDE_DIRS ${MINIZIP_INCLUDE_DIR})
-+  set(MINIZIP_LIBRARIES    ${MINIZIP_LIBRARY})
-+else()
-+  set(MINIZIP_INCLUDE_DIRS)
-+  set(MINIZIP_LIBRARIES)
-+endif()
---- a/cmake/FindUriParser.cmake
-+++ b/cmake/FindUriParser.cmake
-@@ -6,32 +6,26 @@
- #  URIPARSER_FOUND       - TRUE if UriParser is found
- 
- if (URIPARSER_INCLUDE_DIR)
-- #check cache 
-+ #check cache
-   set(URIPARSER_FIND_QUIETLY TRUE)
- endif ()
- 
- 
- if (NOT URIPARSER_INCLUDE_DIR)
--    find_path(URIPARSER_INCLUDE_DIR NAMES Uri.h UriBase.h PATH_SUFFIXES uriparser)
--    set(URIPARSER_INCLUDE_DIR ${URIPARSER_INCLUDE_DIR}/uriparser CACHE PATH "UriParser includes")
-+    find_path(URIPARSER_INCLUDE_DIR NAMES uriparser/Uri.h uriparser/UriBase.h )
- endif ()
- 
- find_library(URIPARSER_LIBRARY NAMES uriparser)
- 
--if (URIPARSER_INCLUDE_DIR AND URIPARSER_LIBRARY)
--   set(URIPARSER_FOUND TRUE)
--endif ()
--
--if (URIPARSER_FOUND)
--   if (NOT URIPARSER_FIND_QUIETLY)
--      message(STATUS "Found UriParser: ${URIPARSER_LIBRARY}")
--   endif ()
--else ()
--    if (URIPARSER_FIND_REQUIRED)
--      message(FATAL_ERROR "Could not find UriParser library")
--    else ()
--      message(STATUS "Could not find UriParser library")
--    endif ()
--endif ()
-+include( FindPackageHandleStandardArgs )
-+FIND_PACKAGE_HANDLE_STANDARD_ARGS( URIPARSER DEFAULT_MSG URIPARSER_LIBRARY URIPARSER_INCLUDE_DIR )
- 
-+mark_as_advanced( URIPARSER_INCLUDE_DIR URIPARSER_LIBRARY )
- 
-+if(URIPARSER_FOUND)
-+  set(URIPARSER_INCLUDE_DIRS ${URIPARSER_INCLUDE_DIR})
-+  set(URIPARSER_LIBRARIES    ${URIPARSER_LIBRARY})
-+else()
-+  set(URIPARSER_INCLUDE_DIRS)
-+  set(URIPARSER_LIBRARIES)
-+endif()
---- a/cmake/ImportBoost.cmake
-+++ /dev/null
-@@ -1,7 +0,0 @@
--find_package(Boost)
--mark_as_advanced(Boost_DIR)
--if(Boost_FOUND)
--  set(HAVE_SYSTEM_BOOST TRUE)
--else()
--  set(HAVE_SYSTEM_BOOST FALSE)
--endif()
-\ No newline at end of file
---- a/cmake/ImportEXPAT.cmake
-+++ /dev/null
-@@ -1,9 +0,0 @@
--find_package(EXPAT)
--mark_as_advanced(EXPAT_INCLUDE_DIR)
--mark_as_advanced(EXPAT_LIBRARY)
--if(EXPAT_FOUND)
--  set(HAVE_SYSTEM_EXPAT TRUE)
--  set(EXPAT_LIBRARY ${EXPAT_LIBRARIES})
--else()
--  set(HAVE_SYSTEM_EXPAT FALSE)
--endif()
-\ No newline at end of file
---- a/cmake/ImportGoogleTest.cmake
-+++ /dev/null
-@@ -1,8 +0,0 @@
--find_package(GoogleTest REQUIRED)
--mark_as_advanced(GTEST_INCLUDE_DIR)
--mark_as_advanced(GTEST_LIBRARY)
--if(GTEST_FOUND)
--  set(HAVE_SYSTEM_GTEST TRUE)
--else()
--  set(HAVE_SYSTEM_GTEST FALSE)
--endif()
-\ No newline at end of file
---- a/cmake/ImportMinizip.cmake
-+++ /dev/null
-@@ -1,8 +0,0 @@
--find_package(MiniZip)
--mark_as_advanced(MINIZIP_INCLUDE_DIR)
--mark_as_advanced(MINIZIP_LIBRARY)
--if(MINIZIP_FOUND)
--  set(HAVE_SYSTEM_MINIZIP TRUE)
--else()
--  set(HAVE_SYSTEM_MINIZIP FALSE)
--endif()
-\ No newline at end of file
---- a/cmake/ImportUriParser.cmake
-+++ /dev/null
-@@ -1,8 +0,0 @@
--find_package(UriParser)
--mark_as_advanced(URIPARSER_INCLUDE_DIR)
--mark_as_advanced(URIPARSER_LIBRARY)
--if(URIPARSER_FOUND)
--  set(HAVE_SYSTEM_URIPARSER TRUE)
--else()
--  set(HAVE_SYSTEM_URIPARSER FALSE)
--endif()
-\ No newline at end of file
---- a/cmake/ImportZLIB.cmake
-+++ /dev/null
-@@ -1,9 +0,0 @@
--find_package(ZLIB 1.2.8)
--mark_as_advanced(ZLIB_INCLUDE_DIR)
--mark_as_advanced(ZLIB_LIBRARY)
--if(ZLIB_FOUND)
--  set(HAVE_SYSTEM_ZLIB TRUE)
--  set(ZLIB_LIBRARY ${ZLIB_LIBRARIES})
--else()
--  set(HAVE_SYSTEM_ZLIB FALSE)
--endif()
-\ No newline at end of file
---- a/tests/CMakeLists.txt
-+++ b/tests/CMakeLists.txt
-@@ -1,4 +1,4 @@
- add_subdirectory(kml)
--if(BUILD_SWIG)
-+if(WITH_SWIG)
-   add_subdirectory(swig)
- endif()
-\ No newline at end of file
---- /dev/null
-+++ b/tests/swig/CMakeLists.txt
-@@ -0,0 +1,19 @@
-+if(WITH_PYTHON)
-+add_test(NAME test_python_kmlbase
-+  COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/kmlbase_test.py)
-+
-+add_test(NAME test_python_kmldom
-+  COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/kmldom_test.py)
-+
-+add_test(NAME test_python_kmlengine
-+  COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/kmlengine_test.py)
-+endif()
-+
-+if(WITH_JAVA)
-+add_test( NAME test_java_kmlbase
-+  COMMAND
-+  ${Java_JAVA_EXECUTABLE}
-+  -cp "${CMAKE_JAVA_INCLUDE_PATH}${PATH_SEPARATOR}${CMAKE_BINARY_DIR}/src/swig/LibKML.jar;${CMAKE_CURRENT_BINARY_DIR}"
-+  KmlBaseTest )
-+
-+endif()
-\ No newline at end of file
---- /dev/null
-+++ b/tests/swig/KmlBaseTest.java
-@@ -0,0 +1,92 @@
-+// Copyright 2009, Google Inc. All rights reserved.
-+//
-+// Redistribution and use in source and binary forms, with or without
-+// modification, are permitted provided that the following conditions are met:
-+//
-+//  1. Redistributions of source code must retain the above copyright notice,
-+//     this list of conditions and the following disclaimer.
-+//  2. Redistributions in binary form must reproduce the above copyright notice,
-+//     this list of conditions and the following disclaimer in the documentation
-+//     and/or other materials provided with the distribution.
-+//  3. Neither the name of Google Inc. nor the names of its contributors may be
-+//     used to endorse or promote products derived from this software without
-+//     specific prior written permission.
-+//
-+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-+// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-+// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-+// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-+// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+// This is a small subset of the python tests to ensure sanity of the basic
-+// Java bindings.
-+
-+import org.junit.*;
-+import static org.junit.Assert.*;
-+
-+import com.googlecode.libkml.*;
-+
-+public class KmlBaseTest {
-+
-+  static {
-+    try {
-+      System.loadLibrary("kmlbase_swig_java");
-+    } catch (UnsatisfiedLinkError e) {
-+      System.err.println("Failed to load kmlbase. " + e);
-+      System.err.println("Make sure you have your classpath set correctly " +
-+                         "and that LD_LIBRARY_PATH can see " +
-+                         "libkmldom_swig_java and friends");
-+      System.exit(1);
-+    }
-+  }
-+
-+  @Test public void testBasicAttributes() {
-+    Attributes attributes = new Attributes();
-+    assertEquals(0, attributes.GetSize());
-+  }
-+
-+  @Test public void testBasicColor32() {
-+    Color32 color = new Color32();
-+    long expected = 0xffffffffL;
-+    assertEquals(expected, color.get_color_abgr());
-+
-+    long red = 0xff0000ffL;
-+    color = new Color32(red);
-+    assertEquals(red, color.get_color_abgr());
-+
-+    String red_str = "ff0000ff";
-+    color = new Color32(red_str);
-+    assertEquals(red, color.get_color_abgr());
-+  }
-+
-+  @Test public void testBasicDateTime() {
-+    String when = "2008-10-03T09:25:42Z";
-+    DateTime datetime = DateTime.Create(when);
-+    assertEquals(1223025942, datetime.GetTimeT());
-+    assertEquals("09:25:42", datetime.GetXsdTime());
-+    assertEquals("2008-10-03", datetime.GetXsdDate());
-+    assertEquals(when, datetime.GetXsdDateTime());
-+  }
-+
-+  @Test public void testBasicVec3() {
-+    double latitude = 38.12345;
-+    double longitude = -121.123123;
-+    double altitude = 9876.5432;
-+    Vec3 vec3 = new Vec3(longitude, latitude, altitude);
-+    assertEquals(latitude, vec3.get_latitude(), 0.000001);
-+    assertEquals(longitude, vec3.get_longitude(), 0.000001);
-+    assertTrue(vec3.has_altitude());
-+    assertEquals(altitude, vec3.get_altitude(), 0.000001);
-+    vec3 = new Vec3(longitude, latitude);
-+    assertEquals(latitude, vec3.get_latitude(), 0.000001);
-+    assertEquals(longitude, vec3.get_longitude(), 0.000001);
-+    assertFalse(vec3.has_altitude());
-+  }
-+
-+}
-+
---- /dev/null
-+++ b/tests/swig/kmlbase_test.py
-@@ -0,0 +1,161 @@
-+#!/usr/bin/env python
-+
-+# Copyright 2008, Google Inc. All rights reserved.
-+#
-+# Redistribution and use in source and binary forms, with or without 
-+# modification, are permitted provided that the following conditions are met:
-+#
-+#  1. Redistributions of source code must retain the above copyright notice, 
-+#     this list of conditions and the following disclaimer.
-+#  2. Redistributions in binary form must reproduce the above copyright notice,
-+#     this list of conditions and the following disclaimer in the documentation
-+#     and/or other materials provided with the distribution.
-+#  3. Neither the name of Google Inc. nor the names of its contributors may be
-+#     used to endorse or promote products derived from this software without
-+#     specific prior written permission.
-+#
-+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
-+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
-+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
-+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
-+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+"""
-+This file contains unit tests for the KML Base Python SWIG bindings.
-+"""
-+
-+import unittest
-+import kmlbase
-+
-+# These VerySimple tests really only verify that the function/class exists.
-+# Based on kml/base/color32_test.cc.
-+
-+class BasicAttributesTestCase(unittest.TestCase):
-+  def runTest(self):
-+    attributes = kmlbase.Attributes()
-+    assert 0 == attributes.GetSize()
-+    found,value = attributes.FindValue("key")
-+    assert not found
-+    found,key = attributes.FindKey("value")
-+    assert not found
-+
-+class BasicColor32TestCase(unittest.TestCase):
-+  """Verify very simple Color32 usage """
-+  def runTest(self):
-+    # Default construction.
-+    color = kmlbase.Color32()
-+    assert 0xffffffff == color.get_color_abgr()
-+
-+    # Construction from specific color.
-+    red = 0xff0000ff
-+    color = kmlbase.Color32(red)
-+    assert red == color.get_color_abgr()
-+
-+    # Construction from RGBA chars.
-+    A = 0xff
-+    B = 0x00
-+    G = 0x00
-+    R = 0xff
-+    color = kmlbase.Color32(A, B, G, R)
-+    assert red == color.get_color_abgr()
-+
-+    # Construction from string.
-+    red_str = "ff0000ff"
-+    color = kmlbase.Color32(red_str)
-+    assert red == color.get_color_abgr()
-+
-+    # Bad construction.
-+    nonsense = "This isn't even close to a color value"
-+    color = kmlbase.Color32(nonsense)
-+    assert "00000000" == color.to_string_abgr()
-+
-+    # Getters in default state.
-+    color = kmlbase.Color32()
-+    kFF = 0xff
-+
-+    assert kFF == color.get_alpha()
-+    assert kFF == color.get_blue()
-+    assert kFF == color.get_green()
-+    assert kFF == color.get_red()
-+
-+    # Verify getters of newly set state.
-+    kAB = 0xab
-+    color.set_alpha(kAB)
-+    color.set_blue(kAB)
-+    color.set_green(kAB)
-+    color.set_red(kAB)
-+    assert kAB == color.get_alpha()
-+    assert kAB == color.get_blue()
-+    assert kAB == color.get_green()
-+    assert kAB == color.get_red()
-+
-+    # Verify get_color_abgr and get_color_rgba.
-+    kOpaqueGreen = 0xff00ff00
-+    color = kmlbase.Color32(kOpaqueGreen)
-+    assert kOpaqueGreen == color.get_color_abgr()
-+    kOpaqueGreenARGB = 0xff00ff00
-+    assert kOpaqueGreenARGB == color.get_color_argb()
-+
-+    # Verify reconstruction to AABBGGRR string.
-+    kOpaqueRedStr = "ff0000ff"
-+    color = kmlbase.Color32(kOpaqueRedStr);
-+    assert kOpaqueRedStr == color.to_string_abgr()
-+
-+    # Verify to_argb_string.
-+    assert kOpaqueRedStr == color.to_string_abgr()
-+    kOpaqueRedStr_argb = "ffff0000"
-+    assert kOpaqueRedStr_argb == color.to_string_argb()
-+
-+    # Equality operator.
-+    red = kmlbase.Color32(kOpaqueRedStr)
-+    green = kmlbase.Color32(kOpaqueGreen)
-+    assert red == red
-+    assert green != red
-+
-+class BasicDateTimeTestCase(unittest.TestCase):
-+  def runTest(self):
-+    kWhen = "2008-10-03T09:25:42Z"
-+    datetime = kmlbase.DateTime_Create(kWhen)
-+    assert datetime
-+    assert 1223025942 == datetime.GetTimeT()
-+    assert "09:25:42" == datetime.GetXsdTime()
-+    assert "2008-10-03" == datetime.GetXsdDate()
-+    assert kWhen == datetime.GetXsdDateTime()
-+
-+class BasicVec3TestCase(unittest.TestCase):
-+  def runTest(self):
-+    kLatitude = 38.12345
-+    kLongitude = -121.123123
-+    kAltitude = 9876.5432
-+    vec3 = kmlbase.Vec3(kLongitude, kLatitude, kAltitude)
-+    assert vec3
-+    assert kLatitude == vec3.get_latitude()
-+    assert kLongitude == vec3.get_longitude()
-+    assert vec3.has_altitude()
-+    assert kAltitude == vec3.get_altitude()
-+    vec3 = kmlbase.Vec3(kLongitude, kLatitude)
-+    assert vec3
-+    assert kLatitude == vec3.get_latitude()
-+    assert kLongitude == vec3.get_longitude()
-+    assert not vec3.has_altitude()
-+
-+class BasicVersionTestCase(unittest.TestCase):
-+  def runTest(self):
-+    assert "1.3.0" == kmlbase.Version_GetString()
-+
-+def suite():
-+  suite = unittest.TestSuite()
-+  suite.addTest(BasicAttributesTestCase())
-+  suite.addTest(BasicColor32TestCase())
-+  suite.addTest(BasicDateTimeTestCase())
-+  suite.addTest(BasicVec3TestCase())
-+  suite.addTest(BasicVersionTestCase())
-+  return suite
-+
-+runner = unittest.TextTestRunner()
-+runner.run(suite())
---- /dev/null
-+++ b/tests/swig/kmldom_test.py
-@@ -0,0 +1,1655 @@
-+#!/usr/bin/env python
-+
-+# Copyright 2008, Google Inc. All rights reserved.
-+#
-+# Redistribution and use in source and binary forms, with or without 
-+# modification, are permitted provided that the following conditions are met:
-+#
-+#  1. Redistributions of source code must retain the above copyright notice, 
-+#     this list of conditions and the following disclaimer.
-+#  2. Redistributions in binary form must reproduce the above copyright notice,
-+#     this list of conditions and the following disclaimer in the documentation
-+#     and/or other materials provided with the distribution.
-+#  3. Neither the name of Google Inc. nor the names of its contributors may be
-+#     used to endorse or promote products derived from this software without
-+#     specific prior written permission.
-+#
-+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
-+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
-+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
-+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
-+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+"""
-+This file contains unit tests for the KML DOM Python SWIG bindings.
-+"""
-+
-+import unittest
-+import kmlbase
-+import kmldom
-+
-+
-+class VerySimpleParseTestCase(unittest.TestCase):
-+  """ This simply verifies the existence of the binding to ParseKml() """
-+
-+  def runTest(self):
-+    assert kmldom.ParseKml('<kml/>')
-+
-+
-+class VerySimpleSerializeTestCase(unittest.TestCase):
-+  """ This verifies the existence of the binding to SerializeRaw() """
-+
-+  def runTest(self):
-+    kml = '<kml/>'
-+    assert kml == kmldom.SerializeRaw(kmldom.ParseKml(kml))
-+
-+
-+class SimpleFactoryTestCase(unittest.TestCase):
-+  """
-+  This verifies the existence of the binding to KmlFactory::GetFactory
-+  and the exitence of bindings for all factory methods.
-+  """
-+
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    assert factory.CreateElementById(kmldom.Type_Placemark)
-+    assert factory.CreateAlias()
-+    assert factory.CreateAtomAuthor()
-+    assert factory.CreateAtomLink()
-+    assert factory.CreateBalloonStyle()
-+    assert factory.CreateCamera()
-+    assert factory.CreateChange()
-+    assert factory.CreateCreate()
-+    assert factory.CreateData()
-+    assert factory.CreateDelete()
-+    assert factory.CreateDocument()
-+    assert factory.CreateExtendedData()
-+    assert factory.CreateFolder()
-+    assert factory.CreateGroundOverlay()
-+    assert factory.CreateIcon()
-+    assert factory.CreateIconStyle()
-+    assert factory.CreateImagePyramid()
-+    assert factory.CreateItemIcon()
-+    assert factory.CreateLabelStyle()
-+    assert factory.CreateLatLonAltBox()
-+    assert factory.CreateLatLonBox()
-+    assert factory.CreateLineString()
-+    assert factory.CreateLineStyle()
-+    assert factory.CreateLinearRing()
-+    assert factory.CreateLink()
-+    assert factory.CreateListStyle()
-+    assert factory.CreateLocation()
-+    assert factory.CreateLod()
-+    assert factory.CreateLookAt()
-+    assert factory.CreateModel()
-+    assert factory.CreateMultiGeometry()
-+    assert factory.CreateNetworkLink()
-+    assert factory.CreateNetworkLinkControl()
-+    assert factory.CreateOrientation()
-+    assert factory.CreatePair()
-+    assert factory.CreatePhotoOverlay()
-+    assert factory.CreatePlacemark()
-+    assert factory.CreatePoint()
-+    assert factory.CreatePolyStyle()
-+    assert factory.CreatePolygon()
-+    assert factory.CreateRegion()
-+    assert factory.CreateResourceMap()
-+    assert factory.CreateScale()
-+    assert factory.CreateSchema()
-+    assert factory.CreateSchemaData()
-+    assert factory.CreateScreenOverlay()
-+    assert factory.CreateSimpleData()
-+    assert factory.CreateSimpleField()
-+    assert factory.CreateSnippet()
-+    assert factory.CreateStyle()
-+    assert factory.CreateStyleMap()
-+    assert factory.CreateTimeSpan()
-+    assert factory.CreateTimeStamp()
-+    assert factory.CreateUpdate()
-+    assert factory.CreateViewVolume()
-+    assert factory.CreateHotSpot()
-+    assert factory.CreateInnerBoundaryIs()
-+    assert factory.CreateKml()
-+    assert factory.CreateLinkSnippet()
-+    assert factory.CreateOuterBoundaryIs()
-+    assert factory.CreateOverlayXY()
-+    assert factory.CreateRotationXY()
-+    assert factory.CreateScreenXY()
-+    assert factory.CreateSize()
-+    assert factory.CreateGxAnimatedUpdate()
-+    assert factory.CreateGxFlyTo()
-+    assert factory.CreateGxLatLonQuad()
-+    assert factory.CreateGxPlaylist()
-+    assert factory.CreateGxSoundCue()
-+    assert factory.CreateGxTimeSpan()
-+    assert factory.CreateGxTimeStamp()
-+    assert factory.CreateGxTour()
-+    assert factory.CreateGxTourControl()
-+    assert factory.CreateGxWait()
-+
-+class FactoryCreateElementByIdTestCase(unittest.TestCase):
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    assert factory.CreateElementById(kmldom.Type_Alias)
-+    assert factory.CreateElementById(kmldom.Type_AtomAuthor)
-+    assert factory.CreateElementById(kmldom.Type_AtomLink)
-+    assert factory.CreateElementById(kmldom.Type_BalloonStyle)
-+    assert factory.CreateElementById(kmldom.Type_Camera)
-+    assert factory.CreateElementById(kmldom.Type_Change)
-+    assert factory.CreateElementById(kmldom.Type_coordinates)
-+    assert factory.CreateElementById(kmldom.Type_Create)
-+    assert factory.CreateElementById(kmldom.Type_Data)
-+    assert factory.CreateElementById(kmldom.Type_Delete)
-+    assert factory.CreateElementById(kmldom.Type_Document)
-+    assert factory.CreateElementById(kmldom.Type_ExtendedData)
-+    assert factory.CreateElementById(kmldom.Type_Folder)
-+    assert factory.CreateElementById(kmldom.Type_GroundOverlay)
-+    assert factory.CreateElementById(kmldom.Type_Icon)
-+    assert factory.CreateElementById(kmldom.Type_IconStyle)
-+    assert factory.CreateElementById(kmldom.Type_ImagePyramid)
-+    assert factory.CreateElementById(kmldom.Type_ItemIcon)
-+    assert factory.CreateElementById(kmldom.Type_LabelStyle)
-+    assert factory.CreateElementById(kmldom.Type_LatLonAltBox)
-+    assert factory.CreateElementById(kmldom.Type_LatLonBox)
-+    assert factory.CreateElementById(kmldom.Type_LineString)
-+    assert factory.CreateElementById(kmldom.Type_LineStyle)
-+    assert factory.CreateElementById(kmldom.Type_LinearRing)
-+    assert factory.CreateElementById(kmldom.Type_Link)
-+    assert factory.CreateElementById(kmldom.Type_ListStyle)
-+    assert factory.CreateElementById(kmldom.Type_Location)
-+    assert factory.CreateElementById(kmldom.Type_Lod)
-+    assert factory.CreateElementById(kmldom.Type_LookAt)
-+    assert factory.CreateElementById(kmldom.Type_Model)
-+    assert factory.CreateElementById(kmldom.Type_MultiGeometry)
-+    assert factory.CreateElementById(kmldom.Type_NetworkLink)
-+    assert factory.CreateElementById(kmldom.Type_NetworkLinkControl)
-+    assert factory.CreateElementById(kmldom.Type_Orientation)
-+    assert factory.CreateElementById(kmldom.Type_Pair)
-+    assert factory.CreateElementById(kmldom.Type_PhotoOverlay)
-+    assert factory.CreateElementById(kmldom.Type_Placemark)
-+    assert factory.CreateElementById(kmldom.Type_Point)
-+    assert factory.CreateElementById(kmldom.Type_PolyStyle)
-+    assert factory.CreateElementById(kmldom.Type_Polygon)
-+    assert factory.CreateElementById(kmldom.Type_Region)
-+    assert factory.CreateElementById(kmldom.Type_ResourceMap)
-+    assert factory.CreateElementById(kmldom.Type_Scale)
-+    assert factory.CreateElementById(kmldom.Type_Schema)
-+    assert factory.CreateElementById(kmldom.Type_SchemaData)
-+    assert factory.CreateElementById(kmldom.Type_ScreenOverlay)
-+    assert factory.CreateElementById(kmldom.Type_SimpleData)
-+    assert factory.CreateElementById(kmldom.Type_SimpleField)
-+    assert factory.CreateElementById(kmldom.Type_Snippet)
-+    assert factory.CreateElementById(kmldom.Type_Style)
-+    assert factory.CreateElementById(kmldom.Type_StyleMap)
-+    assert factory.CreateElementById(kmldom.Type_TimeSpan)
-+    assert factory.CreateElementById(kmldom.Type_TimeStamp)
-+    assert factory.CreateElementById(kmldom.Type_Update)
-+    assert factory.CreateElementById(kmldom.Type_ViewVolume)
-+    assert factory.CreateElementById(kmldom.Type_hotSpot)
-+    assert factory.CreateElementById(kmldom.Type_innerBoundaryIs)
-+    assert factory.CreateElementById(kmldom.Type_kml)
-+    assert factory.CreateElementById(kmldom.Type_linkSnippet)
-+    assert factory.CreateElementById(kmldom.Type_outerBoundaryIs)
-+    assert factory.CreateElementById(kmldom.Type_overlayXY)
-+    assert factory.CreateElementById(kmldom.Type_rotationXY)
-+    assert factory.CreateElementById(kmldom.Type_screenXY)
-+    assert factory.CreateElementById(kmldom.Type_size)
-+    assert factory.CreateElementById(kmldom.Type_GxAnimatedUpdate)
-+    assert factory.CreateElementById(kmldom.Type_GxFlyTo)
-+    assert factory.CreateElementById(kmldom.Type_GxLatLonQuad)
-+    assert factory.CreateElementById(kmldom.Type_GxPlaylist)
-+    assert factory.CreateElementById(kmldom.Type_GxSoundCue)
-+    assert factory.CreateElementById(kmldom.Type_GxTimeSpan)
-+    assert factory.CreateElementById(kmldom.Type_GxTimeStamp)
-+    assert factory.CreateElementById(kmldom.Type_GxTour)
-+    assert factory.CreateElementById(kmldom.Type_GxTourControl)
-+    assert factory.CreateElementById(kmldom.Type_GxWait)
-+
-+class VerySimpleCastTestCase(unittest.TestCase):
-+  """ This verifies the existence of the bindings to a few of the casts """
-+
-+  def runTest(self):
-+    """ kmldom.ParseKml() returns an ElementPtr """
-+    assert kmldom.AsCoordinates(kmldom.ParseKml('<coordinates/>'))
-+    assert not kmldom.AsCoordinates(kmldom.ParseKml('<Document/>'))
-+    assert kmldom.AsFolder(kmldom.ParseKml('<Folder/>'))
-+    assert not kmldom.AsFolder(kmldom.ParseKml('<Document/>'))
-+    assert kmldom.AsKml(kmldom.ParseKml('<kml/>'))
-+    assert not kmldom.AsKml(kmldom.ParseKml('<Placemark/>'))
-+    assert kmldom.AsPlacemark(kmldom.ParseKml('<Placemark/>'))
-+    assert not kmldom.AsPlacemark(kmldom.ParseKml('<NetworkLink/>'))
-+    assert kmldom.AsPoint(kmldom.ParseKml('<Point/>'))
-+    assert not kmldom.AsPoint(kmldom.ParseKml('<LineString/>'))
-+    assert kmldom.AsGxAnimatedUpdate(kmldom.ParseKml('<gx:AnimatedUpdate/>'))
-+    assert kmldom.AsGxFlyTo(kmldom.ParseKml('<gx:FlyTo/>'))
-+    assert kmldom.AsGxLatLonQuad(kmldom.ParseKml('<gx:LatLonQuad/>'))
-+    assert kmldom.AsGxPlaylist(kmldom.ParseKml('<gx:Playlist/>'))
-+    assert kmldom.AsGxSoundCue(kmldom.ParseKml('<gx:SoundCue/>'))
-+    assert kmldom.AsGxTimeSpan(kmldom.ParseKml('<gx:TimeSpan/>'))
-+    assert kmldom.AsGxTimeStamp(kmldom.ParseKml('<gx:TimeStamp/>'))
-+    assert kmldom.AsGxTour(kmldom.ParseKml('<gx:Tour/>'))
-+    assert kmldom.AsGxTourControl(kmldom.ParseKml('<gx:TourControl/>'))
-+    assert kmldom.AsGxWait(kmldom.ParseKml('<gx:Wait/>'))
-+
-+
-+class VerySimpleSimpleChildTestCase(unittest.TestCase):
-+  """
-+  This tests that an element derived from Feature can properly set/get/clear
-+  the simple value <name> element.
-+  """
-+
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    folder = factory.CreateFolder()
-+    assert not folder.has_name()
-+    name = 'my name'
-+    folder.set_name(name)
-+    assert folder.has_name()
-+    assert name == folder.get_name()
-+    folder.clear_name()
-+    assert not folder.has_name()
-+
-+
-+class VerySimpleComplexChildTestCase(unittest.TestCase):
-+  """
-+  This tests that a complex child of a specific type can be set and
-+  cleared as a child of another element.
-+  """
-+
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    region = factory.CreateRegion()
-+    assert not region.has_lod()
-+    assert not region.has_latlonaltbox()
-+    region.set_lod(factory.CreateLod())
-+    region.set_latlonaltbox(factory.CreateLatLonAltBox())
-+    assert region.has_lod()
-+    assert region.has_latlonaltbox()
-+    region.clear_lod()
-+    region.clear_latlonaltbox()
-+    assert not region.has_lod()
-+    assert not region.has_latlonaltbox()
-+
-+
-+class SimpleAtomAuthorTestCase(unittest.TestCase):
-+  """ This tests the AtomAuthor element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.atomauthor = self.factory.CreateAtomAuthor()
-+
-+  def testDefault(self):
-+    assert kmldom.Type_AtomAuthor == self.atomauthor.Type()
-+    assert self.atomauthor.IsA(kmldom.Type_AtomAuthor)
-+    # default state
-+    assert not self.atomauthor.has_name()
-+    assert "" == self.atomauthor.get_name()
-+    assert not self.atomauthor.has_uri()
-+    assert "" == self.atomauthor.get_uri()
-+    assert not self.atomauthor.has_email()
-+    assert "" == self.atomauthor.get_email()
-+
-+  def testSetClear(self):
-+    # name
-+    name = 'Scott Turow'
-+    self.atomauthor.set_name(name)
-+    assert self.atomauthor.has_name()
-+    assert name == self.atomauthor.get_name()
-+    self.atomauthor.clear_name()
-+
-+    # uri
-+    uri = 'http://www.authorsguild.org/'
-+    self.atomauthor.set_uri(uri)
-+    assert self.atomauthor.has_uri()
-+    assert uri == self.atomauthor.get_uri()
-+    self.atomauthor.clear_uri()
-+
-+    # email
-+    email = 'jsmith at example.com'
-+    self.atomauthor.set_email(email)
-+    assert self.atomauthor.has_email()
-+    assert email == self.atomauthor.get_email()
-+    self.atomauthor.clear_email()
-+
-+    self.testDefault()
-+
-+
-+class SimpleAtomLinkTestCase(unittest.TestCase):
-+  """ This tests the AtomLink element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.atomlink = self.factory.CreateAtomLink()
-+
-+  def testDefault(self):
-+    assert kmldom.Type_AtomLink == self.atomlink.Type()
-+    assert self.atomlink.IsA(kmldom.Type_AtomLink)
-+    assert not self.atomlink.has_href()
-+    assert "" == self.atomlink.get_href()
-+    assert not self.atomlink.has_rel()
-+    assert "" == self.atomlink.get_rel()
-+    assert not self.atomlink.has_type()
-+    assert "" == self.atomlink.get_type()
-+    assert not self.atomlink.has_hreflang()
-+    assert "" == self.atomlink.get_hreflang()
-+    assert not self.atomlink.has_title()
-+    assert "" == self.atomlink.get_title()
-+    assert not self.atomlink.has_length()
-+    assert 0 == self.atomlink.get_length()
-+
-+  def testSetClear(self):
-+    # href
-+    href = 'http://example.com'
-+    self.atomlink.set_href(href)
-+    assert self.atomlink.has_href()
-+    assert href == self.atomlink.get_href()
-+    self.atomlink.clear_href()
-+
-+    rel = 'alternate'
-+    self.atomlink.set_rel(rel)
-+    assert self.atomlink.has_rel()
-+    assert rel == self.atomlink.get_rel()
-+    self.atomlink.clear_rel()
-+
-+    type = 'text/html'
-+    self.atomlink.set_type(type)
-+    assert self.atomlink.has_type()
-+    assert type == self.atomlink.get_type()
-+    self.atomlink.clear_type()
-+
-+    hreflang = 'en'
-+    self.atomlink.set_hreflang(hreflang)
-+    assert self.atomlink.has_hreflang()
-+    assert hreflang == self.atomlink.get_hreflang()
-+    self.atomlink.clear_hreflang()
-+
-+    title = 'dive into mark'
-+    self.atomlink.set_title(title)
-+    assert self.atomlink.has_title()
-+    assert title == self.atomlink.get_title()
-+    self.atomlink.clear_title()
-+
-+    length = 42
-+    self.atomlink.set_length(length)
-+    assert self.atomlink.has_length()
-+    assert length == self.atomlink.get_length()
-+    self.atomlink.clear_length()
-+
-+    self.testDefault()
-+
-+  def testParse(self):
-+    # Straight out of RFC 4287
-+    link_xml = '<link rel=\"alternate\" type=\"text/html\" '
-+    link_xml += 'hreflang=\"en\" href=\"http://example.org/\"/>'
-+    self.atomlink = kmldom.ParseKml(link_xml)
-+    assert self.atomlink.has_rel()
-+    assert self.atomlink.has_type()
-+    assert self.atomlink.has_hreflang()
-+    assert self.atomlink.has_href()
-+    assert not self.atomlink.has_title()
-+    assert not self.atomlink.has_length()
-+
-+    assert self.atomlink.clear_rel()
-+    assert self.atomlink.clear_type()
-+    assert self.atomlink.clear_hreflang()
-+    assert self.atomlink.clear_href()
-+
-+    self.testDefault()
-+
-+class SimpleCoordinatesTestCase(unittest.TestCase):
-+  """ This tests the methods on Coordinates and Vec3 """
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    coordinates = factory.CreateCoordinates()
-+    # Test the Element methods
-+    assert kmldom.Type_coordinates == coordinates.Type()
-+    assert coordinates.IsA(kmldom.Type_coordinates)
-+    # Test the Coordinates methods
-+    lon = -123.456
-+    lat = 38.765
-+    alt = 1001.909
-+    assert 0 == coordinates.get_coordinates_array_size()
-+    coordinates.add_latlng(lat, lon)
-+    assert 1 == coordinates.get_coordinates_array_size()
-+    coordinates.add_latlngalt(lat, lon, alt)
-+    assert 2 == coordinates.get_coordinates_array_size()
-+    vec0 = coordinates.get_coordinates_array_at(0)
-+    vec1 = coordinates.get_coordinates_array_at(1)
-+    # Test the Vec3 methods
-+    assert lon == vec0.get_longitude()
-+    assert lat == vec0.get_latitude()
-+    assert 0 == vec0.get_altitude()
-+    assert lon == vec1.get_longitude()
-+    assert lat == vec1.get_latitude()
-+    assert alt == vec1.get_altitude()
-+
-+
-+class SimpleVec2TestCase(unittest.TestCase):
-+  """ This tests the methods on Vec2 (using HotSpot) """
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    hotspot = factory.CreateHotSpot()
-+    # Test the Element methods
-+    assert kmldom.Type_hotSpot == hotspot.Type()
-+    assert hotspot.IsA(kmldom.Type_hotSpot)
-+    # Test the Vec2 methods
-+    assert not hotspot.has_x()
-+    assert not hotspot.has_xunits()
-+    assert not hotspot.has_y()
-+    assert not hotspot.has_yunits()
-+    x = 128
-+    xunits = kmldom.UNITS_PIXELS
-+    y = .7
-+    yunits = kmldom.UNITS_FRACTION
-+    # Test the setters
-+    hotspot.set_x(x)
-+    hotspot.set_xunits(xunits)
-+    hotspot.set_y(y)
-+    hotspot.set_yunits(yunits)
-+    # Test the has'ers
-+    assert hotspot.has_x()
-+    assert hotspot.has_xunits()
-+    assert hotspot.has_y()
-+    assert hotspot.has_yunits()
-+    # Test the getters
-+    assert x == hotspot.get_x()
-+    assert xunits == hotspot.get_xunits()
-+    assert y == hotspot.get_y()
-+    assert yunits == hotspot.get_yunits()
-+    # Test the clear'ers
-+    hotspot.clear_x()
-+    hotspot.clear_xunits()
-+    hotspot.clear_y()
-+    hotspot.clear_yunits()
-+    assert not hotspot.has_x()
-+    assert not hotspot.has_xunits()
-+    assert not hotspot.has_y()
-+    assert not hotspot.has_yunits()
-+
-+
-+class SimpleObjectTestCase(unittest.TestCase):
-+  """ This tests the Object methods (using Placemark) """
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    placemark = factory.CreatePlacemark()
-+    # Element methods
-+    assert kmldom.Type_Placemark == placemark.Type()
-+    assert placemark.IsA(kmldom.Type_Object)
-+    assert placemark.IsA(kmldom.Type_Placemark)
-+    # Object methods
-+    # has_xxx()...
-+    assert not placemark.has_id()
-+    assert not placemark.has_targetid()
-+    id = 'placemark123'
-+    targetid ='placemark456'
-+    # set_xxx()...
-+    placemark.set_id(id)
-+    placemark.set_targetid(targetid)
-+    assert placemark.has_id()
-+    assert placemark.has_targetid()
-+    # xxx()...
-+    assert id == placemark.get_id()
-+    assert targetid == placemark.get_targetid()
-+    # clear_xxx()...
-+    placemark.clear_id()
-+    placemark.clear_targetid()
-+    assert not placemark.has_id()
-+    assert not placemark.has_targetid()
-+
-+
-+class SimpleFeatureTestCase(unittest.TestCase):
-+  """ This tests the Feature methods (using Folder) """
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    folder = factory.CreateFolder()
-+
-+    # Element methods
-+    assert kmldom.Type_Folder == folder.Type()
-+    assert folder.IsA(kmldom.Type_Object)
-+    assert folder.IsA(kmldom.Type_Feature)
-+    assert folder.IsA(kmldom.Type_Folder)
-+
-+    # TODO: Object methods
-+
-+    # Feature methods
-+    # TODO everything else
-+
-+    assert not folder.has_phonenumber()
-+    phonenumber = '867-5309'
-+    folder.set_phonenumber(phonenumber)
-+    assert folder.has_phonenumber()
-+    assert phonenumber == folder.get_phonenumber()
-+
-+    assert not folder.has_atomauthor()
-+    atomauthor = factory.CreateAtomAuthor()
-+    assert atomauthor
-+    atom_name = 'D.F. Wallace'
-+    atomauthor.set_name(atom_name)
-+    folder.set_atomauthor(atomauthor)
-+    got_atomauthor = folder.get_atomauthor()
-+    assert atom_name == got_atomauthor.get_name()
-+
-+    assert not folder.has_atomlink()
-+    atomlink = factory.CreateAtomLink()
-+    assert atomlink
-+    atom_href = 'http://infinitesummer.org'
-+    atomlink.set_href(atom_href)
-+    folder.set_atomlink(atomlink)
-+    got_atomlink = folder.get_atomlink()
-+    assert atom_href == got_atomlink.get_href()
-+
-+    assert not folder.has_snippet()
-+    folder.set_snippet(factory.CreateSnippet())
-+    assert folder.has_snippet()
-+    snippet = folder.get_snippet()
-+    # Test that the snippet() returns a SnippetPtr
-+    assert not snippet.has_maxlines()
-+    folder.clear_snippet()
-+    assert not folder.has_snippet()
-+
-+  def testParseAtom(self):
-+    kml = ('<Placemark>'
-+           '<atom:author>'
-+           '<atom:name>D.F. Wallace</atom:name>'
-+           '</atom:author>'
-+           '<atom:link href="http://infinitesummer.org"></atom:link>'
-+           '</Placemark>')
-+    root = kmldom.ParseKml(kml)
-+    assert root
-+    placemark = kmldom.AsPlacemark(root)
-+    assert placemark
-+    assert placemark.has_atomauthor()
-+    author = kmldom.AsAtomAuthor(placemark.get_atomauthor())
-+    assert author
-+    assert author.has_name();
-+    assert "D.F. Wallace" == author.get_name()
-+    assert placemark.has_atomlink()
-+    link = kmldom.AsAtomLink(placemark.get_atomlink())
-+    assert link
-+    assert link.has_href()
-+    assert "http://infinitesummer.org" == link.get_href()
-+
-+
-+class SimpleRegionTestCase(unittest.TestCase):
-+  """ This tests the methods on Region """
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    region = factory.CreateRegion()
-+
-+    # Element methods
-+    assert kmldom.Type_Region == region.Type()
-+    assert region.IsA(kmldom.Type_Object)
-+    assert region.IsA(kmldom.Type_Region)
-+
-+    # Object methods
-+    # has_xxx()...
-+    assert not region.has_id()
-+    assert not region.has_targetid()
-+    id = 'region123'
-+    targetid ='region456'
-+    # set_xxx()...
-+    region.set_id(id)
-+    region.set_targetid(targetid)
-+    assert region.has_id()
-+    assert region.has_targetid()
-+    # xxx()...
-+    assert id == region.get_id()
-+    assert targetid == region.get_targetid()
-+    # clear_xxx()...
-+    region.clear_id()
-+    region.clear_targetid()
-+    assert not region.has_id()
-+    assert not region.has_targetid()
-+
-+    # Region methods
-+    assert not region.has_lod()
-+    assert not region.has_latlonaltbox()
-+    region.set_lod(factory.CreateLod())
-+    region.set_latlonaltbox(factory.CreateLatLonAltBox())
-+    assert region.has_lod()
-+    assert region.has_latlonaltbox()
-+    region.clear_lod()
-+    region.clear_latlonaltbox()
-+    assert not region.has_lod()
-+    assert not region.has_latlonaltbox()
-+
-+
-+class SimpleParseTestCase(unittest.TestCase):
-+  """ This tests the Parse() function."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.root = kmldom.ParseKml('<kml>'
-+                                '<Placemark id=\"pm123\">'
-+                                '<name>hi</name>'
-+                                '</Placemark>'
-+                                '</kml>')
-+
-+  def tearDown(self):
-+    """ KML DOM memory is managed with smart pointers no tear down is needed """
-+
-+  def testBasic(self):
-+    assert self.root
-+    kml = kmldom.AsKml(self.root)
-+    assert kml
-+    assert not kml.has_hint()
-+    assert not kml.has_networklinkcontrol()
-+    assert kml.has_feature()
-+    placemark = kmldom.AsPlacemark(kml.get_feature())
-+    assert placemark
-+    assert placemark.has_id()
-+    assert 'pm123' == placemark.get_id()
-+    assert placemark.has_name()
-+    assert 'hi' == placemark.get_name()
-+    assert not placemark.has_geometry()
-+
-+
-+class SimpleSerializePrettyTestCase(unittest.TestCase):
-+  """ This tests the SerializePretty() function."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.kml = self.factory.CreateKml()
-+    self.folder = self.factory.CreateFolder()
-+    self.folder.set_name('folder')
-+    self.placemark = self.factory.CreatePlacemark()
-+    self.placemark.set_name('placemark')
-+    self.folder.add_feature(self.placemark)
-+    self.kml.set_feature(self.folder)
-+    self.xml = kmldom.SerializePretty(self.kml)
-+
-+  def testBasic(self):
-+    assert self.xml
-+    assert '<kml>\n'\
-+           '  <Folder>\n'\
-+           '    <name>folder</name>\n'\
-+           '    <Placemark>\n'\
-+           '      <name>placemark</name>\n'\
-+           '    </Placemark>\n'\
-+           '  </Folder>\n'\
-+           '</kml>\n' == self.xml
-+
-+
-+class SimpleSerializeRawTestCase(unittest.TestCase):
-+  """ This tests the SerializeRaw() function."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.kml = self.factory.CreateKml()
-+    self.folder = self.factory.CreateFolder()
-+    self.folder.set_name('folder')
-+    self.placemark = self.factory.CreatePlacemark()
-+    self.placemark.set_name('placemark')
-+    self.folder.add_feature(self.placemark)
-+    self.kml.set_feature(self.folder)
-+    self.xml = kmldom.SerializeRaw(self.kml)
-+
-+  def testBasic(self):
-+    assert self.xml
-+    assert '<kml>'\
-+           '<Folder>'\
-+           '<name>folder</name>'\
-+           '<Placemark>'\
-+           '<name>placemark</name>'\
-+           '</Placemark>'\
-+           '</Folder>'\
-+           '</kml>' == self.xml
-+
-+
-+class SimpleExtendedDataTestCase(unittest.TestCase):
-+  """ This tests the ExtendedData element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.extendeddata = self.factory.CreateExtendedData()
-+
-+  def testDefault(self):
-+    assert kmldom.AsExtendedData(self.extendeddata)
-+    assert 0 == self.extendeddata.get_data_array_size()
-+    assert 0 == self.extendeddata.get_schemadata_array_size()
-+
-+class DataTestCase(unittest.TestCase):
-+  """ This tests the Data element """
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.data = self.factory.CreateData()
-+
-+  def testDefault(self):
-+    assert kmldom.AsData(self.data)
-+    assert not self.data.has_name()
-+    assert "" == self.data.get_name()
-+    assert not self.data.has_displayname()
-+    assert "" == self.data.get_displayname()
-+    assert not self.data.has_value()
-+    assert "" == self.data.get_value()
-+
-+class SimpleDataTestCase(unittest.TestCase):
-+  """ This tests the SimpleData element """
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.simpledata = self.factory.CreateSimpleData()
-+
-+  def testDefault(self):
-+    assert kmldom.AsSimpleData(self.simpledata)
-+    assert not self.simpledata.has_name()
-+    assert "" == self.simpledata.get_name()
-+    assert not self.simpledata.has_text()
-+    assert "" == self.simpledata.get_text()
-+
-+def TestColorStyle(colorstyle):
-+  """ This tests the ColorStyle elements of the given ColorStyle-derived
-+  element"""
-+  # ColorStyle fields
-+  # Verify default state of <color>
-+  assert not colorstyle.has_color()
-+  # Set <color> to a given value and verify get_ and has_
-+  color = kmlbase.Color32(0xf0f0c80f)
-+  colorstyle.set_color(color)
-+  assert colorstyle.has_color()
-+  assert color == colorstyle.get_color()
-+  # Clear <color> and verify has_
-+  colorstyle.clear_color()
-+  assert not colorstyle.has_color()
-+
-+  assert not colorstyle.has_colormode()
-+  colormode = kmldom.COLORMODE_RANDOM
-+  colorstyle.set_colormode(colormode)
-+  assert colorstyle.has_colormode()
-+  assert colormode == colorstyle.get_colormode()
-+  colorstyle.clear_colormode()
-+  assert not colorstyle.has_colormode()
-+
-+class SimpleIconStyleTestCase(unittest.TestCase):
-+  """ This tests the IconStyle element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.iconstyle = self.factory.CreateIconStyle()
-+
-+  def testDefault(self):
-+    assert kmldom.AsObject(self.iconstyle)
-+    assert kmldom.AsSubStyle(self.iconstyle)
-+    assert kmldom.AsColorStyle(self.iconstyle)
-+
-+    TestColorStyle(self.iconstyle)
-+
-+class SimpleKmlTestCase(unittest.TestCase):
-+  """ This tests the Kml element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.kml = self.factory.CreateKml()
-+
-+  def testDefault(self):
-+    assert kmldom.Type_kml == self.kml.Type()
-+    assert self.kml.IsA(kmldom.Type_kml)
-+    assert not self.kml.has_hint()
-+    assert "" == self.kml.get_hint()
-+    assert not self.kml.has_networklinkcontrol()
-+    assert None == self.kml.get_networklinkcontrol()
-+    assert not self.kml.has_feature()
-+    assert None == self.kml.get_feature()
-+
-+  def testSetClear(self):
-+    hint = 'target=sky'
-+    self.kml.set_hint(hint)
-+    assert self.kml.has_hint()
-+    assert hint == self.kml.get_hint()
-+    self.kml.clear_hint()
-+    self.testDefault()
-+
-+class SimpleLabelStyleTestCase(unittest.TestCase):
-+  """ This tests the LabelStyle element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.labelstyle = self.factory.CreateLabelStyle()
-+
-+  def testDefault(self):
-+    assert kmldom.AsObject(self.labelstyle)
-+    assert kmldom.AsSubStyle(self.labelstyle)
-+    assert kmldom.AsColorStyle(self.labelstyle)
-+
-+    TestColorStyle(self.labelstyle)
-+
-+class SimpleLineStyleTestCase(unittest.TestCase):
-+  """ This tests the LineStyle element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.linestyle = self.factory.CreateLineStyle()
-+
-+  def testDefault(self):
-+    assert kmldom.AsObject(self.linestyle)
-+    assert kmldom.AsSubStyle(self.linestyle)
-+    assert kmldom.AsColorStyle(self.linestyle)
-+
-+    TestColorStyle(self.linestyle)
-+
-+    # LineStyle fields
-+    # Verify default state of <width>
-+    assert not self.linestyle.has_width()
-+    # Set <width> and verify get_ and has_
-+    width = 4
-+    self.linestyle.set_width(width)
-+    assert self.linestyle.has_width()
-+    assert width == self.linestyle.get_width()
-+    # Clear <width> and verify has_
-+    self.linestyle.clear_width()
-+    assert not self.linestyle.has_width()
-+
-+class SimpleListStyleTestCase(unittest.TestCase):
-+  """ This tests the ListStyle element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.liststyle = self.factory.CreateListStyle()
-+
-+  def testDefault(self):
-+    assert kmldom.AsObject(self.liststyle)
-+    assert kmldom.AsSubStyle(self.liststyle)
-+    assert kmldom.AsListStyle(self.liststyle)
-+    assert not self.liststyle.has_id()
-+    assert 0 == self.liststyle.get_itemicon_array_size()
-+
-+class SimpleNetworkLinkControlTestCase(unittest.TestCase):
-+  """ This tests the NetworkLinkControl element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.nlc = self.factory.CreateNetworkLinkControl()
-+
-+  def testDefault(self):
-+    assert kmldom.Type_NetworkLinkControl == self.nlc.Type()
-+    assert self.nlc.IsA(kmldom.Type_NetworkLinkControl)
-+    assert not self.nlc.has_minrefreshperiod()
-+    assert not self.nlc.has_maxsessionlength()
-+    assert not self.nlc.has_cookie()
-+    assert not self.nlc.has_message()
-+    assert not self.nlc.has_linkname()
-+    assert not self.nlc.has_linkdescription()
-+    assert not self.nlc.has_linksnippet()
-+    assert not self.nlc.has_expires()
-+    assert not self.nlc.has_update()
-+    assert not self.nlc.has_abstractview()
-+
-+  def testSetClear(self):
-+    minrefreshperiod = 42.123
-+    self.nlc.set_minrefreshperiod(minrefreshperiod)
-+    assert self.nlc.has_minrefreshperiod()
-+    assert minrefreshperiod == self.nlc.get_minrefreshperiod()
-+    self.nlc.clear_minrefreshperiod()
-+    assert not self.nlc.has_minrefreshperiod()
-+
-+class SimplePhotoOverlayTestCase(unittest.TestCase):
-+  """ This tests the PhotoOverlay element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.photooverlay = self.factory.CreatePhotoOverlay()
-+
-+  def testDefault(self):
-+    assert kmldom.AsObject(self.photooverlay)
-+    assert kmldom.AsFeature(self.photooverlay)
-+    assert kmldom.AsOverlay(self.photooverlay)
-+    assert kmldom.AsPhotoOverlay(self.photooverlay)
-+    assert not self.photooverlay.has_id()  # Object-ness
-+    assert not self.photooverlay.has_name()  # Feature-ness
-+    assert not self.photooverlay.has_icon()  # Overlay-ness
-+    assert not self.photooverlay.has_rotation()  # PhotoOverlay-ness...
-+    assert not self.photooverlay.has_viewvolume()
-+    assert not self.photooverlay.has_imagepyramid()
-+    assert not self.photooverlay.has_point()
-+    assert not self.photooverlay.has_shape()
-+
-+
-+class SimplePlacemarkTestCase(unittest.TestCase):
-+  """ This tests the Placemark element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.placemark = self.factory.CreatePlacemark()
-+
-+  def testDefault(self):
-+    assert kmldom.AsObject(self.placemark)
-+    assert kmldom.AsFeature(self.placemark)
-+    assert kmldom.AsPlacemark(self.placemark)
-+    assert not self.placemark.has_id()  # Object-ness
-+    assert not self.placemark.has_name()  # Feature-ness
-+    assert not self.placemark.has_geometry()  # Placemark-ness
-+
-+  def testName(self):
-+    name = 'This is my name'
-+    self.placemark.set_name(name)
-+    assert self.placemark.has_name()
-+    assert name == self.placemark.get_name()
-+    self.placemark.clear_name()
-+    assert not self.placemark.has_name()
-+
-+
-+class SimpleLatLonBoxTestCase(unittest.TestCase):
-+  """ This tests the LatLonBox element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.latlonbox = self.factory.CreateLatLonBox()
-+
-+  def testDefault(self):
-+    assert kmldom.AsObject(self.latlonbox)
-+    assert kmldom.AsLatLonBox(self.latlonbox)
-+    assert not self.latlonbox.has_id()  # Object-ness
-+    assert not self.latlonbox.has_north()
-+    assert 180.0 == self.latlonbox.get_north()
-+    assert not self.latlonbox.has_south()
-+    assert -180.0 == self.latlonbox.get_south()
-+    assert not self.latlonbox.has_east()
-+    assert 180.0 == self.latlonbox.get_east()
-+    assert not self.latlonbox.has_west()
-+    assert -180.0 == self.latlonbox.get_west()
-+
-+  def testSetClear(self):
-+    north = 42.42
-+    south = -11.12
-+    east = -80.80
-+    west = -123.321
-+    self.latlonbox.set_north(north)
-+    self.latlonbox.set_south(south)
-+    self.latlonbox.set_east(east)
-+    self.latlonbox.set_west(west)
-+    assert self.latlonbox.has_north()
-+    assert north == self.latlonbox.get_north()
-+    assert self.latlonbox.has_south()
-+    assert south == self.latlonbox.get_south()
-+    assert self.latlonbox.has_east()
-+    assert east == self.latlonbox.get_east()
-+    assert self.latlonbox.has_west()
-+    assert west == self.latlonbox.get_west()
-+    self.latlonbox.clear_north()
-+    self.latlonbox.clear_south()
-+    self.latlonbox.clear_east()
-+    self.latlonbox.clear_west()
-+    # Clearing everything returns to default state
-+    self.testDefault()
-+
-+
-+class SimpleLinkTestCase(unittest.TestCase):
-+  """ This tests the Link element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.link = self.factory.CreateLink()
-+
-+  def testDefault(self):
-+    assert kmldom.AsObject(self.link)
-+    assert kmldom.AsLink(self.link)
-+    assert not self.link.has_id()  # Object-ness
-+    assert not self.link.has_href()  # Link-ness
-+
-+  def testSetClear(self):
-+    href = 'http://example.com/cool.kml'
-+    self.link.set_href(href)
-+    assert self.link.has_href()
-+    assert href == self.link.get_href()
-+    self.link.clear_href()
-+    # Clearing everything returns to default state
-+    self.testDefault()
-+
-+
-+class SimpleChangeTestCase(unittest.TestCase):
-+  """ This tests the Change element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.change = self.factory.CreateChange()
-+
-+  def testDefault(self):
-+    assert kmldom.AsChange(self.change)
-+    assert 0 == self.change.get_object_array_size()
-+
-+  def testAddOneObject(self):
-+    placemark = self.factory.CreatePlacemark()
-+    name = 'hi'
-+    placemark.set_name(name)
-+    self.change.add_object(placemark)
-+    assert 1 == self.change.get_object_array_size()
-+    placemark = kmldom.AsPlacemark(self.change.get_object_array_at(0))
-+    assert name == placemark.get_name()
-+
-+  def testAddNObjects(self):
-+    placemark = self.factory.CreatePlacemark()
-+    placemark_id = 'pm123'
-+    placemark.set_id(placemark_id)
-+    self.change.add_object(placemark)
-+
-+    latlonbox = self.factory.CreateLatLonBox()
-+    latlonbox_id = 'llb123'
-+    latlonbox.set_id(latlonbox_id)
-+    self.change.add_object(latlonbox)
-+
-+    location = self.factory.CreateLocation()
-+    location_id = 'location123'
-+    location.set_id(location_id)
-+    self.change.add_object(location)
-+
-+    """ Verify there are 3 items in the array in the proper order."""
-+    assert 3 == self.change.get_object_array_size()
-+    assert placemark_id == self.change.get_object_array_at(0).get_id()
-+    assert latlonbox_id == self.change.get_object_array_at(1).get_id()
-+    assert location_id == self.change.get_object_array_at(2).get_id()
-+
-+
-+class SimpleCreateTestCase(unittest.TestCase):
-+  """ This tests the Create element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.create = self.factory.CreateCreate()
-+
-+  def testDefault(self):
-+    assert kmldom.AsCreate(self.create)
-+    assert 0 == self.create.get_container_array_size()
-+
-+  def testAddOneContainer(self):
-+    folder = self.factory.CreateFolder()
-+    target_folder_id = 'target-folder'
-+    folder.set_targetid(target_folder_id)
-+    self.create.add_container(folder)
-+    assert 1 == self.create.get_container_array_size()
-+    folder = kmldom.AsFolder(self.create.get_container_array_at(0))
-+    assert target_folder_id == folder.get_targetid()
-+
-+  def testAddNContainers(self):
-+    folder = self.factory.CreateFolder()
-+    folder_a_id = 'folder-a'
-+    folder.set_id(folder_a_id)
-+    self.create.add_container(folder)
-+
-+    document = self.factory.CreateFolder()
-+    document_a_id = 'container-a'
-+    document.set_id(document_a_id)
-+    self.create.add_container(document)
-+
-+    document = self.factory.CreateFolder()
-+    document_b_id = 'container-b'
-+    document.set_id(document_b_id)
-+    self.create.add_container(document)
-+
-+    folder = self.factory.CreateFolder()
-+    folder_b_id = 'folder-b'
-+    folder.set_id(folder_b_id)
-+    self.create.add_container(folder)
-+
-+    # Verify there are 4 items in the array in the proper order.
-+    assert 4 == self.create.get_container_array_size()
-+    assert folder_a_id == self.create.get_container_array_at(0).get_id()
-+    assert document_a_id == self.create.get_container_array_at(1).get_id()
-+    assert document_b_id == self.create.get_container_array_at(2).get_id()
-+    assert folder_b_id == self.create.get_container_array_at(3).get_id()
-+
-+
-+class SimpleDeleteTestCase(unittest.TestCase):
-+  """ This tests the Delete element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.delete = self.factory.CreateDelete()
-+
-+  def testDefault(self):
-+    assert kmldom.AsDelete(self.delete)
-+    assert 0 == self.delete.get_feature_array_size()
-+
-+  def testAddOneFeature(self):
-+    groundoverlay = self.factory.CreateGroundOverlay()
-+    target_groundoverlay_id = 'target-groundoverlay'
-+    groundoverlay.set_targetid(target_groundoverlay_id)
-+    self.delete.add_feature(groundoverlay)
-+    assert 1 == self.delete.get_feature_array_size()
-+    groundoverlay = kmldom.AsGroundOverlay(self.delete.get_feature_array_at(0))
-+    assert target_groundoverlay_id == groundoverlay.get_targetid()
-+
-+  def testAddNFeatures(self):
-+    document = self.factory.CreateDocument()
-+    document_id = 'document-id'
-+    document.set_id(document_id)
-+    self.delete.add_feature(document)
-+
-+    folder = self.factory.CreateFolder()
-+    folder_id = 'folder-id'
-+    folder.set_id(folder_id)
-+    self.delete.add_feature(folder)
-+
-+    groundoverlay = self.factory.CreateGroundOverlay()
-+    groundoverlay_id = 'groundoverlay-id'
-+    groundoverlay.set_id(groundoverlay_id)
-+    self.delete.add_feature(groundoverlay)
-+
-+    networklink = self.factory.CreateNetworkLink()
-+    networklink_id = 'networklink-id'
-+    networklink.set_id(networklink_id)
-+    self.delete.add_feature(networklink)
-+
-+    placemark = self.factory.CreatePlacemark()
-+    placemark_id = 'placemark-id'
-+    placemark.set_id(placemark_id)
-+    self.delete.add_feature(placemark)
-+
-+    photooverlay = self.factory.CreatePhotoOverlay()
-+    photooverlay_id = 'photooverlay-id'
-+    photooverlay.set_id(photooverlay_id)
-+    self.delete.add_feature(photooverlay)
-+
-+    screenoverlay = self.factory.CreateScreenOverlay()
-+    screenoverlay_id = 'screenoverlay-id'
-+    screenoverlay.set_id(screenoverlay_id)
-+    self.delete.add_feature(screenoverlay)
-+
-+    # Verify there are 7 items in the array in the proper order.
-+    assert 7 == self.delete.get_feature_array_size()
-+    assert document_id == self.delete.get_feature_array_at(0).get_id()
-+    assert folder_id == self.delete.get_feature_array_at(1).get_id()
-+    assert groundoverlay_id == self.delete.get_feature_array_at(2).get_id()
-+    assert networklink_id == self.delete.get_feature_array_at(3).get_id()
-+    assert placemark_id == self.delete.get_feature_array_at(4).get_id()
-+    assert photooverlay_id == self.delete.get_feature_array_at(5).get_id()
-+    assert screenoverlay_id == self.delete.get_feature_array_at(6).get_id()
-+
-+
-+class SimpleDocumentTestCase(unittest.TestCase):
-+  """ This tests the Document element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.document = self.factory.CreateDocument()
-+
-+  def testDefault(self):
-+    assert kmldom.AsObject(self.document)
-+    assert kmldom.AsFeature(self.document)
-+    assert kmldom.AsContainer(self.document)
-+    assert kmldom.AsDocument(self.document)
-+    assert not self.document.has_id()  # Object-ness
-+    assert not self.document.has_name()  # Feature-ness
-+    assert 0 == self.document.get_feature_array_size()  # Container-ness
-+    assert 0 == self.document.get_schema_array_size()  # Document-ness
-+    assert 0 == self.document.get_styleselector_array_size()  # Document-ness
-+
-+
-+class SimpleMultiGeometryTestCase(unittest.TestCase):
-+  """  This tests the MultiGeometry element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.multigeometry = self.factory.CreateMultiGeometry()
-+
-+  def testDefault(self):
-+    assert kmldom.AsObject(self.multigeometry)
-+    assert kmldom.AsGeometry(self.multigeometry)
-+    assert kmldom.AsMultiGeometry(self.multigeometry)
-+    assert not self.multigeometry.has_id()  # Object-ness
-+    # MultiGeometry-ness
-+    assert 0 == self.multigeometry.get_geometry_array_size()
-+
-+
-+class SimpleOuterBoundaryIsTestCase(unittest.TestCase):
-+  """  TODO: This tests the OuterBoundaryIs element."""
-+
-+
-+class SimpleInnerBoundaryIsTestCase(unittest.TestCase):
-+  """  TODO: This tests the InnerBoundaryIs element."""
-+
-+
-+class SimplePolygonTestCase(unittest.TestCase):
-+  """  TODO: This tests the Polygon element."""
-+
-+class SimplePolyStyleTestCase(unittest.TestCase):
-+  """ This tests the PolyStyle element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.polystyle = self.factory.CreatePolyStyle()
-+
-+  def testDefault(self):
-+    assert kmldom.AsObject(self.polystyle)
-+    assert kmldom.AsSubStyle(self.polystyle)
-+    assert kmldom.AsColorStyle(self.polystyle)
-+
-+    TestColorStyle(self.polystyle)
-+
-+    # PolyStyle fields
-+    # Verify default state of <fill>
-+    assert not self.polystyle.has_fill()
-+    # Set <fill> and verify get_ and has_
-+    fill = True
-+    self.polystyle.set_fill(fill)
-+    assert self.polystyle.has_fill()
-+    assert fill == self.polystyle.get_fill()
-+    # Clear <fill> and verify has_
-+    self.polystyle.clear_fill()
-+    assert not self.polystyle.has_fill()
-+
-+    # Verify default state of <outline>
-+    assert not self.polystyle.has_outline()
-+    # Set <outline> and verify get_ and has_
-+    outline = True
-+    self.polystyle.set_outline(outline)
-+    assert self.polystyle.has_outline()
-+    assert outline == self.polystyle.get_outline()
-+    # Clear <outline> and verify has_
-+    self.polystyle.clear_outline()
-+    assert not self.polystyle.has_outline()
-+
-+class SimpleResourceMapTestCase(unittest.TestCase):
-+  """ This tests the ResourceMap element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.resourcemap = self.factory.CreateResourceMap()
-+
-+  def testDefault(self):
-+    assert kmldom.AsObject(self.resourcemap)
-+    assert kmldom.AsResourceMap(self.resourcemap)
-+    assert not self.resourcemap.has_id()
-+    assert 0 == self.resourcemap.get_alias_array_size()
-+
-+
-+class SimpleSchemaTestCase(unittest.TestCase):
-+  """ This tests the Schema element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.schema = self.factory.CreateSchema()
-+
-+  def testDefault(self):
-+    assert kmldom.AsSchema(self.schema)
-+    assert not self.schema.has_name()
-+    assert not self.schema.has_id()
-+    assert 0 == self.schema.get_simplefield_array_size()
-+
-+
-+class SimpleSchemaDataTestCase(unittest.TestCase):
-+  """ This tests the SchemaData element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.schemadata = self.factory.CreateSchemaData()
-+
-+  def testDefault(self):
-+    assert kmldom.AsObject(self.schemadata)
-+    assert kmldom.AsSchemaData(self.schemadata)
-+    assert not self.schemadata.has_schemaurl()
-+    assert "" == self.schemadata.get_schemaurl()
-+    assert not self.schemadata.has_id()
-+    assert 0 == self.schemadata.get_simpledata_array_size()
-+
-+
-+class SimpleSimpleFieldTestCase(unittest.TestCase):
-+  """ This tests the SimpleField element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.simplefield = self.factory.CreateSimpleField()
-+
-+  def testDefault(self):
-+    assert kmldom.AsSimpleField(self.simplefield)
-+    assert not self.simplefield.has_type()
-+    assert not self.simplefield.has_name()
-+    assert not self.simplefield.has_displayname()
-+
-+
-+class SimpleStyleMapTestCase(unittest.TestCase):
-+  """  TODO: This tests the StyleMap element."""
-+
-+
-+class SimpleUpdateTestCase(unittest.TestCase):
-+  """ This tests the Update element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.update = self.factory.CreateUpdate()
-+
-+  def testDefault(self):
-+    assert kmldom.AsUpdate(self.update)
-+    assert 0 == self.update.get_updateoperation_array_size()
-+
-+  def testTargetHref(self):
-+    assert not self.update.has_targethref()
-+    assert '' == self.update.get_targethref()
-+    href = 'mycoolhref'
-+    self.update.set_targethref(href)
-+    assert self.update.has_targethref()
-+    assert href == self.update.get_targethref()
-+
-+class SimpleStyleMapTestCase(unittest.TestCase):
-+  """  TODO: This tests the StyleMap element."""
-+
-+class SimpleIconStyleIconTestCase(unittest.TestCase):
-+  """ This tests the IconStyleIcon element."""
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.iconstyleicon= self.factory.CreateIconStyleIcon()
-+
-+  def testBasic(self):
-+    assert not self.iconstyleicon.has_href() # default state
-+    assert '' == self.iconstyleicon.get_href()
-+    href = 'http://blah.blah'
-+    self.iconstyleicon.set_href(href)
-+    assert self.iconstyleicon.has_href()
-+    assert href == self.iconstyleicon.get_href()
-+    self.iconstyleicon.clear_href()
-+    assert not self.iconstyleicon.has_href() # back in default state
-+    assert '' == self.iconstyleicon.get_href()
-+
-+class GxExtensionsTestCase(unittest.TestCase):
-+  """ This tests the gx: elements extended by Google Earth 5.0
-+      These are basic subsets of the full suite of tests in the main
-+      C++ code and verify the basic operation of the API """
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+
-+  # Feature's gx:balloonVisibility.
-+  def testGxBalloonVisibility(self):
-+    placemark = self.factory.CreatePlacemark()
-+    assert not placemark.has_gx_balloonvisibility()
-+    assert False == placemark.get_gx_balloonvisibility()
-+    placemark.set_gx_balloonvisibility(True)
-+    assert placemark.has_gx_balloonvisibility()
-+    assert True == placemark.get_gx_balloonvisibility()
-+    expected = (
-+        '<Placemark>\n'
-+        '  <gx:balloonVisibility>1</gx:balloonVisibility>\n'
-+        '</Placemark>\n')
-+    assert expected == kmldom.SerializePretty(placemark)
-+
-+  # <gx:TimeStamp> and <gx:TimeSpan> in AbstractView.
-+  def testGxTimePrimitives(self):
-+    lookat = self.factory.CreateLookAt()
-+    assert not lookat.has_gx_timeprimitive()
-+    assert None == lookat.get_gx_timeprimitive()
-+    timespan = self.factory.CreateGxTimeSpan()
-+    lookat.set_gx_timeprimitive(timespan)
-+    assert lookat.has_gx_timeprimitive()
-+    expected_lookat = (
-+        '<LookAt>\n'
-+        '  <gx:TimeSpan/>\n'
-+        '</LookAt>\n')
-+    assert expected_lookat == kmldom.SerializePretty(lookat)
-+
-+    camera = self.factory.CreateCamera()
-+    assert not camera.has_gx_timeprimitive()
-+    assert None == camera.get_gx_timeprimitive()
-+    timestamp = self.factory.CreateGxTimeStamp()
-+    camera.set_gx_timeprimitive(timestamp)
-+    assert camera.has_gx_timeprimitive()
-+    expected_camera = (
-+        '<Camera>\n'
-+        '  <gx:TimeStamp/>\n'
-+        '</Camera>\n')
-+    assert expected_camera == kmldom.SerializePretty(camera)
-+
-+  # <gx:altitudeMode>clampToSeaFloor|relativeToSeaFloor.
-+  def testGxAltitudeModes(self):
-+    llab = self.factory.CreateLatLonAltBox()
-+    assert not llab.has_gx_altitudemode()
-+    assert kmldom.GX_ALTITUDEMODE_CLAMPTOSEAFLOOR == llab.get_gx_altitudemode()
-+    altmode_rel = kmldom.GX_ALTITUDEMODE_RELATIVETOSEAFLOOR
-+    llab.set_gx_altitudemode(altmode_rel)
-+    assert llab.has_gx_altitudemode()
-+    assert altmode_rel == llab.get_gx_altitudemode()
-+    expected = (
-+        '<LatLonAltBox>\n'
-+        '  <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>\n'
-+        '</LatLonAltBox>\n')
-+    assert expected == kmldom.SerializePretty(llab)
-+    # TODO: Camera, GroundOverlay, LineString, LineStyle, LinearRing, LookAt,
-+    #       Model, Point, Polygon.
-+
-+  # <gx:LatLonQuad>
-+  def testGxLatLonQuad(self):
-+    groundoverlay = self.factory.CreateGroundOverlay()
-+    assert False == groundoverlay.has_gx_latlonquad()
-+    assert None == groundoverlay.get_gx_latlonquad()
-+    llq = self.factory.CreateGxLatLonQuad()
-+    coords = self.factory.CreateCoordinates()
-+    llq.set_coordinates(coords)
-+    groundoverlay.set_gx_latlonquad(llq)
-+    assert True == groundoverlay.has_gx_latlonquad()
-+    expected = (
-+        '<GroundOverlay>\n'
-+        '  <gx:LatLonQuad>\n'
-+        '    <coordinates/>\n'
-+        '  </gx:LatLonQuad>\n'
-+        '</GroundOverlay>\n')
-+    assert expected == kmldom.SerializePretty(groundoverlay)
-+
-+  # <gx:Tour>
-+  def testGxTour(self):
-+    tour = self.factory.CreateGxTour()
-+    assert not tour.has_gx_playlist()
-+    assert None == tour.get_gx_playlist()
-+    tour.set_gx_playlist(self.factory.CreateGxPlaylist())
-+    assert tour.has_gx_playlist()
-+
-+  # <gx:Playlist>
-+  def testGxPlaylist(self):
-+    playlist = self.factory.CreateGxPlaylist()
-+    assert 0 == playlist.get_gx_tourprimitive_array_size()
-+    playlist.add_gx_tourprimitive(self.factory.CreateGxFlyTo())
-+    assert 1 == playlist.get_gx_tourprimitive_array_size()
-+
-+  # <gx:AnimatedUpdate>
-+  def testGxAnimatedUpdate(self):
-+    animatedupdate = self.factory.CreateGxAnimatedUpdate()
-+    assert False == animatedupdate.has_gx_duration()
-+    assert 0.0 == animatedupdate.get_gx_duration()
-+    animatedupdate.set_gx_duration(1.0)
-+    assert animatedupdate.has_gx_duration()
-+    assert 1.0 == animatedupdate.get_gx_duration()
-+
-+    assert False == animatedupdate.has_update()
-+    assert None == animatedupdate.get_update()
-+    animatedupdate.set_update(self.factory.CreateUpdate())
-+    assert animatedupdate.has_update()
-+
-+  # <gx:FlyTo>
-+  def testGxFlyTo(self):
-+    flyto = self.factory.CreateGxFlyTo()
-+    assert False == flyto.has_gx_duration()
-+    assert 0.0 == flyto.get_gx_duration()
-+    flyto.set_gx_duration(1.0)
-+    assert flyto.has_gx_duration()
-+    assert 1.0 == flyto.get_gx_duration()
-+
-+    assert False == flyto.has_gx_flytomode()
-+    assert kmldom.GX_FLYTOMODE_BOUNCE == flyto.get_gx_flytomode()
-+    flyto.set_gx_flytomode(kmldom.GX_FLYTOMODE_SMOOTH)
-+    assert flyto.has_gx_flytomode()
-+    assert kmldom.GX_FLYTOMODE_SMOOTH == flyto.get_gx_flytomode()
-+
-+  # <gx:Wait>
-+  def testGxWait(self):
-+    wait = self.factory.CreateGxWait()
-+    assert False == wait.has_gx_duration()
-+    assert 0.0 == wait.get_gx_duration()
-+    wait.set_gx_duration(1.0)
-+    assert wait.has_gx_duration()
-+    assert 1.0 == wait.get_gx_duration()
-+
-+  # <gx:SoundCue>
-+  def testGxSoundCue(self):
-+    soundcue = self.factory.CreateGxSoundCue()
-+    assert False == soundcue.has_href()
-+    assert '' == soundcue.get_href()
-+    href = 'some href'
-+    soundcue.set_href(href)
-+    assert soundcue.has_href()
-+    assert href == soundcue.get_href()
-+
-+  # <gx:TourControl>
-+  def testGxTourControl(self):
-+    tourcontrol = self.factory.CreateGxTourControl()
-+    assert False == tourcontrol.has_gx_playmode()
-+    assert kmldom.GX_PLAYMODE_PAUSE == tourcontrol.get_gx_playmode()
-+    tourcontrol.set_gx_playmode(kmldom.GX_PLAYMODE_PAUSE)
-+    assert tourcontrol.has_gx_playmode()
-+    assert kmldom.GX_PLAYMODE_PAUSE == tourcontrol.get_gx_playmode()
-+
-+  # Parse and serialization of gx:Tour and friends.
-+  def testGxTourParseSerialize(self):
-+    kml = (
-+        '<gx:Tour>'
-+        '<gx:Playlist>'
-+        '<gx:SoundCue><href>x</href></gx:SoundCue>'
-+        '<gx:FlyTo>'
-+        '<gx:duration>1.0</gx:duration>'
-+        '</gx:FlyTo>'
-+        '<gx:AnimatedUpdate>'
-+        '<gx:duration>2.0</gx:duration>'
-+        '<Update/>'
-+        '</gx:AnimatedUpdate>'
-+        '<gx:TourControl><gx:playMode>pause</gx:playMode></gx:TourControl>'
-+        '<gx:Wait><gx:duration>3.0</gx:duration></gx:Wait>'
-+        '</gx:Playlist>'
-+        '</gx:Tour>')
-+    assert kmldom.ParseKml(kml)
-+    assert kmldom.AsGxTour(kmldom.ParseKml(kml))
-+    tour = kmldom.AsGxTour(kmldom.ParseKml(kml))
-+    assert tour.has_gx_playlist()
-+    playlist = tour.get_gx_playlist()
-+    assert 5 == playlist.get_gx_tourprimitive_array_size()
-+    soundcue = kmldom.AsGxSoundCue(playlist.get_gx_tourprimitive_array_at(0))
-+    assert soundcue
-+    assert soundcue.has_href()
-+    assert 'x' == soundcue.get_href()
-+    flyto = kmldom.AsGxFlyTo(playlist.get_gx_tourprimitive_array_at(1))
-+    assert flyto
-+    assert flyto.has_gx_duration()
-+    assert 1.0 == flyto.get_gx_duration()
-+    au = kmldom.AsGxAnimatedUpdate(playlist.get_gx_tourprimitive_array_at(2))
-+    assert au
-+    assert au.has_gx_duration()
-+    assert 2.0 == au.get_gx_duration()
-+    assert au.has_update()
-+    assert kmldom.AsUpdate(au.get_update())
-+    tc = kmldom.AsGxTourControl(playlist.get_gx_tourprimitive_array_at(3))
-+    assert tc
-+    assert tc.has_gx_playmode()
-+    assert kmldom.GX_PLAYMODE_PAUSE == tc.get_gx_playmode()
-+    wait = kmldom.AsGxWait(playlist.get_gx_tourprimitive_array_at(4))
-+    assert wait
-+    assert wait.has_gx_duration()
-+    assert 3.0 == wait.get_gx_duration()
-+
-+class ItemIconTestCase(unittest.TestCase):
-+  """ This verifies the behavior of ItemIcon and its children """
-+
-+  def setUp(self):
-+    self.factory = kmldom.KmlFactory_GetFactory()
-+    self.itemicon = self.factory.CreateItemIcon()
-+
-+  def testDefaults(self):
-+    assert not self.itemicon.has_state()
-+    assert 1 == self.itemicon.get_state_array_size()
-+    assert kmldom.ITEMICONSTATE_OPEN == self.itemicon.get_state_array_at(0)
-+    assert not self.itemicon.has_href()
-+    assert "" == self.itemicon.get_href()
-+
-+  def testState(self):
-+    state_open = kmldom.ITEMICONSTATE_OPEN
-+    state_error = kmldom.ITEMICONSTATE_ERROR
-+    state_fetching0 = kmldom.ITEMICONSTATE_FETCHING0
-+
-+    self.itemicon.clear_state()
-+    assert 0 == self.itemicon.get_state_array_size()
-+    self.itemicon.add_state(state_error)
-+    assert 1 == self.itemicon.get_state_array_size()
-+    assert state_error == self.itemicon.get_state_array_at(0)
-+    self.itemicon.add_state(state_fetching0)
-+    assert 2 == self.itemicon.get_state_array_size()
-+    assert state_fetching0 == self.itemicon.get_state_array_at(1)
-+
-+
-+def suite():
-+  suite = unittest.TestSuite()
-+  suite.addTest(VerySimpleParseTestCase())
-+  suite.addTest(VerySimpleSerializeTestCase())
-+  suite.addTest(SimpleFactoryTestCase())
-+  suite.addTest(FactoryCreateElementByIdTestCase())
-+  suite.addTest(VerySimpleCastTestCase())
-+  suite.addTest(VerySimpleSimpleChildTestCase())
-+  suite.addTest(VerySimpleComplexChildTestCase())
-+  suite.addTest(SimpleAtomAuthorTestCase('testDefault'))
-+  suite.addTest(SimpleAtomAuthorTestCase('testSetClear'))
-+  suite.addTest(SimpleAtomLinkTestCase('testDefault'))
-+  suite.addTest(SimpleAtomLinkTestCase('testSetClear'))
-+  suite.addTest(SimpleCoordinatesTestCase())
-+  suite.addTest(SimpleVec2TestCase())
-+  suite.addTest(SimpleObjectTestCase())
-+  suite.addTest(SimpleFeatureTestCase())
-+  suite.addTest(SimpleFeatureTestCase('testParseAtom'))
-+  suite.addTest(SimpleRegionTestCase())
-+  suite.addTest(SimpleParseTestCase('testBasic'))
-+  suite.addTest(SimpleSerializePrettyTestCase('testBasic'))
-+  suite.addTest(SimpleSerializeRawTestCase('testBasic'))
-+  suite.addTest(SimpleExtendedDataTestCase('testDefault'))
-+  suite.addTest(DataTestCase('testDefault'))
-+  suite.addTest(SimpleDataTestCase('testDefault'))
-+  suite.addTest(SimpleIconStyleTestCase('testDefault'))
-+  suite.addTest(SimpleKmlTestCase('testDefault'))
-+  suite.addTest(SimpleKmlTestCase('testSetClear'))
-+  suite.addTest(SimpleNetworkLinkControlTestCase('testDefault'))
-+  suite.addTest(SimpleNetworkLinkControlTestCase('testSetClear'))
-+  suite.addTest(SimpleLabelStyleTestCase('testDefault'))
-+  suite.addTest(SimpleLineStyleTestCase('testDefault'))
-+  suite.addTest(SimpleListStyleTestCase('testDefault'))
-+  suite.addTest(SimplePhotoOverlayTestCase('testDefault'))
-+  suite.addTest(SimplePlacemarkTestCase('testDefault'))
-+  suite.addTest(SimplePlacemarkTestCase('testName'))
-+  suite.addTest(SimplePolyStyleTestCase('testDefault'))
-+  suite.addTest(SimpleLatLonBoxTestCase('testDefault'))
-+  suite.addTest(SimpleLatLonBoxTestCase('testSetClear'))
-+  suite.addTest(SimpleLinkTestCase('testDefault'))
-+  suite.addTest(SimpleLinkTestCase('testSetClear'))
-+  suite.addTest(SimpleChangeTestCase('testDefault'))
-+  suite.addTest(SimpleChangeTestCase('testAddOneObject'))
-+  suite.addTest(SimpleChangeTestCase('testAddNObjects'))
-+  suite.addTest(SimpleCreateTestCase('testDefault'))
-+  suite.addTest(SimpleCreateTestCase('testAddOneContainer'))
-+  suite.addTest(SimpleCreateTestCase('testAddNContainers'))
-+  suite.addTest(SimpleDeleteTestCase('testAddOneFeature'))
-+  suite.addTest(SimpleDeleteTestCase('testAddNFeatures'))
-+  suite.addTest(SimpleDocumentTestCase('testDefault'))
-+  suite.addTest(SimpleResourceMapTestCase('testDefault'))
-+  suite.addTest(SimpleMultiGeometryTestCase('testDefault'))
-+  suite.addTest(SimpleSchemaTestCase('testDefault'))
-+  suite.addTest(SimpleSchemaDataTestCase('testDefault'))
-+  suite.addTest(SimpleSimpleFieldTestCase('testDefault'))
-+  suite.addTest(SimpleUpdateTestCase('testDefault'))
-+  suite.addTest(SimpleUpdateTestCase('testTargetHref'))
-+  suite.addTest(SimpleIconStyleIconTestCase('testBasic'))
-+  suite.addTest(GxExtensionsTestCase('testGxBalloonVisibility'))
-+  suite.addTest(GxExtensionsTestCase('testGxTimePrimitives'))
-+  suite.addTest(GxExtensionsTestCase('testGxAltitudeModes'))
-+  suite.addTest(GxExtensionsTestCase('testGxLatLonQuad'))
-+  suite.addTest(GxExtensionsTestCase('testGxTour'))
-+  suite.addTest(GxExtensionsTestCase('testGxPlaylist'))
-+  suite.addTest(GxExtensionsTestCase('testGxAnimatedUpdate'))
-+  suite.addTest(GxExtensionsTestCase('testGxFlyTo'))
-+  suite.addTest(GxExtensionsTestCase('testGxWait'))
-+  suite.addTest(GxExtensionsTestCase('testGxSoundCue'))
-+  suite.addTest(GxExtensionsTestCase('testGxTourControl'))
-+  suite.addTest(GxExtensionsTestCase('testGxTourParseSerialize'))
-+  suite.addTest(ItemIconTestCase('testDefaults'))
-+  suite.addTest(ItemIconTestCase('testState'))
-+  return suite
-+
-+
-+runner = unittest.TextTestRunner()
-+runner.run(suite())
---- /dev/null
-+++ b/tests/swig/kmlengine_test.py
-@@ -0,0 +1,283 @@
-+#!/usr/bin/env python
-+
-+# Copyright 2008, Google Inc. All rights reserved.
-+#
-+# Redistribution and use in source and binary forms, with or without 
-+# modification, are permitted provided that the following conditions are met:
-+#
-+#  1. Redistributions of source code must retain the above copyright notice, 
-+#     this list of conditions and the following disclaimer.
-+#  2. Redistributions in binary form must reproduce the above copyright notice,
-+#     this list of conditions and the following disclaimer in the documentation
-+#     and/or other materials provided with the distribution.
-+#  3. Neither the name of Google Inc. nor the names of its contributors may be
-+#     used to endorse or promote products derived from this software without
-+#     specific prior written permission.
-+#
-+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
-+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
-+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
-+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
-+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+"""
-+This file contains unit tests for the KML Engine Python SWIG bindings.
-+"""
-+
-+import unittest
-+import kmldom
-+import kmlengine
-+
-+# These VerySimple tests really only verify that the function/class exists.
-+
-+class VerySimpleKmlDomTestCase(unittest.TestCase):
-+  """ Verify very simple KML DOM usage """
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    placemark = factory.CreatePlacemark()
-+    name = 'hi'
-+    placemark.set_name(name)
-+    assert name == placemark.get_name()
-+
-+class VerySimpleBboxTestCase(unittest.TestCase):
-+  """ Verify very simple usage of class Bbox """
-+  def runTest(self):
-+    bbox = kmlengine.Bbox(38, 36, -120, -122)
-+    assert bbox.Contains(37, -121)
-+
-+class AllMethodsBboxTestCase(unittest.TestCase):
-+  """ Verify basic usage of each method of kmlengine.Bbox """
-+  def runTest(self):
-+    bbox = kmlengine.Bbox()
-+    assert -180.0 == bbox.get_north()
-+    assert 180.0 == bbox.get_south()
-+    assert -180.0 == bbox.get_east()
-+    assert 180.0 == bbox.get_west()
-+
-+    bbox_a = kmlengine.Bbox(10.1, -11.2, 99.99, -88.88)
-+    bbox.ExpandFromBbox(bbox_a)
-+    assert 10.1 == bbox.get_north()
-+    assert -11.2 == bbox.get_south()
-+    assert 99.99 == bbox.get_east()
-+    assert -88.88 == bbox.get_west()
-+
-+    bbox.ExpandLatitude(20.2)
-+    assert 20.2 == bbox.get_north()
-+    assert -11.2 == bbox.get_south()
-+    bbox.ExpandLatitude(-20.2)
-+    assert 20.2 == bbox.get_north()
-+    assert -20.2 == bbox.get_south()
-+    bbox.ExpandLongitude(101.101)
-+    assert 101.101 == bbox.get_east()
-+    assert -88.88 == bbox.get_west()
-+    bbox.ExpandLongitude(-101.101)
-+    assert 101.101 == bbox.get_east()
-+    assert -101.101 == bbox.get_west()
-+
-+    bbox.ExpandLatLon(30.3, -111.222);
-+    assert 30.3 == bbox.get_north()
-+    assert -20.2 == bbox.get_south()
-+    assert 101.101 == bbox.get_east()
-+    assert -111.222 == bbox.get_west()
-+
-+class VerySimpleCloneTestCase(unittest.TestCase):
-+  """ Verify very simple usage of Clone() """
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    placemark = factory.CreatePlacemark()
-+    name = 'hi'
-+    placemark.set_name(name)
-+    clone_element = kmlengine.Clone(placemark)
-+    assert clone_element
-+    clone_placemark = kmldom.AsPlacemark(clone_element)
-+    assert clone_placemark
-+    assert name == clone_placemark.get_name()
-+    # Change the name in the original
-+    new_name = 'new name'
-+    placemark.set_name(new_name)
-+    # Verify that the clone still has the old name
-+    assert name == clone_placemark.get_name()
-+
-+class VerySimpleGetFeatureLatLonTestCase(unittest.TestCase):
-+  def runTest(self):
-+    kml = '<Placemark>' \
-+            '<Point><coordinates>1,2,3</coordinates></Point>' \
-+          '</Placemark>'
-+    element = kmldom.ParseKml(kml)
-+    assert element
-+    feature = kmldom.AsFeature(element)
-+    assert feature
-+    status,lat,lon = kmlengine.GetFeatureLatLon(feature)
-+    assert True == status
-+    assert 1 == lon
-+    assert 2 == lat
-+
-+class VerySimpleGetFeatureBoundsTestCase(unittest.TestCase):
-+  def runTest(self):
-+    kml = '<Placemark>' \
-+            '<LineString><coordinates>1,2 -1,-2</coordinates></LineString>' \
-+          '</Placemark>'
-+    element = kmldom.ParseKml(kml)
-+    assert element
-+    feature = kmldom.AsFeature(element)
-+    assert feature
-+    bbox = kmlengine.Bbox()
-+    status = kmlengine.GetFeatureBounds(feature, bbox)
-+    assert status
-+    assert 2 == bbox.get_north()
-+    assert -2 == bbox.get_south()
-+    assert 1 == bbox.get_east()
-+    assert -1 == bbox.get_west()
-+
-+class VerySimpleGetRootFeatureTestCase(unittest.TestCase):
-+  """ Verify very simple usage of GetRootFeature() """
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    placemark = factory.CreatePlacemark()
-+    feature = kmlengine.GetRootFeature(placemark)
-+    assert feature
-+    assert kmldom.AsPlacemark(feature)
-+
-+class VerySimpleKmzSplitTestCase(unittest.TestCase):
-+  def runTest(self):
-+    kml_url = 'http://foo.com/goo.kmz/bar.jpg'
-+    status,kmz_url,kmz_path = kmlengine.KmzSplit(kml_url)
-+    assert True == status
-+    assert 'http://foo.com/goo.kmz' == kmz_url
-+    assert 'bar.jpg' == kmz_path
-+
-+class VerySimpleSplitUriTestCase(unittest.TestCase):
-+  def runTest(self):
-+    status,scheme,host,port,path,query,fragment = \
-+       kmlengine.SplitUri('http://host.com:82/a/b/c.kml?p=q#id')
-+    assert True == status
-+    assert 'http' == scheme
-+    assert 'host.com' == host
-+    assert 'a/b/c.kml' == path
-+    assert 'p=q' == query
-+    assert 'id' == fragment
-+
-+class BasicKmlFileCreateFromParseTestCase(unittest.TestCase):
-+  """ Verify very simple usage of the KmlFile::CreateFromParse() method """
-+  def runTest(self):
-+    id = 'pm123'
-+    kml = '<Placemark id="%s"><name>hello</name></Placemark>' % id
-+    kmlfile,errors = kmlengine.KmlFile.CreateFromParse(kml)
-+    assert kmlfile
-+    object = kmlfile.GetObjectById(id)
-+    assert object
-+    placemark = kmldom.AsPlacemark(object)
-+    assert placemark
-+    assert placemark.has_id()
-+    assert id == placemark.get_id()
-+
-+class KmlFileCreateFromParseOfBasicElementTestCase(unittest.TestCase):
-+  def runTest(self):
-+    kmlfile,errors = kmlengine.KmlFile.CreateFromParse('<kml/>')
-+    assert kmlfile
-+    root = kmlfile.get_root()
-+    assert kmldom.Type_kml == root.Type()
-+
-+class BasicKmlFileCreateFromImportTestCase(unittest.TestCase):
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    placemark = factory.CreatePlacemark()
-+    id = 'placemark123'
-+    name = 'some name'
-+    placemark.set_id(id)
-+    placemark.set_name(name)
-+    folder = factory.CreateFolder()
-+    folder.add_feature(placemark)
-+    kmlfile = kmlengine.KmlFile.CreateFromImport(folder)
-+    assert kmlfile
-+    object = kmlfile.GetObjectById(id)
-+    assert object
-+    placemark = kmldom.AsPlacemark(object)
-+    assert placemark
-+    assert placemark.has_id()
-+    assert id == placemark.get_id()
-+    assert placemark.has_name()
-+    assert name == placemark.get_name()
-+
-+class KmlFileCreateFromImportOfBasicElementTestCase(unittest.TestCase):
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    # TODO: This crashes CreateFromImport as do all non-Object complex elements
-+    # kml = factory.CreateKml()
-+    # This returns an ElementPtr for the given element and works fine in
-+    # CreateFromImport:
-+    kml_as_element = factory.CreateElementById(kmldom.Type_kml)
-+    kml = kmldom.AsKml(kml_as_element)
-+    kml.set_feature(factory.CreatePlacemark())
-+    kmlfile = kmlengine.KmlFile.CreateFromImport(kml_as_element)
-+    assert kmlfile
-+    root = kmlfile.get_root()
-+    assert root
-+    kml = kmldom.AsKml(root)
-+    assert kml
-+    assert kml.has_feature()
-+    placemark = kmldom.AsPlacemark(kml.get_feature())
-+    assert placemark
-+
-+class BasicKmlFileSerializeToStringTestCase(unittest.TestCase):
-+  def runTest(self):
-+    factory = kmldom.KmlFactory_GetFactory()
-+    kml = factory.CreateElementById(kmldom.Type_kml)
-+    assert kml
-+    kmlfile = kmlengine.KmlFile.CreateFromImport(kml)
-+    assert kmlfile
-+    (ok, xml) = kmlfile.SerializeToString()
-+    assert ok
-+    kExpectedXml = '<?xml version="1.0" encoding="utf-8"?>\n' \
-+        '<kml xmlns="http://www.opengis.net/kml/2.2"/>\n'
-+    assert kExpectedXml == xml
-+
-+class BasicKmzFileTestCase(unittest.TestCase):
-+  def runTest(self):
-+    kmz_filepath = '../../testdata/kmz/model-macky.kmz'
-+    kmzfile = kmlengine.KmzFile.OpenFromFile(kmz_filepath)
-+    assert kmzfile
-+    (ok, kml) = kmzfile.ReadKml()
-+    assert ok
-+    (kmlfile,errors) = kmlengine.KmlFile.CreateFromParse(kml)
-+    assert kmlfile
-+    root = kmldom.AsKml(kmlfile.get_root())
-+    assert root
-+    placemark = kmldom.AsPlacemark(root.get_feature())
-+    assert placemark
-+    assert 'SketchUp Model of Macky Auditorium' == placemark.get_name()
-+    assert placemark.has_geometry()
-+    model = kmldom.AsModel(placemark.get_geometry())
-+    assert model
-+    assert 'model_4' == model.get_id()
-+    (ok, dae) = kmzfile.ReadFile('geometry/CU-Macky.dae')
-+    assert ok
-+    assert 268477 == len(dae)
-+
-+def suite():
-+  suite = unittest.TestSuite()
-+  suite.addTest(VerySimpleKmlDomTestCase())
-+  suite.addTest(VerySimpleBboxTestCase())
-+  suite.addTest(AllMethodsBboxTestCase())
-+  suite.addTest(VerySimpleCloneTestCase())
-+  suite.addTest(VerySimpleGetRootFeatureTestCase())
-+  suite.addTest(VerySimpleGetFeatureLatLonTestCase())
-+  suite.addTest(VerySimpleGetFeatureBoundsTestCase())
-+  suite.addTest(VerySimpleKmzSplitTestCase())
-+  suite.addTest(VerySimpleSplitUriTestCase())
-+  suite.addTest(KmlFileCreateFromParseOfBasicElementTestCase())
-+  suite.addTest(BasicKmlFileCreateFromParseTestCase())
-+  suite.addTest(BasicKmlFileCreateFromImportTestCase())
-+  suite.addTest(KmlFileCreateFromImportOfBasicElementTestCase())
-+  suite.addTest(BasicKmlFileSerializeToStringTestCase())
-+  suite.addTest(BasicKmzFileTestCase())
-+  return suite
-+
-+
-+runner = unittest.TextTestRunner()
-+runner.run(suite())
---- a/src/swig/KmlBaseTest.java
-+++ /dev/null
-@@ -1,92 +0,0 @@
--// Copyright 2009, Google Inc. All rights reserved.
--//
--// Redistribution and use in source and binary forms, with or without
--// modification, are permitted provided that the following conditions are met:
--//
--//  1. Redistributions of source code must retain the above copyright notice,
--//     this list of conditions and the following disclaimer.
--//  2. Redistributions in binary form must reproduce the above copyright notice,
--//     this list of conditions and the following disclaimer in the documentation
--//     and/or other materials provided with the distribution.
--//  3. Neither the name of Google Inc. nor the names of its contributors may be
--//     used to endorse or promote products derived from this software without
--//     specific prior written permission.
--//
--// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
--// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
--// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
--// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
--// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
--// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
--// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
--// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
--// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
--// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--
--// This is a small subset of the python tests to ensure sanity of the basic
--// Java bindings.
--
--import org.junit.*;
--import static org.junit.Assert.*;
--
--import com.googlecode.libkml.*;
--
--public class KmlBaseTest {
--
--  static {
--    try {
--      System.loadLibrary("kmlbase_swig_java");
--    } catch (UnsatisfiedLinkError e) {
--      System.err.println("Failed to load kmlbase. " + e);
--      System.err.println("Make sure you have your classpath set correctly " +
--                         "and that LD_LIBRARY_PATH can see " +
--                         "libkmldom_swig_java and friends");
--      System.exit(1);
--    }
--  }
--
--  @Test public void testBasicAttributes() {
--    Attributes attributes = new Attributes();
--    assertEquals(0, attributes.GetSize());
--  }
--
--  @Test public void testBasicColor32() {
--    Color32 color = new Color32();
--    long expected = 0xffffffffL;
--    assertEquals(expected, color.get_color_abgr());
--
--    long red = 0xff0000ffL;
--    color = new Color32(red);
--    assertEquals(red, color.get_color_abgr());
--
--    String red_str = "ff0000ff";
--    color = new Color32(red_str);
--    assertEquals(red, color.get_color_abgr());
--  }
--
--  @Test public void testBasicDateTime() {
--    String when = "2008-10-03T09:25:42Z";
--    DateTime datetime = DateTime.Create(when);
--    assertEquals(1223025942, datetime.GetTimeT());
--    assertEquals("09:25:42", datetime.GetXsdTime());
--    assertEquals("2008-10-03", datetime.GetXsdDate());
--    assertEquals(when, datetime.GetXsdDateTime());
--  }
--
--  @Test public void testBasicVec3() {
--    double latitude = 38.12345;
--    double longitude = -121.123123;
--    double altitude = 9876.5432;
--    Vec3 vec3 = new Vec3(longitude, latitude, altitude);
--    assertEquals(latitude, vec3.get_latitude(), 0.000001);
--    assertEquals(longitude, vec3.get_longitude(), 0.000001);
--    assertTrue(vec3.has_altitude());
--    assertEquals(altitude, vec3.get_altitude(), 0.000001);
--    vec3 = new Vec3(longitude, latitude);
--    assertEquals(latitude, vec3.get_latitude(), 0.000001);
--    assertEquals(longitude, vec3.get_longitude(), 0.000001);
--    assertFalse(vec3.has_altitude());
--  }
--
--}
--
---- a/src/swig/kmlbase.i
-+++ b/src/swig/kmlbase.i
-@@ -1,9 +1,9 @@
- // Copyright 2008, Google Inc. All rights reserved.
- //
--// Redistribution and use in source and binary forms, with or without 
-+// Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are met:
- //
--//  1. Redistributions of source code must retain the above copyright notice, 
-+//  1. Redistributions of source code must retain the above copyright notice,
- //     this list of conditions and the following disclaimer.
- //  2. Redistributions in binary form must reproduce the above copyright notice,
- //     this list of conditions and the following disclaimer in the documentation
-@@ -13,19 +13,21 @@
- //     specific prior written permission.
- //
- // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
--// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
-+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
--// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
-+// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
--// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
--// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
-+// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- 
- // This is the SWIG interface file for the KML Base module.
- // This was developed with SWIG version 1.3.35.
- 
-+//%rename(__set__) *::operator=;
-+//%rename(__getitem__) *::operator[];
- %module kmlbase
- 
- // Include the headers needed to build kmlengine_wrap.cc.
-@@ -52,6 +54,8 @@
- %apply std::string* OUTPUT { std::string* output_value };
- %apply std::string* OUTPUT { std::string* output_key };
- 
-+
-+
- typedef long time_t;
- 
- namespace kmlbase {
-@@ -64,6 +68,8 @@ class Attributes {
-   void SetString(const std::string& attr_name, const std::string& attr_val);
- };
- 
-+%rename(Color32_op_equal) Color32::operator==;
-+
- class Color32 {
-  public:
-   Color32();
-@@ -88,6 +94,7 @@ class Color32 {
-                       unsigned char g, unsigned char r);
-   void set_color_argb(uint32_t color_argb);
-   bool operator==(const Color32& color) const;
-+
-   // TODO: other operator overrides.
- };
- 
---- a/src/swig/kmlbase_test.py
-+++ /dev/null
-@@ -1,161 +0,0 @@
--#!/usr/bin/env python
--
--# Copyright 2008, Google Inc. All rights reserved.
--#
--# Redistribution and use in source and binary forms, with or without 
--# modification, are permitted provided that the following conditions are met:
--#
--#  1. Redistributions of source code must retain the above copyright notice, 
--#     this list of conditions and the following disclaimer.
--#  2. Redistributions in binary form must reproduce the above copyright notice,
--#     this list of conditions and the following disclaimer in the documentation
--#     and/or other materials provided with the distribution.
--#  3. Neither the name of Google Inc. nor the names of its contributors may be
--#     used to endorse or promote products derived from this software without
--#     specific prior written permission.
--#
--# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
--# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
--# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
--# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
--# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
--# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
--# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
--# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
--# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
--# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--
--"""
--This file contains unit tests for the KML Base Python SWIG bindings.
--"""
--
--import unittest
--import kmlbase
--
--# These VerySimple tests really only verify that the function/class exists.
--# Based on kml/base/color32_test.cc.
--
--class BasicAttributesTestCase(unittest.TestCase):
--  def runTest(self):
--    attributes = kmlbase.Attributes()
--    assert 0 == attributes.GetSize()
--    found,value = attributes.FindValue("key")
--    assert not found
--    found,key = attributes.FindKey("value")
--    assert not found
--
--class BasicColor32TestCase(unittest.TestCase):
--  """Verify very simple Color32 usage """
--  def runTest(self):
--    # Default construction.
--    color = kmlbase.Color32()
--    assert 0xffffffff == color.get_color_abgr()
--
--    # Construction from specific color.
--    red = 0xff0000ff
--    color = kmlbase.Color32(red)
--    assert red == color.get_color_abgr()
--
--    # Construction from RGBA chars.
--    A = 0xff
--    B = 0x00
--    G = 0x00
--    R = 0xff
--    color = kmlbase.Color32(A, B, G, R)
--    assert red == color.get_color_abgr()
--
--    # Construction from string.
--    red_str = "ff0000ff"
--    color = kmlbase.Color32(red_str)
--    assert red == color.get_color_abgr()
--
--    # Bad construction.
--    nonsense = "This isn't even close to a color value"
--    color = kmlbase.Color32(nonsense)
--    assert "00000000" == color.to_string_abgr()
--
--    # Getters in default state.
--    color = kmlbase.Color32()
--    kFF = 0xff
--
--    assert kFF == color.get_alpha()
--    assert kFF == color.get_blue()
--    assert kFF == color.get_green()
--    assert kFF == color.get_red()
--
--    # Verify getters of newly set state.
--    kAB = 0xab
--    color.set_alpha(kAB)
--    color.set_blue(kAB)
--    color.set_green(kAB)
--    color.set_red(kAB)
--    assert kAB == color.get_alpha()
--    assert kAB == color.get_blue()
--    assert kAB == color.get_green()
--    assert kAB == color.get_red()
--
--    # Verify get_color_abgr and get_color_rgba.
--    kOpaqueGreen = 0xff00ff00
--    color = kmlbase.Color32(kOpaqueGreen)
--    assert kOpaqueGreen == color.get_color_abgr()
--    kOpaqueGreenARGB = 0xff00ff00
--    assert kOpaqueGreenARGB == color.get_color_argb()
--
--    # Verify reconstruction to AABBGGRR string.
--    kOpaqueRedStr = "ff0000ff"
--    color = kmlbase.Color32(kOpaqueRedStr);
--    assert kOpaqueRedStr == color.to_string_abgr()
--
--    # Verify to_argb_string.
--    assert kOpaqueRedStr == color.to_string_abgr()
--    kOpaqueRedStr_argb = "ffff0000"
--    assert kOpaqueRedStr_argb == color.to_string_argb()
--
--    # Equality operator.
--    red = kmlbase.Color32(kOpaqueRedStr)
--    green = kmlbase.Color32(kOpaqueGreen)
--    assert red == red
--    assert green != red
--
--class BasicDateTimeTestCase(unittest.TestCase):
--  def runTest(self):
--    kWhen = "2008-10-03T09:25:42Z"
--    datetime = kmlbase.DateTime_Create(kWhen)
--    assert datetime
--    assert 1223025942 == datetime.GetTimeT()
--    assert "09:25:42" == datetime.GetXsdTime()
--    assert "2008-10-03" == datetime.GetXsdDate()
--    assert kWhen == datetime.GetXsdDateTime()
--
--class BasicVec3TestCase(unittest.TestCase):
--  def runTest(self):
--    kLatitude = 38.12345
--    kLongitude = -121.123123
--    kAltitude = 9876.5432
--    vec3 = kmlbase.Vec3(kLongitude, kLatitude, kAltitude)
--    assert vec3
--    assert kLatitude == vec3.get_latitude()
--    assert kLongitude == vec3.get_longitude()
--    assert vec3.has_altitude()
--    assert kAltitude == vec3.get_altitude()
--    vec3 = kmlbase.Vec3(kLongitude, kLatitude)
--    assert vec3
--    assert kLatitude == vec3.get_latitude()
--    assert kLongitude == vec3.get_longitude()
--    assert not vec3.has_altitude()
--
--class BasicVersionTestCase(unittest.TestCase):
--  def runTest(self):
--    assert "1.3.0" == kmlbase.Version_GetString()
--
--def suite():
--  suite = unittest.TestSuite()
--  suite.addTest(BasicAttributesTestCase())
--  suite.addTest(BasicColor32TestCase())
--  suite.addTest(BasicDateTimeTestCase())
--  suite.addTest(BasicVec3TestCase())
--  suite.addTest(BasicVersionTestCase())
--  return suite
--
--runner = unittest.TextTestRunner()
--runner.run(suite())
---- a/src/swig/kmldom_test.py
-+++ /dev/null
-@@ -1,1655 +0,0 @@
--#!/usr/bin/env python
--
--# Copyright 2008, Google Inc. All rights reserved.
--#
--# Redistribution and use in source and binary forms, with or without 
--# modification, are permitted provided that the following conditions are met:
--#
--#  1. Redistributions of source code must retain the above copyright notice, 
--#     this list of conditions and the following disclaimer.
--#  2. Redistributions in binary form must reproduce the above copyright notice,
--#     this list of conditions and the following disclaimer in the documentation
--#     and/or other materials provided with the distribution.
--#  3. Neither the name of Google Inc. nor the names of its contributors may be
--#     used to endorse or promote products derived from this software without
--#     specific prior written permission.
--#
--# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
--# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
--# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
--# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
--# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
--# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
--# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
--# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
--# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
--# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--
--"""
--This file contains unit tests for the KML DOM Python SWIG bindings.
--"""
--
--import unittest
--import kmlbase
--import kmldom
--
--
--class VerySimpleParseTestCase(unittest.TestCase):
--  """ This simply verifies the existence of the binding to ParseKml() """
--
--  def runTest(self):
--    assert kmldom.ParseKml('<kml/>')
--
--
--class VerySimpleSerializeTestCase(unittest.TestCase):
--  """ This verifies the existence of the binding to SerializeRaw() """
--
--  def runTest(self):
--    kml = '<kml/>'
--    assert kml == kmldom.SerializeRaw(kmldom.ParseKml(kml))
--
--
--class SimpleFactoryTestCase(unittest.TestCase):
--  """
--  This verifies the existence of the binding to KmlFactory::GetFactory
--  and the exitence of bindings for all factory methods.
--  """
--
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    assert factory.CreateElementById(kmldom.Type_Placemark)
--    assert factory.CreateAlias()
--    assert factory.CreateAtomAuthor()
--    assert factory.CreateAtomLink()
--    assert factory.CreateBalloonStyle()
--    assert factory.CreateCamera()
--    assert factory.CreateChange()
--    assert factory.CreateCreate()
--    assert factory.CreateData()
--    assert factory.CreateDelete()
--    assert factory.CreateDocument()
--    assert factory.CreateExtendedData()
--    assert factory.CreateFolder()
--    assert factory.CreateGroundOverlay()
--    assert factory.CreateIcon()
--    assert factory.CreateIconStyle()
--    assert factory.CreateImagePyramid()
--    assert factory.CreateItemIcon()
--    assert factory.CreateLabelStyle()
--    assert factory.CreateLatLonAltBox()
--    assert factory.CreateLatLonBox()
--    assert factory.CreateLineString()
--    assert factory.CreateLineStyle()
--    assert factory.CreateLinearRing()
--    assert factory.CreateLink()
--    assert factory.CreateListStyle()
--    assert factory.CreateLocation()
--    assert factory.CreateLod()
--    assert factory.CreateLookAt()
--    assert factory.CreateModel()
--    assert factory.CreateMultiGeometry()
--    assert factory.CreateNetworkLink()
--    assert factory.CreateNetworkLinkControl()
--    assert factory.CreateOrientation()
--    assert factory.CreatePair()
--    assert factory.CreatePhotoOverlay()
--    assert factory.CreatePlacemark()
--    assert factory.CreatePoint()
--    assert factory.CreatePolyStyle()
--    assert factory.CreatePolygon()
--    assert factory.CreateRegion()
--    assert factory.CreateResourceMap()
--    assert factory.CreateScale()
--    assert factory.CreateSchema()
--    assert factory.CreateSchemaData()
--    assert factory.CreateScreenOverlay()
--    assert factory.CreateSimpleData()
--    assert factory.CreateSimpleField()
--    assert factory.CreateSnippet()
--    assert factory.CreateStyle()
--    assert factory.CreateStyleMap()
--    assert factory.CreateTimeSpan()
--    assert factory.CreateTimeStamp()
--    assert factory.CreateUpdate()
--    assert factory.CreateViewVolume()
--    assert factory.CreateHotSpot()
--    assert factory.CreateInnerBoundaryIs()
--    assert factory.CreateKml()
--    assert factory.CreateLinkSnippet()
--    assert factory.CreateOuterBoundaryIs()
--    assert factory.CreateOverlayXY()
--    assert factory.CreateRotationXY()
--    assert factory.CreateScreenXY()
--    assert factory.CreateSize()
--    assert factory.CreateGxAnimatedUpdate()
--    assert factory.CreateGxFlyTo()
--    assert factory.CreateGxLatLonQuad()
--    assert factory.CreateGxPlaylist()
--    assert factory.CreateGxSoundCue()
--    assert factory.CreateGxTimeSpan()
--    assert factory.CreateGxTimeStamp()
--    assert factory.CreateGxTour()
--    assert factory.CreateGxTourControl()
--    assert factory.CreateGxWait()
--
--class FactoryCreateElementByIdTestCase(unittest.TestCase):
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    assert factory.CreateElementById(kmldom.Type_Alias)
--    assert factory.CreateElementById(kmldom.Type_AtomAuthor)
--    assert factory.CreateElementById(kmldom.Type_AtomLink)
--    assert factory.CreateElementById(kmldom.Type_BalloonStyle)
--    assert factory.CreateElementById(kmldom.Type_Camera)
--    assert factory.CreateElementById(kmldom.Type_Change)
--    assert factory.CreateElementById(kmldom.Type_coordinates)
--    assert factory.CreateElementById(kmldom.Type_Create)
--    assert factory.CreateElementById(kmldom.Type_Data)
--    assert factory.CreateElementById(kmldom.Type_Delete)
--    assert factory.CreateElementById(kmldom.Type_Document)
--    assert factory.CreateElementById(kmldom.Type_ExtendedData)
--    assert factory.CreateElementById(kmldom.Type_Folder)
--    assert factory.CreateElementById(kmldom.Type_GroundOverlay)
--    assert factory.CreateElementById(kmldom.Type_Icon)
--    assert factory.CreateElementById(kmldom.Type_IconStyle)
--    assert factory.CreateElementById(kmldom.Type_ImagePyramid)
--    assert factory.CreateElementById(kmldom.Type_ItemIcon)
--    assert factory.CreateElementById(kmldom.Type_LabelStyle)
--    assert factory.CreateElementById(kmldom.Type_LatLonAltBox)
--    assert factory.CreateElementById(kmldom.Type_LatLonBox)
--    assert factory.CreateElementById(kmldom.Type_LineString)
--    assert factory.CreateElementById(kmldom.Type_LineStyle)
--    assert factory.CreateElementById(kmldom.Type_LinearRing)
--    assert factory.CreateElementById(kmldom.Type_Link)
--    assert factory.CreateElementById(kmldom.Type_ListStyle)
--    assert factory.CreateElementById(kmldom.Type_Location)
--    assert factory.CreateElementById(kmldom.Type_Lod)
--    assert factory.CreateElementById(kmldom.Type_LookAt)
--    assert factory.CreateElementById(kmldom.Type_Model)
--    assert factory.CreateElementById(kmldom.Type_MultiGeometry)
--    assert factory.CreateElementById(kmldom.Type_NetworkLink)
--    assert factory.CreateElementById(kmldom.Type_NetworkLinkControl)
--    assert factory.CreateElementById(kmldom.Type_Orientation)
--    assert factory.CreateElementById(kmldom.Type_Pair)
--    assert factory.CreateElementById(kmldom.Type_PhotoOverlay)
--    assert factory.CreateElementById(kmldom.Type_Placemark)
--    assert factory.CreateElementById(kmldom.Type_Point)
--    assert factory.CreateElementById(kmldom.Type_PolyStyle)
--    assert factory.CreateElementById(kmldom.Type_Polygon)
--    assert factory.CreateElementById(kmldom.Type_Region)
--    assert factory.CreateElementById(kmldom.Type_ResourceMap)
--    assert factory.CreateElementById(kmldom.Type_Scale)
--    assert factory.CreateElementById(kmldom.Type_Schema)
--    assert factory.CreateElementById(kmldom.Type_SchemaData)
--    assert factory.CreateElementById(kmldom.Type_ScreenOverlay)
--    assert factory.CreateElementById(kmldom.Type_SimpleData)
--    assert factory.CreateElementById(kmldom.Type_SimpleField)
--    assert factory.CreateElementById(kmldom.Type_Snippet)
--    assert factory.CreateElementById(kmldom.Type_Style)
--    assert factory.CreateElementById(kmldom.Type_StyleMap)
--    assert factory.CreateElementById(kmldom.Type_TimeSpan)
--    assert factory.CreateElementById(kmldom.Type_TimeStamp)
--    assert factory.CreateElementById(kmldom.Type_Update)
--    assert factory.CreateElementById(kmldom.Type_ViewVolume)
--    assert factory.CreateElementById(kmldom.Type_hotSpot)
--    assert factory.CreateElementById(kmldom.Type_innerBoundaryIs)
--    assert factory.CreateElementById(kmldom.Type_kml)
--    assert factory.CreateElementById(kmldom.Type_linkSnippet)
--    assert factory.CreateElementById(kmldom.Type_outerBoundaryIs)
--    assert factory.CreateElementById(kmldom.Type_overlayXY)
--    assert factory.CreateElementById(kmldom.Type_rotationXY)
--    assert factory.CreateElementById(kmldom.Type_screenXY)
--    assert factory.CreateElementById(kmldom.Type_size)
--    assert factory.CreateElementById(kmldom.Type_GxAnimatedUpdate)
--    assert factory.CreateElementById(kmldom.Type_GxFlyTo)
--    assert factory.CreateElementById(kmldom.Type_GxLatLonQuad)
--    assert factory.CreateElementById(kmldom.Type_GxPlaylist)
--    assert factory.CreateElementById(kmldom.Type_GxSoundCue)
--    assert factory.CreateElementById(kmldom.Type_GxTimeSpan)
--    assert factory.CreateElementById(kmldom.Type_GxTimeStamp)
--    assert factory.CreateElementById(kmldom.Type_GxTour)
--    assert factory.CreateElementById(kmldom.Type_GxTourControl)
--    assert factory.CreateElementById(kmldom.Type_GxWait)
--
--class VerySimpleCastTestCase(unittest.TestCase):
--  """ This verifies the existence of the bindings to a few of the casts """
--
--  def runTest(self):
--    """ kmldom.ParseKml() returns an ElementPtr """
--    assert kmldom.AsCoordinates(kmldom.ParseKml('<coordinates/>'))
--    assert not kmldom.AsCoordinates(kmldom.ParseKml('<Document/>'))
--    assert kmldom.AsFolder(kmldom.ParseKml('<Folder/>'))
--    assert not kmldom.AsFolder(kmldom.ParseKml('<Document/>'))
--    assert kmldom.AsKml(kmldom.ParseKml('<kml/>'))
--    assert not kmldom.AsKml(kmldom.ParseKml('<Placemark/>'))
--    assert kmldom.AsPlacemark(kmldom.ParseKml('<Placemark/>'))
--    assert not kmldom.AsPlacemark(kmldom.ParseKml('<NetworkLink/>'))
--    assert kmldom.AsPoint(kmldom.ParseKml('<Point/>'))
--    assert not kmldom.AsPoint(kmldom.ParseKml('<LineString/>'))
--    assert kmldom.AsGxAnimatedUpdate(kmldom.ParseKml('<gx:AnimatedUpdate/>'))
--    assert kmldom.AsGxFlyTo(kmldom.ParseKml('<gx:FlyTo/>'))
--    assert kmldom.AsGxLatLonQuad(kmldom.ParseKml('<gx:LatLonQuad/>'))
--    assert kmldom.AsGxPlaylist(kmldom.ParseKml('<gx:Playlist/>'))
--    assert kmldom.AsGxSoundCue(kmldom.ParseKml('<gx:SoundCue/>'))
--    assert kmldom.AsGxTimeSpan(kmldom.ParseKml('<gx:TimeSpan/>'))
--    assert kmldom.AsGxTimeStamp(kmldom.ParseKml('<gx:TimeStamp/>'))
--    assert kmldom.AsGxTour(kmldom.ParseKml('<gx:Tour/>'))
--    assert kmldom.AsGxTourControl(kmldom.ParseKml('<gx:TourControl/>'))
--    assert kmldom.AsGxWait(kmldom.ParseKml('<gx:Wait/>'))
--
--
--class VerySimpleSimpleChildTestCase(unittest.TestCase):
--  """
--  This tests that an element derived from Feature can properly set/get/clear
--  the simple value <name> element.
--  """
--
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    folder = factory.CreateFolder()
--    assert not folder.has_name()
--    name = 'my name'
--    folder.set_name(name)
--    assert folder.has_name()
--    assert name == folder.get_name()
--    folder.clear_name()
--    assert not folder.has_name()
--
--
--class VerySimpleComplexChildTestCase(unittest.TestCase):
--  """
--  This tests that a complex child of a specific type can be set and
--  cleared as a child of another element.
--  """
--
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    region = factory.CreateRegion()
--    assert not region.has_lod()
--    assert not region.has_latlonaltbox()
--    region.set_lod(factory.CreateLod())
--    region.set_latlonaltbox(factory.CreateLatLonAltBox())
--    assert region.has_lod()
--    assert region.has_latlonaltbox()
--    region.clear_lod()
--    region.clear_latlonaltbox()
--    assert not region.has_lod()
--    assert not region.has_latlonaltbox()
--
--
--class SimpleAtomAuthorTestCase(unittest.TestCase):
--  """ This tests the AtomAuthor element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.atomauthor = self.factory.CreateAtomAuthor()
--
--  def testDefault(self):
--    assert kmldom.Type_AtomAuthor == self.atomauthor.Type()
--    assert self.atomauthor.IsA(kmldom.Type_AtomAuthor)
--    # default state
--    assert not self.atomauthor.has_name()
--    assert "" == self.atomauthor.get_name()
--    assert not self.atomauthor.has_uri()
--    assert "" == self.atomauthor.get_uri()
--    assert not self.atomauthor.has_email()
--    assert "" == self.atomauthor.get_email()
--
--  def testSetClear(self):
--    # name
--    name = 'Scott Turow'
--    self.atomauthor.set_name(name)
--    assert self.atomauthor.has_name()
--    assert name == self.atomauthor.get_name()
--    self.atomauthor.clear_name()
--
--    # uri
--    uri = 'http://www.authorsguild.org/'
--    self.atomauthor.set_uri(uri)
--    assert self.atomauthor.has_uri()
--    assert uri == self.atomauthor.get_uri()
--    self.atomauthor.clear_uri()
--
--    # email
--    email = 'jsmith at example.com'
--    self.atomauthor.set_email(email)
--    assert self.atomauthor.has_email()
--    assert email == self.atomauthor.get_email()
--    self.atomauthor.clear_email()
--
--    self.testDefault()
--
--
--class SimpleAtomLinkTestCase(unittest.TestCase):
--  """ This tests the AtomLink element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.atomlink = self.factory.CreateAtomLink()
--
--  def testDefault(self):
--    assert kmldom.Type_AtomLink == self.atomlink.Type()
--    assert self.atomlink.IsA(kmldom.Type_AtomLink)
--    assert not self.atomlink.has_href()
--    assert "" == self.atomlink.get_href()
--    assert not self.atomlink.has_rel()
--    assert "" == self.atomlink.get_rel()
--    assert not self.atomlink.has_type()
--    assert "" == self.atomlink.get_type()
--    assert not self.atomlink.has_hreflang()
--    assert "" == self.atomlink.get_hreflang()
--    assert not self.atomlink.has_title()
--    assert "" == self.atomlink.get_title()
--    assert not self.atomlink.has_length()
--    assert 0 == self.atomlink.get_length()
--
--  def testSetClear(self):
--    # href
--    href = 'http://example.com'
--    self.atomlink.set_href(href)
--    assert self.atomlink.has_href()
--    assert href == self.atomlink.get_href()
--    self.atomlink.clear_href()
--
--    rel = 'alternate'
--    self.atomlink.set_rel(rel)
--    assert self.atomlink.has_rel()
--    assert rel == self.atomlink.get_rel()
--    self.atomlink.clear_rel()
--
--    type = 'text/html'
--    self.atomlink.set_type(type)
--    assert self.atomlink.has_type()
--    assert type == self.atomlink.get_type()
--    self.atomlink.clear_type()
--
--    hreflang = 'en'
--    self.atomlink.set_hreflang(hreflang)
--    assert self.atomlink.has_hreflang()
--    assert hreflang == self.atomlink.get_hreflang()
--    self.atomlink.clear_hreflang()
--
--    title = 'dive into mark'
--    self.atomlink.set_title(title)
--    assert self.atomlink.has_title()
--    assert title == self.atomlink.get_title()
--    self.atomlink.clear_title()
--
--    length = 42
--    self.atomlink.set_length(length)
--    assert self.atomlink.has_length()
--    assert length == self.atomlink.get_length()
--    self.atomlink.clear_length()
--
--    self.testDefault()
--
--  def testParse(self):
--    # Straight out of RFC 4287
--    link_xml = '<link rel=\"alternate\" type=\"text/html\" '
--    link_xml += 'hreflang=\"en\" href=\"http://example.org/\"/>'
--    self.atomlink = kmldom.ParseKml(link_xml)
--    assert self.atomlink.has_rel()
--    assert self.atomlink.has_type()
--    assert self.atomlink.has_hreflang()
--    assert self.atomlink.has_href()
--    assert not self.atomlink.has_title()
--    assert not self.atomlink.has_length()
--
--    assert self.atomlink.clear_rel()
--    assert self.atomlink.clear_type()
--    assert self.atomlink.clear_hreflang()
--    assert self.atomlink.clear_href()
--
--    self.testDefault()
--
--class SimpleCoordinatesTestCase(unittest.TestCase):
--  """ This tests the methods on Coordinates and Vec3 """
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    coordinates = factory.CreateCoordinates()
--    # Test the Element methods
--    assert kmldom.Type_coordinates == coordinates.Type()
--    assert coordinates.IsA(kmldom.Type_coordinates)
--    # Test the Coordinates methods
--    lon = -123.456
--    lat = 38.765
--    alt = 1001.909
--    assert 0 == coordinates.get_coordinates_array_size()
--    coordinates.add_latlng(lat, lon)
--    assert 1 == coordinates.get_coordinates_array_size()
--    coordinates.add_latlngalt(lat, lon, alt)
--    assert 2 == coordinates.get_coordinates_array_size()
--    vec0 = coordinates.get_coordinates_array_at(0)
--    vec1 = coordinates.get_coordinates_array_at(1)
--    # Test the Vec3 methods
--    assert lon == vec0.get_longitude()
--    assert lat == vec0.get_latitude()
--    assert 0 == vec0.get_altitude()
--    assert lon == vec1.get_longitude()
--    assert lat == vec1.get_latitude()
--    assert alt == vec1.get_altitude()
--
--
--class SimpleVec2TestCase(unittest.TestCase):
--  """ This tests the methods on Vec2 (using HotSpot) """
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    hotspot = factory.CreateHotSpot()
--    # Test the Element methods
--    assert kmldom.Type_hotSpot == hotspot.Type()
--    assert hotspot.IsA(kmldom.Type_hotSpot)
--    # Test the Vec2 methods
--    assert not hotspot.has_x()
--    assert not hotspot.has_xunits()
--    assert not hotspot.has_y()
--    assert not hotspot.has_yunits()
--    x = 128
--    xunits = kmldom.UNITS_PIXELS
--    y = .7
--    yunits = kmldom.UNITS_FRACTION
--    # Test the setters
--    hotspot.set_x(x)
--    hotspot.set_xunits(xunits)
--    hotspot.set_y(y)
--    hotspot.set_yunits(yunits)
--    # Test the has'ers
--    assert hotspot.has_x()
--    assert hotspot.has_xunits()
--    assert hotspot.has_y()
--    assert hotspot.has_yunits()
--    # Test the getters
--    assert x == hotspot.get_x()
--    assert xunits == hotspot.get_xunits()
--    assert y == hotspot.get_y()
--    assert yunits == hotspot.get_yunits()
--    # Test the clear'ers
--    hotspot.clear_x()
--    hotspot.clear_xunits()
--    hotspot.clear_y()
--    hotspot.clear_yunits()
--    assert not hotspot.has_x()
--    assert not hotspot.has_xunits()
--    assert not hotspot.has_y()
--    assert not hotspot.has_yunits()
--
--
--class SimpleObjectTestCase(unittest.TestCase):
--  """ This tests the Object methods (using Placemark) """
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    placemark = factory.CreatePlacemark()
--    # Element methods
--    assert kmldom.Type_Placemark == placemark.Type()
--    assert placemark.IsA(kmldom.Type_Object)
--    assert placemark.IsA(kmldom.Type_Placemark)
--    # Object methods
--    # has_xxx()...
--    assert not placemark.has_id()
--    assert not placemark.has_targetid()
--    id = 'placemark123'
--    targetid ='placemark456'
--    # set_xxx()...
--    placemark.set_id(id)
--    placemark.set_targetid(targetid)
--    assert placemark.has_id()
--    assert placemark.has_targetid()
--    # xxx()...
--    assert id == placemark.get_id()
--    assert targetid == placemark.get_targetid()
--    # clear_xxx()...
--    placemark.clear_id()
--    placemark.clear_targetid()
--    assert not placemark.has_id()
--    assert not placemark.has_targetid()
--
--
--class SimpleFeatureTestCase(unittest.TestCase):
--  """ This tests the Feature methods (using Folder) """
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    folder = factory.CreateFolder()
--
--    # Element methods
--    assert kmldom.Type_Folder == folder.Type()
--    assert folder.IsA(kmldom.Type_Object)
--    assert folder.IsA(kmldom.Type_Feature)
--    assert folder.IsA(kmldom.Type_Folder)
--
--    # TODO: Object methods
--
--    # Feature methods
--    # TODO everything else
--
--    assert not folder.has_phonenumber()
--    phonenumber = '867-5309'
--    folder.set_phonenumber(phonenumber)
--    assert folder.has_phonenumber()
--    assert phonenumber == folder.get_phonenumber()
--
--    assert not folder.has_atomauthor()
--    atomauthor = factory.CreateAtomAuthor()
--    assert atomauthor
--    atom_name = 'D.F. Wallace'
--    atomauthor.set_name(atom_name)
--    folder.set_atomauthor(atomauthor)
--    got_atomauthor = folder.get_atomauthor()
--    assert atom_name == got_atomauthor.get_name()
--
--    assert not folder.has_atomlink()
--    atomlink = factory.CreateAtomLink()
--    assert atomlink
--    atom_href = 'http://infinitesummer.org'
--    atomlink.set_href(atom_href)
--    folder.set_atomlink(atomlink)
--    got_atomlink = folder.get_atomlink()
--    assert atom_href == got_atomlink.get_href()
--
--    assert not folder.has_snippet()
--    folder.set_snippet(factory.CreateSnippet())
--    assert folder.has_snippet()
--    snippet = folder.get_snippet()
--    # Test that the snippet() returns a SnippetPtr
--    assert not snippet.has_maxlines()
--    folder.clear_snippet()
--    assert not folder.has_snippet()
--
--  def testParseAtom(self):
--    kml = ('<Placemark>'
--           '<atom:author>'
--           '<atom:name>D.F. Wallace</atom:name>'
--           '</atom:author>'
--           '<atom:link href="http://infinitesummer.org"></atom:link>'
--           '</Placemark>')
--    root = kmldom.ParseKml(kml)
--    assert root
--    placemark = kmldom.AsPlacemark(root)
--    assert placemark
--    assert placemark.has_atomauthor()
--    author = kmldom.AsAtomAuthor(placemark.get_atomauthor())
--    assert author
--    assert author.has_name();
--    assert "D.F. Wallace" == author.get_name()
--    assert placemark.has_atomlink()
--    link = kmldom.AsAtomLink(placemark.get_atomlink())
--    assert link
--    assert link.has_href()
--    assert "http://infinitesummer.org" == link.get_href()
--
--
--class SimpleRegionTestCase(unittest.TestCase):
--  """ This tests the methods on Region """
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    region = factory.CreateRegion()
--
--    # Element methods
--    assert kmldom.Type_Region == region.Type()
--    assert region.IsA(kmldom.Type_Object)
--    assert region.IsA(kmldom.Type_Region)
--
--    # Object methods
--    # has_xxx()...
--    assert not region.has_id()
--    assert not region.has_targetid()
--    id = 'region123'
--    targetid ='region456'
--    # set_xxx()...
--    region.set_id(id)
--    region.set_targetid(targetid)
--    assert region.has_id()
--    assert region.has_targetid()
--    # xxx()...
--    assert id == region.get_id()
--    assert targetid == region.get_targetid()
--    # clear_xxx()...
--    region.clear_id()
--    region.clear_targetid()
--    assert not region.has_id()
--    assert not region.has_targetid()
--
--    # Region methods
--    assert not region.has_lod()
--    assert not region.has_latlonaltbox()
--    region.set_lod(factory.CreateLod())
--    region.set_latlonaltbox(factory.CreateLatLonAltBox())
--    assert region.has_lod()
--    assert region.has_latlonaltbox()
--    region.clear_lod()
--    region.clear_latlonaltbox()
--    assert not region.has_lod()
--    assert not region.has_latlonaltbox()
--
--
--class SimpleParseTestCase(unittest.TestCase):
--  """ This tests the Parse() function."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.root = kmldom.ParseKml('<kml>'
--                                '<Placemark id=\"pm123\">'
--                                '<name>hi</name>'
--                                '</Placemark>'
--                                '</kml>')
--
--  def tearDown(self):
--    """ KML DOM memory is managed with smart pointers no tear down is needed """
--
--  def testBasic(self):
--    assert self.root
--    kml = kmldom.AsKml(self.root)
--    assert kml
--    assert not kml.has_hint()
--    assert not kml.has_networklinkcontrol()
--    assert kml.has_feature()
--    placemark = kmldom.AsPlacemark(kml.get_feature())
--    assert placemark
--    assert placemark.has_id()
--    assert 'pm123' == placemark.get_id()
--    assert placemark.has_name()
--    assert 'hi' == placemark.get_name()
--    assert not placemark.has_geometry()
--
--
--class SimpleSerializePrettyTestCase(unittest.TestCase):
--  """ This tests the SerializePretty() function."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.kml = self.factory.CreateKml()
--    self.folder = self.factory.CreateFolder()
--    self.folder.set_name('folder')
--    self.placemark = self.factory.CreatePlacemark()
--    self.placemark.set_name('placemark')
--    self.folder.add_feature(self.placemark)
--    self.kml.set_feature(self.folder)
--    self.xml = kmldom.SerializePretty(self.kml)
--
--  def testBasic(self):
--    assert self.xml
--    assert '<kml>\n'\
--           '  <Folder>\n'\
--           '    <name>folder</name>\n'\
--           '    <Placemark>\n'\
--           '      <name>placemark</name>\n'\
--           '    </Placemark>\n'\
--           '  </Folder>\n'\
--           '</kml>\n' == self.xml
--
--
--class SimpleSerializeRawTestCase(unittest.TestCase):
--  """ This tests the SerializeRaw() function."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.kml = self.factory.CreateKml()
--    self.folder = self.factory.CreateFolder()
--    self.folder.set_name('folder')
--    self.placemark = self.factory.CreatePlacemark()
--    self.placemark.set_name('placemark')
--    self.folder.add_feature(self.placemark)
--    self.kml.set_feature(self.folder)
--    self.xml = kmldom.SerializeRaw(self.kml)
--
--  def testBasic(self):
--    assert self.xml
--    assert '<kml>'\
--           '<Folder>'\
--           '<name>folder</name>'\
--           '<Placemark>'\
--           '<name>placemark</name>'\
--           '</Placemark>'\
--           '</Folder>'\
--           '</kml>' == self.xml
--
--
--class SimpleExtendedDataTestCase(unittest.TestCase):
--  """ This tests the ExtendedData element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.extendeddata = self.factory.CreateExtendedData()
--
--  def testDefault(self):
--    assert kmldom.AsExtendedData(self.extendeddata)
--    assert 0 == self.extendeddata.get_data_array_size()
--    assert 0 == self.extendeddata.get_schemadata_array_size()
--
--class DataTestCase(unittest.TestCase):
--  """ This tests the Data element """
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.data = self.factory.CreateData()
--
--  def testDefault(self):
--    assert kmldom.AsData(self.data)
--    assert not self.data.has_name()
--    assert "" == self.data.get_name()
--    assert not self.data.has_displayname()
--    assert "" == self.data.get_displayname()
--    assert not self.data.has_value()
--    assert "" == self.data.get_value()
--
--class SimpleDataTestCase(unittest.TestCase):
--  """ This tests the SimpleData element """
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.simpledata = self.factory.CreateSimpleData()
--
--  def testDefault(self):
--    assert kmldom.AsSimpleData(self.simpledata)
--    assert not self.simpledata.has_name()
--    assert "" == self.simpledata.get_name()
--    assert not self.simpledata.has_text()
--    assert "" == self.simpledata.get_text()
--
--def TestColorStyle(colorstyle):
--  """ This tests the ColorStyle elements of the given ColorStyle-derived
--  element"""
--  # ColorStyle fields
--  # Verify default state of <color>
--  assert not colorstyle.has_color()
--  # Set <color> to a given value and verify get_ and has_
--  color = kmlbase.Color32(0xf0f0c80f)
--  colorstyle.set_color(color)
--  assert colorstyle.has_color()
--  assert color == colorstyle.get_color()
--  # Clear <color> and verify has_
--  colorstyle.clear_color()
--  assert not colorstyle.has_color()
--
--  assert not colorstyle.has_colormode()
--  colormode = kmldom.COLORMODE_RANDOM
--  colorstyle.set_colormode(colormode)
--  assert colorstyle.has_colormode()
--  assert colormode == colorstyle.get_colormode()
--  colorstyle.clear_colormode()
--  assert not colorstyle.has_colormode()
--
--class SimpleIconStyleTestCase(unittest.TestCase):
--  """ This tests the IconStyle element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.iconstyle = self.factory.CreateIconStyle()
--
--  def testDefault(self):
--    assert kmldom.AsObject(self.iconstyle)
--    assert kmldom.AsSubStyle(self.iconstyle)
--    assert kmldom.AsColorStyle(self.iconstyle)
--
--    TestColorStyle(self.iconstyle)
--
--class SimpleKmlTestCase(unittest.TestCase):
--  """ This tests the Kml element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.kml = self.factory.CreateKml()
--
--  def testDefault(self):
--    assert kmldom.Type_kml == self.kml.Type()
--    assert self.kml.IsA(kmldom.Type_kml)
--    assert not self.kml.has_hint()
--    assert "" == self.kml.get_hint()
--    assert not self.kml.has_networklinkcontrol()
--    assert None == self.kml.get_networklinkcontrol()
--    assert not self.kml.has_feature()
--    assert None == self.kml.get_feature()
--
--  def testSetClear(self):
--    hint = 'target=sky'
--    self.kml.set_hint(hint)
--    assert self.kml.has_hint()
--    assert hint == self.kml.get_hint()
--    self.kml.clear_hint()
--    self.testDefault()
--
--class SimpleLabelStyleTestCase(unittest.TestCase):
--  """ This tests the LabelStyle element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.labelstyle = self.factory.CreateLabelStyle()
--
--  def testDefault(self):
--    assert kmldom.AsObject(self.labelstyle)
--    assert kmldom.AsSubStyle(self.labelstyle)
--    assert kmldom.AsColorStyle(self.labelstyle)
--
--    TestColorStyle(self.labelstyle)
--
--class SimpleLineStyleTestCase(unittest.TestCase):
--  """ This tests the LineStyle element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.linestyle = self.factory.CreateLineStyle()
--
--  def testDefault(self):
--    assert kmldom.AsObject(self.linestyle)
--    assert kmldom.AsSubStyle(self.linestyle)
--    assert kmldom.AsColorStyle(self.linestyle)
--
--    TestColorStyle(self.linestyle)
--
--    # LineStyle fields
--    # Verify default state of <width>
--    assert not self.linestyle.has_width()
--    # Set <width> and verify get_ and has_
--    width = 4
--    self.linestyle.set_width(width)
--    assert self.linestyle.has_width()
--    assert width == self.linestyle.get_width()
--    # Clear <width> and verify has_
--    self.linestyle.clear_width()
--    assert not self.linestyle.has_width()
--
--class SimpleListStyleTestCase(unittest.TestCase):
--  """ This tests the ListStyle element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.liststyle = self.factory.CreateListStyle()
--
--  def testDefault(self):
--    assert kmldom.AsObject(self.liststyle)
--    assert kmldom.AsSubStyle(self.liststyle)
--    assert kmldom.AsListStyle(self.liststyle)
--    assert not self.liststyle.has_id()
--    assert 0 == self.liststyle.get_itemicon_array_size()
--
--class SimpleNetworkLinkControlTestCase(unittest.TestCase):
--  """ This tests the NetworkLinkControl element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.nlc = self.factory.CreateNetworkLinkControl()
--
--  def testDefault(self):
--    assert kmldom.Type_NetworkLinkControl == self.nlc.Type()
--    assert self.nlc.IsA(kmldom.Type_NetworkLinkControl)
--    assert not self.nlc.has_minrefreshperiod()
--    assert not self.nlc.has_maxsessionlength()
--    assert not self.nlc.has_cookie()
--    assert not self.nlc.has_message()
--    assert not self.nlc.has_linkname()
--    assert not self.nlc.has_linkdescription()
--    assert not self.nlc.has_linksnippet()
--    assert not self.nlc.has_expires()
--    assert not self.nlc.has_update()
--    assert not self.nlc.has_abstractview()
--
--  def testSetClear(self):
--    minrefreshperiod = 42.123
--    self.nlc.set_minrefreshperiod(minrefreshperiod)
--    assert self.nlc.has_minrefreshperiod()
--    assert minrefreshperiod == self.nlc.get_minrefreshperiod()
--    self.nlc.clear_minrefreshperiod()
--    assert not self.nlc.has_minrefreshperiod()
--
--class SimplePhotoOverlayTestCase(unittest.TestCase):
--  """ This tests the PhotoOverlay element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.photooverlay = self.factory.CreatePhotoOverlay()
--
--  def testDefault(self):
--    assert kmldom.AsObject(self.photooverlay)
--    assert kmldom.AsFeature(self.photooverlay)
--    assert kmldom.AsOverlay(self.photooverlay)
--    assert kmldom.AsPhotoOverlay(self.photooverlay)
--    assert not self.photooverlay.has_id()  # Object-ness
--    assert not self.photooverlay.has_name()  # Feature-ness
--    assert not self.photooverlay.has_icon()  # Overlay-ness
--    assert not self.photooverlay.has_rotation()  # PhotoOverlay-ness...
--    assert not self.photooverlay.has_viewvolume()
--    assert not self.photooverlay.has_imagepyramid()
--    assert not self.photooverlay.has_point()
--    assert not self.photooverlay.has_shape()
--
--
--class SimplePlacemarkTestCase(unittest.TestCase):
--  """ This tests the Placemark element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.placemark = self.factory.CreatePlacemark()
--
--  def testDefault(self):
--    assert kmldom.AsObject(self.placemark)
--    assert kmldom.AsFeature(self.placemark)
--    assert kmldom.AsPlacemark(self.placemark)
--    assert not self.placemark.has_id()  # Object-ness
--    assert not self.placemark.has_name()  # Feature-ness
--    assert not self.placemark.has_geometry()  # Placemark-ness
--
--  def testName(self):
--    name = 'This is my name'
--    self.placemark.set_name(name)
--    assert self.placemark.has_name()
--    assert name == self.placemark.get_name()
--    self.placemark.clear_name()
--    assert not self.placemark.has_name()
--
--
--class SimpleLatLonBoxTestCase(unittest.TestCase):
--  """ This tests the LatLonBox element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.latlonbox = self.factory.CreateLatLonBox()
--
--  def testDefault(self):
--    assert kmldom.AsObject(self.latlonbox)
--    assert kmldom.AsLatLonBox(self.latlonbox)
--    assert not self.latlonbox.has_id()  # Object-ness
--    assert not self.latlonbox.has_north()
--    assert 180.0 == self.latlonbox.get_north()
--    assert not self.latlonbox.has_south()
--    assert -180.0 == self.latlonbox.get_south()
--    assert not self.latlonbox.has_east()
--    assert 180.0 == self.latlonbox.get_east()
--    assert not self.latlonbox.has_west()
--    assert -180.0 == self.latlonbox.get_west()
--
--  def testSetClear(self):
--    north = 42.42
--    south = -11.12
--    east = -80.80
--    west = -123.321
--    self.latlonbox.set_north(north)
--    self.latlonbox.set_south(south)
--    self.latlonbox.set_east(east)
--    self.latlonbox.set_west(west)
--    assert self.latlonbox.has_north()
--    assert north == self.latlonbox.get_north()
--    assert self.latlonbox.has_south()
--    assert south == self.latlonbox.get_south()
--    assert self.latlonbox.has_east()
--    assert east == self.latlonbox.get_east()
--    assert self.latlonbox.has_west()
--    assert west == self.latlonbox.get_west()
--    self.latlonbox.clear_north()
--    self.latlonbox.clear_south()
--    self.latlonbox.clear_east()
--    self.latlonbox.clear_west()
--    # Clearing everything returns to default state
--    self.testDefault()
--
--
--class SimpleLinkTestCase(unittest.TestCase):
--  """ This tests the Link element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.link = self.factory.CreateLink()
--
--  def testDefault(self):
--    assert kmldom.AsObject(self.link)
--    assert kmldom.AsLink(self.link)
--    assert not self.link.has_id()  # Object-ness
--    assert not self.link.has_href()  # Link-ness
--
--  def testSetClear(self):
--    href = 'http://example.com/cool.kml'
--    self.link.set_href(href)
--    assert self.link.has_href()
--    assert href == self.link.get_href()
--    self.link.clear_href()
--    # Clearing everything returns to default state
--    self.testDefault()
--
--
--class SimpleChangeTestCase(unittest.TestCase):
--  """ This tests the Change element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.change = self.factory.CreateChange()
--
--  def testDefault(self):
--    assert kmldom.AsChange(self.change)
--    assert 0 == self.change.get_object_array_size()
--
--  def testAddOneObject(self):
--    placemark = self.factory.CreatePlacemark()
--    name = 'hi'
--    placemark.set_name(name)
--    self.change.add_object(placemark)
--    assert 1 == self.change.get_object_array_size()
--    placemark = kmldom.AsPlacemark(self.change.get_object_array_at(0))
--    assert name == placemark.get_name()
--
--  def testAddNObjects(self):
--    placemark = self.factory.CreatePlacemark()
--    placemark_id = 'pm123'
--    placemark.set_id(placemark_id)
--    self.change.add_object(placemark)
--
--    latlonbox = self.factory.CreateLatLonBox()
--    latlonbox_id = 'llb123'
--    latlonbox.set_id(latlonbox_id)
--    self.change.add_object(latlonbox)
--
--    location = self.factory.CreateLocation()
--    location_id = 'location123'
--    location.set_id(location_id)
--    self.change.add_object(location)
--
--    """ Verify there are 3 items in the array in the proper order."""
--    assert 3 == self.change.get_object_array_size()
--    assert placemark_id == self.change.get_object_array_at(0).get_id()
--    assert latlonbox_id == self.change.get_object_array_at(1).get_id()
--    assert location_id == self.change.get_object_array_at(2).get_id()
--
--
--class SimpleCreateTestCase(unittest.TestCase):
--  """ This tests the Create element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.create = self.factory.CreateCreate()
--
--  def testDefault(self):
--    assert kmldom.AsCreate(self.create)
--    assert 0 == self.create.get_container_array_size()
--
--  def testAddOneContainer(self):
--    folder = self.factory.CreateFolder()
--    target_folder_id = 'target-folder'
--    folder.set_targetid(target_folder_id)
--    self.create.add_container(folder)
--    assert 1 == self.create.get_container_array_size()
--    folder = kmldom.AsFolder(self.create.get_container_array_at(0))
--    assert target_folder_id == folder.get_targetid()
--
--  def testAddNContainers(self):
--    folder = self.factory.CreateFolder()
--    folder_a_id = 'folder-a'
--    folder.set_id(folder_a_id)
--    self.create.add_container(folder)
--
--    document = self.factory.CreateFolder()
--    document_a_id = 'container-a'
--    document.set_id(document_a_id)
--    self.create.add_container(document)
--
--    document = self.factory.CreateFolder()
--    document_b_id = 'container-b'
--    document.set_id(document_b_id)
--    self.create.add_container(document)
--
--    folder = self.factory.CreateFolder()
--    folder_b_id = 'folder-b'
--    folder.set_id(folder_b_id)
--    self.create.add_container(folder)
--
--    # Verify there are 4 items in the array in the proper order.
--    assert 4 == self.create.get_container_array_size()
--    assert folder_a_id == self.create.get_container_array_at(0).get_id()
--    assert document_a_id == self.create.get_container_array_at(1).get_id()
--    assert document_b_id == self.create.get_container_array_at(2).get_id()
--    assert folder_b_id == self.create.get_container_array_at(3).get_id()
--
--
--class SimpleDeleteTestCase(unittest.TestCase):
--  """ This tests the Delete element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.delete = self.factory.CreateDelete()
--
--  def testDefault(self):
--    assert kmldom.AsDelete(self.delete)
--    assert 0 == self.delete.get_feature_array_size()
--
--  def testAddOneFeature(self):
--    groundoverlay = self.factory.CreateGroundOverlay()
--    target_groundoverlay_id = 'target-groundoverlay'
--    groundoverlay.set_targetid(target_groundoverlay_id)
--    self.delete.add_feature(groundoverlay)
--    assert 1 == self.delete.get_feature_array_size()
--    groundoverlay = kmldom.AsGroundOverlay(self.delete.get_feature_array_at(0))
--    assert target_groundoverlay_id == groundoverlay.get_targetid()
--
--  def testAddNFeatures(self):
--    document = self.factory.CreateDocument()
--    document_id = 'document-id'
--    document.set_id(document_id)
--    self.delete.add_feature(document)
--
--    folder = self.factory.CreateFolder()
--    folder_id = 'folder-id'
--    folder.set_id(folder_id)
--    self.delete.add_feature(folder)
--
--    groundoverlay = self.factory.CreateGroundOverlay()
--    groundoverlay_id = 'groundoverlay-id'
--    groundoverlay.set_id(groundoverlay_id)
--    self.delete.add_feature(groundoverlay)
--
--    networklink = self.factory.CreateNetworkLink()
--    networklink_id = 'networklink-id'
--    networklink.set_id(networklink_id)
--    self.delete.add_feature(networklink)
--
--    placemark = self.factory.CreatePlacemark()
--    placemark_id = 'placemark-id'
--    placemark.set_id(placemark_id)
--    self.delete.add_feature(placemark)
--
--    photooverlay = self.factory.CreatePhotoOverlay()
--    photooverlay_id = 'photooverlay-id'
--    photooverlay.set_id(photooverlay_id)
--    self.delete.add_feature(photooverlay)
--
--    screenoverlay = self.factory.CreateScreenOverlay()
--    screenoverlay_id = 'screenoverlay-id'
--    screenoverlay.set_id(screenoverlay_id)
--    self.delete.add_feature(screenoverlay)
--
--    # Verify there are 7 items in the array in the proper order.
--    assert 7 == self.delete.get_feature_array_size()
--    assert document_id == self.delete.get_feature_array_at(0).get_id()
--    assert folder_id == self.delete.get_feature_array_at(1).get_id()
--    assert groundoverlay_id == self.delete.get_feature_array_at(2).get_id()
--    assert networklink_id == self.delete.get_feature_array_at(3).get_id()
--    assert placemark_id == self.delete.get_feature_array_at(4).get_id()
--    assert photooverlay_id == self.delete.get_feature_array_at(5).get_id()
--    assert screenoverlay_id == self.delete.get_feature_array_at(6).get_id()
--
--
--class SimpleDocumentTestCase(unittest.TestCase):
--  """ This tests the Document element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.document = self.factory.CreateDocument()
--
--  def testDefault(self):
--    assert kmldom.AsObject(self.document)
--    assert kmldom.AsFeature(self.document)
--    assert kmldom.AsContainer(self.document)
--    assert kmldom.AsDocument(self.document)
--    assert not self.document.has_id()  # Object-ness
--    assert not self.document.has_name()  # Feature-ness
--    assert 0 == self.document.get_feature_array_size()  # Container-ness
--    assert 0 == self.document.get_schema_array_size()  # Document-ness
--    assert 0 == self.document.get_styleselector_array_size()  # Document-ness
--
--
--class SimpleMultiGeometryTestCase(unittest.TestCase):
--  """  This tests the MultiGeometry element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.multigeometry = self.factory.CreateMultiGeometry()
--
--  def testDefault(self):
--    assert kmldom.AsObject(self.multigeometry)
--    assert kmldom.AsGeometry(self.multigeometry)
--    assert kmldom.AsMultiGeometry(self.multigeometry)
--    assert not self.multigeometry.has_id()  # Object-ness
--    # MultiGeometry-ness
--    assert 0 == self.multigeometry.get_geometry_array_size()
--
--
--class SimpleOuterBoundaryIsTestCase(unittest.TestCase):
--  """  TODO: This tests the OuterBoundaryIs element."""
--
--
--class SimpleInnerBoundaryIsTestCase(unittest.TestCase):
--  """  TODO: This tests the InnerBoundaryIs element."""
--
--
--class SimplePolygonTestCase(unittest.TestCase):
--  """  TODO: This tests the Polygon element."""
--
--class SimplePolyStyleTestCase(unittest.TestCase):
--  """ This tests the PolyStyle element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.polystyle = self.factory.CreatePolyStyle()
--
--  def testDefault(self):
--    assert kmldom.AsObject(self.polystyle)
--    assert kmldom.AsSubStyle(self.polystyle)
--    assert kmldom.AsColorStyle(self.polystyle)
--
--    TestColorStyle(self.polystyle)
--
--    # PolyStyle fields
--    # Verify default state of <fill>
--    assert not self.polystyle.has_fill()
--    # Set <fill> and verify get_ and has_
--    fill = True
--    self.polystyle.set_fill(fill)
--    assert self.polystyle.has_fill()
--    assert fill == self.polystyle.get_fill()
--    # Clear <fill> and verify has_
--    self.polystyle.clear_fill()
--    assert not self.polystyle.has_fill()
--
--    # Verify default state of <outline>
--    assert not self.polystyle.has_outline()
--    # Set <outline> and verify get_ and has_
--    outline = True
--    self.polystyle.set_outline(outline)
--    assert self.polystyle.has_outline()
--    assert outline == self.polystyle.get_outline()
--    # Clear <outline> and verify has_
--    self.polystyle.clear_outline()
--    assert not self.polystyle.has_outline()
--
--class SimpleResourceMapTestCase(unittest.TestCase):
--  """ This tests the ResourceMap element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.resourcemap = self.factory.CreateResourceMap()
--
--  def testDefault(self):
--    assert kmldom.AsObject(self.resourcemap)
--    assert kmldom.AsResourceMap(self.resourcemap)
--    assert not self.resourcemap.has_id()
--    assert 0 == self.resourcemap.get_alias_array_size()
--
--
--class SimpleSchemaTestCase(unittest.TestCase):
--  """ This tests the Schema element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.schema = self.factory.CreateSchema()
--
--  def testDefault(self):
--    assert kmldom.AsSchema(self.schema)
--    assert not self.schema.has_name()
--    assert not self.schema.has_id()
--    assert 0 == self.schema.get_simplefield_array_size()
--
--
--class SimpleSchemaDataTestCase(unittest.TestCase):
--  """ This tests the SchemaData element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.schemadata = self.factory.CreateSchemaData()
--
--  def testDefault(self):
--    assert kmldom.AsObject(self.schemadata)
--    assert kmldom.AsSchemaData(self.schemadata)
--    assert not self.schemadata.has_schemaurl()
--    assert "" == self.schemadata.get_schemaurl()
--    assert not self.schemadata.has_id()
--    assert 0 == self.schemadata.get_simpledata_array_size()
--
--
--class SimpleSimpleFieldTestCase(unittest.TestCase):
--  """ This tests the SimpleField element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.simplefield = self.factory.CreateSimpleField()
--
--  def testDefault(self):
--    assert kmldom.AsSimpleField(self.simplefield)
--    assert not self.simplefield.has_type()
--    assert not self.simplefield.has_name()
--    assert not self.simplefield.has_displayname()
--
--
--class SimpleStyleMapTestCase(unittest.TestCase):
--  """  TODO: This tests the StyleMap element."""
--
--
--class SimpleUpdateTestCase(unittest.TestCase):
--  """ This tests the Update element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.update = self.factory.CreateUpdate()
--
--  def testDefault(self):
--    assert kmldom.AsUpdate(self.update)
--    assert 0 == self.update.get_updateoperation_array_size()
--
--  def testTargetHref(self):
--    assert not self.update.has_targethref()
--    assert '' == self.update.get_targethref()
--    href = 'mycoolhref'
--    self.update.set_targethref(href)
--    assert self.update.has_targethref()
--    assert href == self.update.get_targethref()
--
--class SimpleStyleMapTestCase(unittest.TestCase):
--  """  TODO: This tests the StyleMap element."""
--
--class SimpleIconStyleIconTestCase(unittest.TestCase):
--  """ This tests the IconStyleIcon element."""
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.iconstyleicon= self.factory.CreateIconStyleIcon()
--
--  def testBasic(self):
--    assert not self.iconstyleicon.has_href() # default state
--    assert '' == self.iconstyleicon.get_href()
--    href = 'http://blah.blah'
--    self.iconstyleicon.set_href(href)
--    assert self.iconstyleicon.has_href()
--    assert href == self.iconstyleicon.get_href()
--    self.iconstyleicon.clear_href()
--    assert not self.iconstyleicon.has_href() # back in default state
--    assert '' == self.iconstyleicon.get_href()
--
--class GxExtensionsTestCase(unittest.TestCase):
--  """ This tests the gx: elements extended by Google Earth 5.0
--      These are basic subsets of the full suite of tests in the main
--      C++ code and verify the basic operation of the API """
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--
--  # Feature's gx:balloonVisibility.
--  def testGxBalloonVisibility(self):
--    placemark = self.factory.CreatePlacemark()
--    assert not placemark.has_gx_balloonvisibility()
--    assert False == placemark.get_gx_balloonvisibility()
--    placemark.set_gx_balloonvisibility(True)
--    assert placemark.has_gx_balloonvisibility()
--    assert True == placemark.get_gx_balloonvisibility()
--    expected = (
--        '<Placemark>\n'
--        '  <gx:balloonVisibility>1</gx:balloonVisibility>\n'
--        '</Placemark>\n')
--    assert expected == kmldom.SerializePretty(placemark)
--
--  # <gx:TimeStamp> and <gx:TimeSpan> in AbstractView.
--  def testGxTimePrimitives(self):
--    lookat = self.factory.CreateLookAt()
--    assert not lookat.has_gx_timeprimitive()
--    assert None == lookat.get_gx_timeprimitive()
--    timespan = self.factory.CreateGxTimeSpan()
--    lookat.set_gx_timeprimitive(timespan)
--    assert lookat.has_gx_timeprimitive()
--    expected_lookat = (
--        '<LookAt>\n'
--        '  <gx:TimeSpan/>\n'
--        '</LookAt>\n')
--    assert expected_lookat == kmldom.SerializePretty(lookat)
--
--    camera = self.factory.CreateCamera()
--    assert not camera.has_gx_timeprimitive()
--    assert None == camera.get_gx_timeprimitive()
--    timestamp = self.factory.CreateGxTimeStamp()
--    camera.set_gx_timeprimitive(timestamp)
--    assert camera.has_gx_timeprimitive()
--    expected_camera = (
--        '<Camera>\n'
--        '  <gx:TimeStamp/>\n'
--        '</Camera>\n')
--    assert expected_camera == kmldom.SerializePretty(camera)
--
--  # <gx:altitudeMode>clampToSeaFloor|relativeToSeaFloor.
--  def testGxAltitudeModes(self):
--    llab = self.factory.CreateLatLonAltBox()
--    assert not llab.has_gx_altitudemode()
--    assert kmldom.GX_ALTITUDEMODE_CLAMPTOSEAFLOOR == llab.get_gx_altitudemode()
--    altmode_rel = kmldom.GX_ALTITUDEMODE_RELATIVETOSEAFLOOR
--    llab.set_gx_altitudemode(altmode_rel)
--    assert llab.has_gx_altitudemode()
--    assert altmode_rel == llab.get_gx_altitudemode()
--    expected = (
--        '<LatLonAltBox>\n'
--        '  <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>\n'
--        '</LatLonAltBox>\n')
--    assert expected == kmldom.SerializePretty(llab)
--    # TODO: Camera, GroundOverlay, LineString, LineStyle, LinearRing, LookAt,
--    #       Model, Point, Polygon.
--
--  # <gx:LatLonQuad>
--  def testGxLatLonQuad(self):
--    groundoverlay = self.factory.CreateGroundOverlay()
--    assert False == groundoverlay.has_gx_latlonquad()
--    assert None == groundoverlay.get_gx_latlonquad()
--    llq = self.factory.CreateGxLatLonQuad()
--    coords = self.factory.CreateCoordinates()
--    llq.set_coordinates(coords)
--    groundoverlay.set_gx_latlonquad(llq)
--    assert True == groundoverlay.has_gx_latlonquad()
--    expected = (
--        '<GroundOverlay>\n'
--        '  <gx:LatLonQuad>\n'
--        '    <coordinates/>\n'
--        '  </gx:LatLonQuad>\n'
--        '</GroundOverlay>\n')
--    assert expected == kmldom.SerializePretty(groundoverlay)
--
--  # <gx:Tour>
--  def testGxTour(self):
--    tour = self.factory.CreateGxTour()
--    assert not tour.has_gx_playlist()
--    assert None == tour.get_gx_playlist()
--    tour.set_gx_playlist(self.factory.CreateGxPlaylist())
--    assert tour.has_gx_playlist()
--
--  # <gx:Playlist>
--  def testGxPlaylist(self):
--    playlist = self.factory.CreateGxPlaylist()
--    assert 0 == playlist.get_gx_tourprimitive_array_size()
--    playlist.add_gx_tourprimitive(self.factory.CreateGxFlyTo())
--    assert 1 == playlist.get_gx_tourprimitive_array_size()
--
--  # <gx:AnimatedUpdate>
--  def testGxAnimatedUpdate(self):
--    animatedupdate = self.factory.CreateGxAnimatedUpdate()
--    assert False == animatedupdate.has_gx_duration()
--    assert 0.0 == animatedupdate.get_gx_duration()
--    animatedupdate.set_gx_duration(1.0)
--    assert animatedupdate.has_gx_duration()
--    assert 1.0 == animatedupdate.get_gx_duration()
--
--    assert False == animatedupdate.has_update()
--    assert None == animatedupdate.get_update()
--    animatedupdate.set_update(self.factory.CreateUpdate())
--    assert animatedupdate.has_update()
--
--  # <gx:FlyTo>
--  def testGxFlyTo(self):
--    flyto = self.factory.CreateGxFlyTo()
--    assert False == flyto.has_gx_duration()
--    assert 0.0 == flyto.get_gx_duration()
--    flyto.set_gx_duration(1.0)
--    assert flyto.has_gx_duration()
--    assert 1.0 == flyto.get_gx_duration()
--
--    assert False == flyto.has_gx_flytomode()
--    assert kmldom.GX_FLYTOMODE_BOUNCE == flyto.get_gx_flytomode()
--    flyto.set_gx_flytomode(kmldom.GX_FLYTOMODE_SMOOTH)
--    assert flyto.has_gx_flytomode()
--    assert kmldom.GX_FLYTOMODE_SMOOTH == flyto.get_gx_flytomode()
--
--  # <gx:Wait>
--  def testGxWait(self):
--    wait = self.factory.CreateGxWait()
--    assert False == wait.has_gx_duration()
--    assert 0.0 == wait.get_gx_duration()
--    wait.set_gx_duration(1.0)
--    assert wait.has_gx_duration()
--    assert 1.0 == wait.get_gx_duration()
--
--  # <gx:SoundCue>
--  def testGxSoundCue(self):
--    soundcue = self.factory.CreateGxSoundCue()
--    assert False == soundcue.has_href()
--    assert '' == soundcue.get_href()
--    href = 'some href'
--    soundcue.set_href(href)
--    assert soundcue.has_href()
--    assert href == soundcue.get_href()
--
--  # <gx:TourControl>
--  def testGxTourControl(self):
--    tourcontrol = self.factory.CreateGxTourControl()
--    assert False == tourcontrol.has_gx_playmode()
--    assert kmldom.GX_PLAYMODE_PAUSE == tourcontrol.get_gx_playmode()
--    tourcontrol.set_gx_playmode(kmldom.GX_PLAYMODE_PAUSE)
--    assert tourcontrol.has_gx_playmode()
--    assert kmldom.GX_PLAYMODE_PAUSE == tourcontrol.get_gx_playmode()
--
--  # Parse and serialization of gx:Tour and friends.
--  def testGxTourParseSerialize(self):
--    kml = (
--        '<gx:Tour>'
--        '<gx:Playlist>'
--        '<gx:SoundCue><href>x</href></gx:SoundCue>'
--        '<gx:FlyTo>'
--        '<gx:duration>1.0</gx:duration>'
--        '</gx:FlyTo>'
--        '<gx:AnimatedUpdate>'
--        '<gx:duration>2.0</gx:duration>'
--        '<Update/>'
--        '</gx:AnimatedUpdate>'
--        '<gx:TourControl><gx:playMode>pause</gx:playMode></gx:TourControl>'
--        '<gx:Wait><gx:duration>3.0</gx:duration></gx:Wait>'
--        '</gx:Playlist>'
--        '</gx:Tour>')
--    assert kmldom.ParseKml(kml)
--    assert kmldom.AsGxTour(kmldom.ParseKml(kml))
--    tour = kmldom.AsGxTour(kmldom.ParseKml(kml))
--    assert tour.has_gx_playlist()
--    playlist = tour.get_gx_playlist()
--    assert 5 == playlist.get_gx_tourprimitive_array_size()
--    soundcue = kmldom.AsGxSoundCue(playlist.get_gx_tourprimitive_array_at(0))
--    assert soundcue
--    assert soundcue.has_href()
--    assert 'x' == soundcue.get_href()
--    flyto = kmldom.AsGxFlyTo(playlist.get_gx_tourprimitive_array_at(1))
--    assert flyto
--    assert flyto.has_gx_duration()
--    assert 1.0 == flyto.get_gx_duration()
--    au = kmldom.AsGxAnimatedUpdate(playlist.get_gx_tourprimitive_array_at(2))
--    assert au
--    assert au.has_gx_duration()
--    assert 2.0 == au.get_gx_duration()
--    assert au.has_update()
--    assert kmldom.AsUpdate(au.get_update())
--    tc = kmldom.AsGxTourControl(playlist.get_gx_tourprimitive_array_at(3))
--    assert tc
--    assert tc.has_gx_playmode()
--    assert kmldom.GX_PLAYMODE_PAUSE == tc.get_gx_playmode()
--    wait = kmldom.AsGxWait(playlist.get_gx_tourprimitive_array_at(4))
--    assert wait
--    assert wait.has_gx_duration()
--    assert 3.0 == wait.get_gx_duration()
--
--class ItemIconTestCase(unittest.TestCase):
--  """ This verifies the behavior of ItemIcon and its children """
--
--  def setUp(self):
--    self.factory = kmldom.KmlFactory_GetFactory()
--    self.itemicon = self.factory.CreateItemIcon()
--
--  def testDefaults(self):
--    assert not self.itemicon.has_state()
--    assert 1 == self.itemicon.get_state_array_size()
--    assert kmldom.ITEMICONSTATE_OPEN == self.itemicon.get_state_array_at(0)
--    assert not self.itemicon.has_href()
--    assert "" == self.itemicon.get_href()
--
--  def testState(self):
--    state_open = kmldom.ITEMICONSTATE_OPEN
--    state_error = kmldom.ITEMICONSTATE_ERROR
--    state_fetching0 = kmldom.ITEMICONSTATE_FETCHING0
--
--    self.itemicon.clear_state()
--    assert 0 == self.itemicon.get_state_array_size()
--    self.itemicon.add_state(state_error)
--    assert 1 == self.itemicon.get_state_array_size()
--    assert state_error == self.itemicon.get_state_array_at(0)
--    self.itemicon.add_state(state_fetching0)
--    assert 2 == self.itemicon.get_state_array_size()
--    assert state_fetching0 == self.itemicon.get_state_array_at(1)
--
--
--def suite():
--  suite = unittest.TestSuite()
--  suite.addTest(VerySimpleParseTestCase())
--  suite.addTest(VerySimpleSerializeTestCase())
--  suite.addTest(SimpleFactoryTestCase())
--  suite.addTest(FactoryCreateElementByIdTestCase())
--  suite.addTest(VerySimpleCastTestCase())
--  suite.addTest(VerySimpleSimpleChildTestCase())
--  suite.addTest(VerySimpleComplexChildTestCase())
--  suite.addTest(SimpleAtomAuthorTestCase('testDefault'))
--  suite.addTest(SimpleAtomAuthorTestCase('testSetClear'))
--  suite.addTest(SimpleAtomLinkTestCase('testDefault'))
--  suite.addTest(SimpleAtomLinkTestCase('testSetClear'))
--  suite.addTest(SimpleCoordinatesTestCase())
--  suite.addTest(SimpleVec2TestCase())
--  suite.addTest(SimpleObjectTestCase())
--  suite.addTest(SimpleFeatureTestCase())
--  suite.addTest(SimpleFeatureTestCase('testParseAtom'))
--  suite.addTest(SimpleRegionTestCase())
--  suite.addTest(SimpleParseTestCase('testBasic'))
--  suite.addTest(SimpleSerializePrettyTestCase('testBasic'))
--  suite.addTest(SimpleSerializeRawTestCase('testBasic'))
--  suite.addTest(SimpleExtendedDataTestCase('testDefault'))
--  suite.addTest(DataTestCase('testDefault'))
--  suite.addTest(SimpleDataTestCase('testDefault'))
--  suite.addTest(SimpleIconStyleTestCase('testDefault'))
--  suite.addTest(SimpleKmlTestCase('testDefault'))
--  suite.addTest(SimpleKmlTestCase('testSetClear'))
--  suite.addTest(SimpleNetworkLinkControlTestCase('testDefault'))
--  suite.addTest(SimpleNetworkLinkControlTestCase('testSetClear'))
--  suite.addTest(SimpleLabelStyleTestCase('testDefault'))
--  suite.addTest(SimpleLineStyleTestCase('testDefault'))
--  suite.addTest(SimpleListStyleTestCase('testDefault'))
--  suite.addTest(SimplePhotoOverlayTestCase('testDefault'))
--  suite.addTest(SimplePlacemarkTestCase('testDefault'))
--  suite.addTest(SimplePlacemarkTestCase('testName'))
--  suite.addTest(SimplePolyStyleTestCase('testDefault'))
--  suite.addTest(SimpleLatLonBoxTestCase('testDefault'))
--  suite.addTest(SimpleLatLonBoxTestCase('testSetClear'))
--  suite.addTest(SimpleLinkTestCase('testDefault'))
--  suite.addTest(SimpleLinkTestCase('testSetClear'))
--  suite.addTest(SimpleChangeTestCase('testDefault'))
--  suite.addTest(SimpleChangeTestCase('testAddOneObject'))
--  suite.addTest(SimpleChangeTestCase('testAddNObjects'))
--  suite.addTest(SimpleCreateTestCase('testDefault'))
--  suite.addTest(SimpleCreateTestCase('testAddOneContainer'))
--  suite.addTest(SimpleCreateTestCase('testAddNContainers'))
--  suite.addTest(SimpleDeleteTestCase('testAddOneFeature'))
--  suite.addTest(SimpleDeleteTestCase('testAddNFeatures'))
--  suite.addTest(SimpleDocumentTestCase('testDefault'))
--  suite.addTest(SimpleResourceMapTestCase('testDefault'))
--  suite.addTest(SimpleMultiGeometryTestCase('testDefault'))
--  suite.addTest(SimpleSchemaTestCase('testDefault'))
--  suite.addTest(SimpleSchemaDataTestCase('testDefault'))
--  suite.addTest(SimpleSimpleFieldTestCase('testDefault'))
--  suite.addTest(SimpleUpdateTestCase('testDefault'))
--  suite.addTest(SimpleUpdateTestCase('testTargetHref'))
--  suite.addTest(SimpleIconStyleIconTestCase('testBasic'))
--  suite.addTest(GxExtensionsTestCase('testGxBalloonVisibility'))
--  suite.addTest(GxExtensionsTestCase('testGxTimePrimitives'))
--  suite.addTest(GxExtensionsTestCase('testGxAltitudeModes'))
--  suite.addTest(GxExtensionsTestCase('testGxLatLonQuad'))
--  suite.addTest(GxExtensionsTestCase('testGxTour'))
--  suite.addTest(GxExtensionsTestCase('testGxPlaylist'))
--  suite.addTest(GxExtensionsTestCase('testGxAnimatedUpdate'))
--  suite.addTest(GxExtensionsTestCase('testGxFlyTo'))
--  suite.addTest(GxExtensionsTestCase('testGxWait'))
--  suite.addTest(GxExtensionsTestCase('testGxSoundCue'))
--  suite.addTest(GxExtensionsTestCase('testGxTourControl'))
--  suite.addTest(GxExtensionsTestCase('testGxTourParseSerialize'))
--  suite.addTest(ItemIconTestCase('testDefaults'))
--  suite.addTest(ItemIconTestCase('testState'))
--  return suite
--
--
--runner = unittest.TextTestRunner()
--runner.run(suite())
---- a/src/swig/kmlengine_test.py
-+++ /dev/null
-@@ -1,283 +0,0 @@
--#!/usr/bin/env python
--
--# Copyright 2008, Google Inc. All rights reserved.
--#
--# Redistribution and use in source and binary forms, with or without 
--# modification, are permitted provided that the following conditions are met:
--#
--#  1. Redistributions of source code must retain the above copyright notice, 
--#     this list of conditions and the following disclaimer.
--#  2. Redistributions in binary form must reproduce the above copyright notice,
--#     this list of conditions and the following disclaimer in the documentation
--#     and/or other materials provided with the distribution.
--#  3. Neither the name of Google Inc. nor the names of its contributors may be
--#     used to endorse or promote products derived from this software without
--#     specific prior written permission.
--#
--# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
--# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
--# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
--# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
--# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
--# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
--# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
--# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
--# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
--# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--
--"""
--This file contains unit tests for the KML Engine Python SWIG bindings.
--"""
--
--import unittest
--import kmldom
--import kmlengine
--
--# These VerySimple tests really only verify that the function/class exists.
--
--class VerySimpleKmlDomTestCase(unittest.TestCase):
--  """ Verify very simple KML DOM usage """
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    placemark = factory.CreatePlacemark()
--    name = 'hi'
--    placemark.set_name(name)
--    assert name == placemark.get_name()
--
--class VerySimpleBboxTestCase(unittest.TestCase):
--  """ Verify very simple usage of class Bbox """
--  def runTest(self):
--    bbox = kmlengine.Bbox(38, 36, -120, -122)
--    assert bbox.Contains(37, -121)
--
--class AllMethodsBboxTestCase(unittest.TestCase):
--  """ Verify basic usage of each method of kmlengine.Bbox """
--  def runTest(self):
--    bbox = kmlengine.Bbox()
--    assert -180.0 == bbox.get_north()
--    assert 180.0 == bbox.get_south()
--    assert -180.0 == bbox.get_east()
--    assert 180.0 == bbox.get_west()
--
--    bbox_a = kmlengine.Bbox(10.1, -11.2, 99.99, -88.88)
--    bbox.ExpandFromBbox(bbox_a)
--    assert 10.1 == bbox.get_north()
--    assert -11.2 == bbox.get_south()
--    assert 99.99 == bbox.get_east()
--    assert -88.88 == bbox.get_west()
--
--    bbox.ExpandLatitude(20.2)
--    assert 20.2 == bbox.get_north()
--    assert -11.2 == bbox.get_south()
--    bbox.ExpandLatitude(-20.2)
--    assert 20.2 == bbox.get_north()
--    assert -20.2 == bbox.get_south()
--    bbox.ExpandLongitude(101.101)
--    assert 101.101 == bbox.get_east()
--    assert -88.88 == bbox.get_west()
--    bbox.ExpandLongitude(-101.101)
--    assert 101.101 == bbox.get_east()
--    assert -101.101 == bbox.get_west()
--
--    bbox.ExpandLatLon(30.3, -111.222);
--    assert 30.3 == bbox.get_north()
--    assert -20.2 == bbox.get_south()
--    assert 101.101 == bbox.get_east()
--    assert -111.222 == bbox.get_west()
--
--class VerySimpleCloneTestCase(unittest.TestCase):
--  """ Verify very simple usage of Clone() """
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    placemark = factory.CreatePlacemark()
--    name = 'hi'
--    placemark.set_name(name)
--    clone_element = kmlengine.Clone(placemark)
--    assert clone_element
--    clone_placemark = kmldom.AsPlacemark(clone_element)
--    assert clone_placemark
--    assert name == clone_placemark.get_name()
--    # Change the name in the original
--    new_name = 'new name'
--    placemark.set_name(new_name)
--    # Verify that the clone still has the old name
--    assert name == clone_placemark.get_name()
--
--class VerySimpleGetFeatureLatLonTestCase(unittest.TestCase):
--  def runTest(self):
--    kml = '<Placemark>' \
--            '<Point><coordinates>1,2,3</coordinates></Point>' \
--          '</Placemark>'
--    element = kmldom.ParseKml(kml)
--    assert element
--    feature = kmldom.AsFeature(element)
--    assert feature
--    status,lat,lon = kmlengine.GetFeatureLatLon(feature)
--    assert True == status
--    assert 1 == lon
--    assert 2 == lat
--
--class VerySimpleGetFeatureBoundsTestCase(unittest.TestCase):
--  def runTest(self):
--    kml = '<Placemark>' \
--            '<LineString><coordinates>1,2 -1,-2</coordinates></LineString>' \
--          '</Placemark>'
--    element = kmldom.ParseKml(kml)
--    assert element
--    feature = kmldom.AsFeature(element)
--    assert feature
--    bbox = kmlengine.Bbox()
--    status = kmlengine.GetFeatureBounds(feature, bbox)
--    assert status
--    assert 2 == bbox.get_north()
--    assert -2 == bbox.get_south()
--    assert 1 == bbox.get_east()
--    assert -1 == bbox.get_west()
--
--class VerySimpleGetRootFeatureTestCase(unittest.TestCase):
--  """ Verify very simple usage of GetRootFeature() """
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    placemark = factory.CreatePlacemark()
--    feature = kmlengine.GetRootFeature(placemark)
--    assert feature
--    assert kmldom.AsPlacemark(feature)
--
--class VerySimpleKmzSplitTestCase(unittest.TestCase):
--  def runTest(self):
--    kml_url = 'http://foo.com/goo.kmz/bar.jpg'
--    status,kmz_url,kmz_path = kmlengine.KmzSplit(kml_url)
--    assert True == status
--    assert 'http://foo.com/goo.kmz' == kmz_url
--    assert 'bar.jpg' == kmz_path
--
--class VerySimpleSplitUriTestCase(unittest.TestCase):
--  def runTest(self):
--    status,scheme,host,port,path,query,fragment = \
--       kmlengine.SplitUri('http://host.com:82/a/b/c.kml?p=q#id')
--    assert True == status
--    assert 'http' == scheme
--    assert 'host.com' == host
--    assert 'a/b/c.kml' == path
--    assert 'p=q' == query
--    assert 'id' == fragment
--
--class BasicKmlFileCreateFromParseTestCase(unittest.TestCase):
--  """ Verify very simple usage of the KmlFile::CreateFromParse() method """
--  def runTest(self):
--    id = 'pm123'
--    kml = '<Placemark id="%s"><name>hello</name></Placemark>' % id
--    kmlfile,errors = kmlengine.KmlFile.CreateFromParse(kml)
--    assert kmlfile
--    object = kmlfile.GetObjectById(id)
--    assert object
--    placemark = kmldom.AsPlacemark(object)
--    assert placemark
--    assert placemark.has_id()
--    assert id == placemark.get_id()
--
--class KmlFileCreateFromParseOfBasicElementTestCase(unittest.TestCase):
--  def runTest(self):
--    kmlfile,errors = kmlengine.KmlFile.CreateFromParse('<kml/>')
--    assert kmlfile
--    root = kmlfile.get_root()
--    assert kmldom.Type_kml == root.Type()
--
--class BasicKmlFileCreateFromImportTestCase(unittest.TestCase):
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    placemark = factory.CreatePlacemark()
--    id = 'placemark123'
--    name = 'some name'
--    placemark.set_id(id)
--    placemark.set_name(name)
--    folder = factory.CreateFolder()
--    folder.add_feature(placemark)
--    kmlfile = kmlengine.KmlFile.CreateFromImport(folder)
--    assert kmlfile
--    object = kmlfile.GetObjectById(id)
--    assert object
--    placemark = kmldom.AsPlacemark(object)
--    assert placemark
--    assert placemark.has_id()
--    assert id == placemark.get_id()
--    assert placemark.has_name()
--    assert name == placemark.get_name()
--
--class KmlFileCreateFromImportOfBasicElementTestCase(unittest.TestCase):
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    # TODO: This crashes CreateFromImport as do all non-Object complex elements
--    # kml = factory.CreateKml()
--    # This returns an ElementPtr for the given element and works fine in
--    # CreateFromImport:
--    kml_as_element = factory.CreateElementById(kmldom.Type_kml)
--    kml = kmldom.AsKml(kml_as_element)
--    kml.set_feature(factory.CreatePlacemark())
--    kmlfile = kmlengine.KmlFile.CreateFromImport(kml_as_element)
--    assert kmlfile
--    root = kmlfile.get_root()
--    assert root
--    kml = kmldom.AsKml(root)
--    assert kml
--    assert kml.has_feature()
--    placemark = kmldom.AsPlacemark(kml.get_feature())
--    assert placemark
--
--class BasicKmlFileSerializeToStringTestCase(unittest.TestCase):
--  def runTest(self):
--    factory = kmldom.KmlFactory_GetFactory()
--    kml = factory.CreateElementById(kmldom.Type_kml)
--    assert kml
--    kmlfile = kmlengine.KmlFile.CreateFromImport(kml)
--    assert kmlfile
--    (ok, xml) = kmlfile.SerializeToString()
--    assert ok
--    kExpectedXml = '<?xml version="1.0" encoding="utf-8"?>\n' \
--        '<kml xmlns="http://www.opengis.net/kml/2.2"/>\n'
--    assert kExpectedXml == xml
--
--class BasicKmzFileTestCase(unittest.TestCase):
--  def runTest(self):
--    kmz_filepath = '../../testdata/kmz/model-macky.kmz'
--    kmzfile = kmlengine.KmzFile.OpenFromFile(kmz_filepath)
--    assert kmzfile
--    (ok, kml) = kmzfile.ReadKml()
--    assert ok
--    (kmlfile,errors) = kmlengine.KmlFile.CreateFromParse(kml)
--    assert kmlfile
--    root = kmldom.AsKml(kmlfile.get_root())
--    assert root
--    placemark = kmldom.AsPlacemark(root.get_feature())
--    assert placemark
--    assert 'SketchUp Model of Macky Auditorium' == placemark.get_name()
--    assert placemark.has_geometry()
--    model = kmldom.AsModel(placemark.get_geometry())
--    assert model
--    assert 'model_4' == model.get_id()
--    (ok, dae) = kmzfile.ReadFile('geometry/CU-Macky.dae')
--    assert ok
--    assert 268477 == len(dae)
--
--def suite():
--  suite = unittest.TestSuite()
--  suite.addTest(VerySimpleKmlDomTestCase())
--  suite.addTest(VerySimpleBboxTestCase())
--  suite.addTest(AllMethodsBboxTestCase())
--  suite.addTest(VerySimpleCloneTestCase())
--  suite.addTest(VerySimpleGetRootFeatureTestCase())
--  suite.addTest(VerySimpleGetFeatureLatLonTestCase())
--  suite.addTest(VerySimpleGetFeatureBoundsTestCase())
--  suite.addTest(VerySimpleKmzSplitTestCase())
--  suite.addTest(VerySimpleSplitUriTestCase())
--  suite.addTest(KmlFileCreateFromParseOfBasicElementTestCase())
--  suite.addTest(BasicKmlFileCreateFromParseTestCase())
--  suite.addTest(BasicKmlFileCreateFromImportTestCase())
--  suite.addTest(KmlFileCreateFromImportOfBasicElementTestCase())
--  suite.addTest(BasicKmlFileSerializeToStringTestCase())
--  suite.addTest(BasicKmzFileTestCase())
--  return suite
--
--
--runner = unittest.TextTestRunner()
--runner.run(suite())

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/libkml.git



More information about the Pkg-grass-devel mailing list