diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3d79b7d5c40a9962e0e4a02aa4a49ada370f66aa..1767ba8413b9595d56016e843b24a38ca2afbf71 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -49,4 +49,11 @@ set(HEADER
 include_directories(include/)
 add_library(memory-faucet ${SOURCES} ${HEADER})
 target_include_directories(memory-faucet PUBLIC ${memory_processing_SOURCE_DIR}/include)
-target_link_libraries(memory-faucet memproc)
\ No newline at end of file
+target_link_libraries(memory-faucet memproc)
+
+enable_testing()
+
+add_executable(test1 test.cpp)
+target_link_libraries(test1 memory-faucet)
+
+add_test(NAME Test1 COMMAND ./test1)
\ No newline at end of file
diff --git a/test.cpp b/test.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6f1466fd25ea6786e238e730823e4381e089618e
--- /dev/null
+++ b/test.cpp
@@ -0,0 +1,39 @@
+#include "memory-faucet.h"
+#include <cstdio>
+
+int main(void)
+{
+    const size_t required_size1 = sizeof(float) * 100;
+    const size_t required_size2 = sizeof(float) * 1;
+    const size_t required_size3 = sizeof(float) * 10000;
+    const size_t required_size4 = sizeof(float) * 1000;
+    const size_t required_size5 = sizeof(float) * 100000;
+    const size_t required_size6 = sizeof(float) * 100000000;
+    
+    memBuf<MemType::CPU> Buf1(required_size1);
+    memBuf<MemType::CPU> Buf2(required_size2);
+    memBuf<MemType::CPU, buf_choose_policy::find_best_unsorted> Buf3(required_size3);
+    memBuf<MemType::CPU, buf_choose_policy::find_best_unsorted> Buf4(required_size4);
+    memBuf<MemType::CPU> Buf5(required_size5);
+    memBuf<MemType::CPU> Buf6(required_size6);
+#ifdef INCLUDE_CUDA
+    const size_t required_size7 = sizeof(float) * 10000000;
+    memBuf<MemType::GPU> Buf7(required_size7);
+#endif
+
+    float* ptr1 = static_cast<float*>(Buf1.ptr());
+    float* ptr2 = static_cast<float*>(Buf2.ptr());
+    float* ptr4 = static_cast<float*>(Buf4.ptr());
+    float* ptr6 = static_cast<float*>(Buf6.ptr());
+
+    ptr2[0] = float(2);
+
+    for (int i = 0; i < 100; i++)
+    {
+        ptr1[i] = float(i);
+        ptr4[i] = float(i);
+        ptr6[i] = float(i);
+    }
+
+    return 0;
+}