- Added runtime and compiletime version information

diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 5f73112..7c1fa72 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -26,3 +26,4 @@
 add_test_suite(dhm)
 add_test_suite(x509parse)
 add_test_suite(debug)
+add_test_suite(version)
diff --git a/tests/Makefile b/tests/Makefile
index ee6507a..c90d8b3 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -14,7 +14,8 @@
 		test_suite_hmac_shax	test_suite_mdx		\
 		test_suite_mpi			test_suite_rsa		\
 		test_suite_shax			test_suite_x509parse\
-		test_suite_xtea			test_suite_debug
+		test_suite_xtea			test_suite_debug	\
+		test_suite_version
 
 .SILENT:
 
@@ -80,6 +81,10 @@
 	echo   "  CC    	$@.c"
 	$(CC) $(CFLAGS) $(OFLAGS) $@.c	$(LDFLAGS) -o $@
 
+test_suite_version: test_suite_version.c ../library/libpolarssl.a
+	echo   "  CC    	$@.c"
+	$(CC) $(CFLAGS) $(OFLAGS) $@.c	$(LDFLAGS) -o $@
+
 clean:
 	rm -f $(APPS) *.c
 
diff --git a/tests/suites/test_suite_version.data b/tests/suites/test_suite_version.data
new file mode 100644
index 0000000..6d75b0f
--- /dev/null
+++ b/tests/suites/test_suite_version.data
@@ -0,0 +1,5 @@
+Check compiletime library version
+check_compiletime_version:"0.13.1"
+
+Check runtime library version
+check_runtime_version:"0.13.1"
diff --git a/tests/suites/test_suite_version.function b/tests/suites/test_suite_version.function
new file mode 100644
index 0000000..958857e
--- /dev/null
+++ b/tests/suites/test_suite_version.function
@@ -0,0 +1,60 @@
+BEGIN_HEADER
+#include <polarssl/version.h>
+END_HEADER
+
+BEGIN_CASE
+check_compiletime_version:version_str
+{
+    char build_str[100];
+    char build_str_full[100];
+    unsigned int build_int;
+
+    memset( build_str, 0, 100 );
+    memset( build_str_full, 0, 100 );
+
+    snprintf (build_str, 100, "%d.%d.%d", POLARSSL_VERSION_MAJOR,
+        POLARSSL_VERSION_MINOR, POLARSSL_VERSION_PATCH );
+
+    snprintf( build_str_full, 100, "PolarSSL %d.%d.%d", POLARSSL_VERSION_MAJOR,
+        POLARSSL_VERSION_MINOR, POLARSSL_VERSION_PATCH );
+
+    build_int = POLARSSL_VERSION_MAJOR << 24 |
+            POLARSSL_VERSION_MINOR << 16 |
+            POLARSSL_VERSION_PATCH << 8;
+
+    TEST_ASSERT( build_int == POLARSSL_VERSION_NUMBER );
+    TEST_ASSERT( strcmp( build_str, POLARSSL_VERSION_STRING ) == 0 );
+    TEST_ASSERT( strcmp( build_str_full, POLARSSL_VERSION_STRING_FULL ) == 0 );
+    TEST_ASSERT( strcmp( {version_str}, POLARSSL_VERSION_STRING ) == 0 );
+}
+END_CASE
+
+BEGIN_CASE
+check_runtime_version:version_str
+{
+    char build_str[100];
+    char get_str[100];
+    char build_str_full[100];
+    char get_str_full[100];
+    unsigned int get_int;
+
+    memset( build_str, 0, 100 );
+    memset( get_str, 0, 100 );
+    memset( build_str_full, 0, 100 );
+    memset( get_str_full, 0, 100 );
+
+    get_int = version_get_number();
+    version_get_string( get_str );
+    version_get_string_full( get_str_full );
+
+    snprintf( build_str, 100, "%d.%d.%d",
+        (get_int >> 24) & 0xFF,
+        (get_int >> 16) & 0xFF,
+        (get_int >> 8) & 0xFF );
+    snprintf( build_str_full, 100, "PolarSSL %s", {version_str} );
+
+    TEST_ASSERT( strcmp( build_str, {version_str} ) == 0 );
+    TEST_ASSERT( strcmp( build_str_full, get_str_full ) == 0 );
+    TEST_ASSERT( strcmp( {version_str}, get_str ) == 0 );
+}
+END_CASE