Add SafeBuffer test
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Wed, 9 Jul 2014 13:30:40 +0000 (15:30 +0200)
committerBartlomiej Grzelewski <b.grzelewski@samsung.com>
Fri, 12 Sep 2014 12:59:27 +0000 (14:59 +0200)
Change-Id: I0bae252c754ebcf99b5206ad37a634447e611392

tests/CMakeLists.txt
tests/test_safe-buffer.cpp [new file with mode: 0644]

index 00430ca..4356512 100644 (file)
@@ -31,6 +31,7 @@ SET(TEST_MERGED_SOURCES
     ${KEY_MANAGER_TEST_MERGED_SRC}/test_db_crypto.cpp
     ${KEY_MANAGER_TEST_MERGED_SRC}/test_sql.cpp
     ${KEY_MANAGER_TEST_MERGED_SRC}/test-key-provider.cpp
+    ${KEY_MANAGER_TEST_MERGED_SRC}/test_safe-buffer.cpp
     ${KEY_MANAGER_PATH}/service/db-crypto.cpp
     ${KEY_MANAGER_PATH}/service/key-provider.cpp
 
diff --git a/tests/test_safe-buffer.cpp b/tests/test_safe-buffer.cpp
new file mode 100644 (file)
index 0000000..8ccbe42
--- /dev/null
@@ -0,0 +1,64 @@
+#include <boost/test/unit_test.hpp>
+
+#include <test_common.h>
+
+#include <ckm/ckm-raw-buffer.h>
+
+BOOST_GLOBAL_FIXTURE(TestConfig)
+
+using namespace CKM;
+
+namespace {
+    const RawBuffer::size_type LEN = 10;
+
+    struct Item
+    {
+        Item(size_t a) : mA(a) {}
+        ~Item() {}
+
+        size_t mA;
+    };
+} // namespace anonymous
+
+BOOST_AUTO_TEST_SUITE(SAFE_BUFFER_TEST)
+
+/*
+ * Test for SafeBuffer. Checks if memory occupied by the buffer is wiped after
+ * it's deleted
+ */
+BOOST_AUTO_TEST_CASE(SafeBufferTest_uc) {
+    const unsigned char* data = NULL;
+    RawBuffer::size_type i = 0;
+    {
+        RawBuffer buffer;
+        for (i=0;i<LEN;++i)
+            buffer.push_back(i);
+
+        data = buffer.data();
+
+        for (i=0;i<LEN;++i)
+            BOOST_CHECK(data[i] == i);
+    }
+    for (i=0;i<LEN;++i)
+        BOOST_CHECK(data[i] == 0);
+}
+
+BOOST_AUTO_TEST_CASE(SafeBufferTest_item) {
+    const unsigned char* data = NULL;
+    RawBuffer::size_type i = 0;
+    {
+        SafeBuffer<Item>::Type buffer;
+        for (i=0;i<LEN;++i)
+            buffer.push_back(i);
+
+        for (i=0;i<LEN;++i) {
+            BOOST_CHECK(buffer[i].mA == i);
+        }
+
+        data = reinterpret_cast<unsigned char*>(buffer.data());
+    }
+    for (i=0;i<LEN*sizeof(Item);++i)
+        BOOST_CHECK(data[i] == 0);
+}
+
+BOOST_AUTO_TEST_SUITE_END()