diff --git a/Tests/Module/GenerateExportHeader/CMakeLists.txt b/Tests/Module/GenerateExportHeader/CMakeLists.txt
index fee836e1df6c9f6d69fd2c78a90680d923fd675c..3edb548e6956aeaef0815eaa4967f26bca2c85f7 100644
--- a/Tests/Module/GenerateExportHeader/CMakeLists.txt
+++ b/Tests/Module/GenerateExportHeader/CMakeLists.txt
@@ -152,6 +152,8 @@ add_subdirectory(lib_shared_and_static)
 add_subdirectory(lib_shared_and_statictest)
 
 add_subdirectory(override_symbol)
+add_subdirectory(nodeprecated)
+add_subdirectory(prefix)
 
 if (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} MATCHES Clang))
   # We deliberately call deprecated methods, and test for that elsewhere.
diff --git a/Tests/Module/GenerateExportHeader/nodeprecated/CMakeLists.txt b/Tests/Module/GenerateExportHeader/nodeprecated/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..aeeb13a85d024031fa15e973aed0f6f4b8094e5f
--- /dev/null
+++ b/Tests/Module/GenerateExportHeader/nodeprecated/CMakeLists.txt
@@ -0,0 +1,26 @@
+cmake_minimum_required(VERSION 2.8)
+
+project(nodeprecated)
+
+execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/nodeprecated_defined)
+execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/nodeprecated_not_defined)
+
+configure_file(CMakeLists.txt.in ${CMAKE_CURRENT_BINARY_DIR}/nodeprecated_not_defined/CMakeLists.txt)
+set(DEFINE_NO_DEPRECATED DEFINE_NO_DEPRECATED)
+configure_file(CMakeLists.txt.in ${CMAKE_CURRENT_BINARY_DIR}/nodeprecated_defined/CMakeLists.txt)
+
+try_compile(Result ${CMAKE_CURRENT_BINARY_DIR}/nodeprecated_not_defined_build
+  ${CMAKE_CURRENT_BINARY_DIR}/nodeprecated_not_defined
+  nodeprecated_test
+  OUTPUT_VARIABLE Out
+)
+
+test_pass(Result "Failed to build without no-deprecated define")
+
+try_compile(Result ${CMAKE_CURRENT_BINARY_DIR}/nodeprecated_defined_build
+  ${CMAKE_CURRENT_BINARY_DIR}/nodeprecated_defined
+  nodeprecated_test
+  OUTPUT_VARIABLE Out
+)
+
+test_fail(Result "Built even with no-deprecated define")
\ No newline at end of file
diff --git a/Tests/Module/GenerateExportHeader/nodeprecated/CMakeLists.txt.in b/Tests/Module/GenerateExportHeader/nodeprecated/CMakeLists.txt.in
new file mode 100644
index 0000000000000000000000000000000000000000..d8dc482f3eea27b2eb78952f24414bd27c6fd77e
--- /dev/null
+++ b/Tests/Module/GenerateExportHeader/nodeprecated/CMakeLists.txt.in
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.8)
+
+project(nodeprecated_test)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+include(GenerateExportHeader)
+
+add_library(nodeprecatedlib SHARED someclass.cpp)
+
+generate_export_header(nodeprecatedlib @DEFINE_NO_DEPRECATED@)
+
+add_executable(nodeprecatedconsumer main.cpp)
+
+target_link_libraries(nodeprecatedconsumer nodeprecatedlib)
diff --git a/Tests/Module/GenerateExportHeader/nodeprecated/src/main.cpp b/Tests/Module/GenerateExportHeader/nodeprecated/src/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..445a6520414909457258d184ace33fa721707981
--- /dev/null
+++ b/Tests/Module/GenerateExportHeader/nodeprecated/src/main.cpp
@@ -0,0 +1,9 @@
+
+#include "someclass.h"
+
+int main(int, char**)
+{
+  SomeClass sc;
+  sc.someMethod();
+  return 0;
+}
\ No newline at end of file
diff --git a/Tests/Module/GenerateExportHeader/nodeprecated/src/someclass.cpp b/Tests/Module/GenerateExportHeader/nodeprecated/src/someclass.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a3f41111cf50e782e99f148ba59af55825f8d9a7
--- /dev/null
+++ b/Tests/Module/GenerateExportHeader/nodeprecated/src/someclass.cpp
@@ -0,0 +1,9 @@
+
+#include "someclass.h"
+
+#ifndef NODEPRECATEDLIB_NO_DEPRECATED
+void SomeClass::someMethod() const
+{
+
+}
+#endif
diff --git a/Tests/Module/GenerateExportHeader/nodeprecated/src/someclass.h b/Tests/Module/GenerateExportHeader/nodeprecated/src/someclass.h
new file mode 100644
index 0000000000000000000000000000000000000000..312a177f185c631dc728fcf39af63dfb6e47ddf8
--- /dev/null
+++ b/Tests/Module/GenerateExportHeader/nodeprecated/src/someclass.h
@@ -0,0 +1,10 @@
+
+#include "nodeprecatedlib_export.h"
+
+class NODEPRECATEDLIB_EXPORT SomeClass
+{
+public:
+#ifndef NODEPRECATEDLIB_NO_DEPRECATED
+  void someMethod() const;
+#endif
+};
diff --git a/Tests/Module/GenerateExportHeader/prefix/CMakeLists.txt b/Tests/Module/GenerateExportHeader/prefix/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bd64df283ccdf83fbab9433d7d6f51a6a42a72a5
--- /dev/null
+++ b/Tests/Module/GenerateExportHeader/prefix/CMakeLists.txt
@@ -0,0 +1,15 @@
+project(use_prefix)
+
+set(use_prefix_lib_SRCS
+  useprefixclass.cpp
+)
+
+add_library(use_prefix_lib SHARED useprefixclass.cpp)
+
+generate_export_header(use_prefix_lib
+  PREFIX_NAME MYPREFIX_
+)
+
+add_executable(use_prefix main.cpp)
+
+target_link_libraries(use_prefix use_prefix_lib)
\ No newline at end of file
diff --git a/Tests/Module/GenerateExportHeader/prefix/main.cpp b/Tests/Module/GenerateExportHeader/prefix/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d04ae3c9c729de8b40a388350ba8ae24b513d5d1
--- /dev/null
+++ b/Tests/Module/GenerateExportHeader/prefix/main.cpp
@@ -0,0 +1,8 @@
+
+#include "useprefixclass.h"
+
+int main(int argc, char **argv)
+{
+  UsePrefixClass upc;
+  return upc.someMethod();
+}
\ No newline at end of file
diff --git a/Tests/Module/GenerateExportHeader/prefix/useprefixclass.cpp b/Tests/Module/GenerateExportHeader/prefix/useprefixclass.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8337ab845c89afcc4548b86eae0c2ffc2176969e
--- /dev/null
+++ b/Tests/Module/GenerateExportHeader/prefix/useprefixclass.cpp
@@ -0,0 +1,7 @@
+
+#include "useprefixclass.h"
+
+int UsePrefixClass::someMethod() const
+{
+  return 0;
+}
\ No newline at end of file
diff --git a/Tests/Module/GenerateExportHeader/prefix/useprefixclass.h b/Tests/Module/GenerateExportHeader/prefix/useprefixclass.h
new file mode 100644
index 0000000000000000000000000000000000000000..f5e31b507d7fe0a0f535131935cdd2bc027deeea
--- /dev/null
+++ b/Tests/Module/GenerateExportHeader/prefix/useprefixclass.h
@@ -0,0 +1,13 @@
+
+#ifndef USEPREFIXCLASS_H
+#define USEPREFIXCLASS_H
+
+#include "use_prefix_lib_export.h"
+
+class MYPREFIX_USE_PREFIX_LIB_EXPORT UsePrefixClass
+{
+public:
+  int someMethod() const;
+};
+
+#endif