diff --git a/test/cmp_data_types/meson.build b/test/cmp_data_types/meson.build
new file mode 100644
index 0000000000000000000000000000000000000000..8de2ef86510c269ed1c3888c806c0a630133ec1c
--- /dev/null
+++ b/test/cmp_data_types/meson.build
@@ -0,0 +1,12 @@
+test_case = files('test_cmp_data_types.c')
+test_runner = test_runner_generator.process(test_case)
+
+test_cmp_icu = executable('test_cmp_data_types',
+   test_case, test_runner,
+   include_directories : incdir,
+   link_with : cmp_lib,
+   dependencies : unity_dep,
+   build_by_default : false
+)
+
+test('Compression Data Types Unit Tests', test_cmp_icu)
diff --git a/test/cmp_data_types/test_cmp_data_types.c b/test/cmp_data_types/test_cmp_data_types.c
new file mode 100644
index 0000000000000000000000000000000000000000..881f46a250f904a1fab14a685b7c2b315fc5553b
--- /dev/null
+++ b/test/cmp_data_types/test_cmp_data_types.c
@@ -0,0 +1,26 @@
+#include <stdint.h>
+
+#include "unity.h"
+#include "cmp_data_types.h"
+
+/**
+ * @test cmp_cal_size_of_data
+ */
+
+void test_cmp_cal_size_of_data(void)
+{
+	unsigned int s;
+
+	s = cmp_cal_size_of_data(1, DATA_TYPE_IMAGETTE);
+	TEST_ASSERT_EQUAL_UINT(sizeof(uint16_t), s);
+
+	s = cmp_cal_size_of_data(1, DATA_TYPE_F_FX);
+	TEST_ASSERT_EQUAL_UINT(sizeof(struct f_fx)+MULTI_ENTRY_HDR_SIZE, s);
+
+	/* overflow tests */
+	s = cmp_cal_size_of_data(0x1999999A, DATA_TYPE_BACKGROUND);
+	TEST_ASSERT_EQUAL_UINT(0, s);
+	s = cmp_cal_size_of_data(0x19999999, DATA_TYPE_BACKGROUND);
+	TEST_ASSERT_EQUAL_UINT(0, s);
+}
+