diff --git a/test/openpower-pels/Makefile.include b/test/openpower-pels/Makefile.include
index 48e1872..51f3ecc 100644
--- a/test/openpower-pels/Makefile.include
+++ b/test/openpower-pels/Makefile.include
@@ -4,6 +4,7 @@
 	additional_data_test \
 	bcd_time_test \
 	log_id_test \
+	mtms_test \
 	pel_test \
 	pel_manager_test \
 	private_header_test \
@@ -102,4 +103,12 @@
 	$(pel_objects) \
 	$(top_builddir)/extensions/openpower-pels/manager.o \
 	$(top_builddir)/extensions/openpower-pels/repository.o
-pel_manager_test_LDFLAGS = $(test_ldflags)
\ No newline at end of file
+pel_manager_test_LDFLAGS = $(test_ldflags)
+
+mtms_test_SOURCES = %reldir%/mtms_test.cpp
+mtms_test_CPPFLAGS = $(test_cppflags)
+mtms_test_CXXFLAGS = $(test_cxxflags)
+mtms_test_LDADD = \
+	$(test_ldadd) \
+	$(top_builddir)/extensions/openpower-pels/mtms.o
+mtms_test_LDFLAGS = $(test_ldflags)
diff --git a/test/openpower-pels/mtms_test.cpp b/test/openpower-pels/mtms_test.cpp
new file mode 100644
index 0000000..999100f
--- /dev/null
+++ b/test/openpower-pels/mtms_test.cpp
@@ -0,0 +1,109 @@
+#include "extensions/openpower-pels/mtms.hpp"
+
+#include <gtest/gtest.h>
+
+using namespace openpower::pels;
+
+TEST(MTMSTest, SizeTest)
+{
+    EXPECT_EQ(MTMS::flattenedSize(), 20);
+}
+
+TEST(MTMSTest, ConstructorTest)
+{
+    {
+        std::string tm{"TTTT-MMM"};
+        std::string sn{"123456789ABC"};
+
+        MTMS mtms{tm, sn};
+
+        std::array<uint8_t, 8> t{'T', 'T', 'T', 'T', '-', 'M', 'M', 'M'};
+        EXPECT_EQ(t, mtms.machineTypeAndModel());
+
+        std::array<uint8_t, 12> s{'1', '2', '3', '4', '5', '6',
+                                  '7', '8', '9', 'A', 'B', 'C'};
+        EXPECT_EQ(s, mtms.machineSerialNumber());
+    }
+
+    {
+        // too long- truncate it
+        std::string tm{"TTTT-MMME"};
+        std::string sn{"123456789ABCE"};
+
+        MTMS mtms{tm, sn};
+
+        std::array<uint8_t, 8> t{'T', 'T', 'T', 'T', '-', 'M', 'M', 'M'};
+        EXPECT_EQ(t, mtms.machineTypeAndModel());
+
+        std::array<uint8_t, 12> s{'1', '2', '3', '4', '5', '6',
+                                  '7', '8', '9', 'A', 'B', 'C'};
+        EXPECT_EQ(s, mtms.machineSerialNumber());
+    }
+
+    {
+        // short
+        std::string tm{"TTTT"};
+        std::string sn{"1234"};
+
+        MTMS mtms{tm, sn};
+
+        std::array<uint8_t, 8> t{'T', 'T', 'T', 'T', 0, 0, 0, 0};
+        EXPECT_EQ(t, mtms.machineTypeAndModel());
+
+        std::array<uint8_t, 12> s{'1', '2', '3', '4', 0, 0, 0, 0, 0, 0, 0, 0};
+        EXPECT_EQ(s, mtms.machineSerialNumber());
+    }
+
+    {
+        // Stream constructor
+        std::vector<uint8_t> data{'T', 'T', 'T', 'T', '-', 'M', 'M',
+                                  'M', '1', '2', '3', '4', '5', '6',
+                                  '7', '8', '9', 'A', 'B', 'C'};
+        Stream stream{data};
+
+        MTMS mtms{stream};
+
+        std::array<uint8_t, 8> t{'T', 'T', 'T', 'T', '-', 'M', 'M', 'M'};
+        EXPECT_EQ(t, mtms.machineTypeAndModel());
+
+        std::array<uint8_t, 12> s{'1', '2', '3', '4', '5', '6',
+                                  '7', '8', '9', 'A', 'B', 'C'};
+        EXPECT_EQ(s, mtms.machineSerialNumber());
+    }
+}
+
+TEST(MTMSTest, OperatorExtractTest)
+{
+    std::string tm{"TTTT-MMM"};
+    std::string sn{"123456789ABC"};
+
+    MTMS mtms{tm, sn};
+
+    // Check that we can extract the same data
+    std::vector<uint8_t> data;
+    Stream stream{data};
+    stream << mtms;
+
+    std::vector<uint8_t> expected{'T', 'T', 'T', 'T', '-', 'M', 'M',
+                                  'M', '1', '2', '3', '4', '5', '6',
+                                  '7', '8', '9', 'A', 'B', 'C'};
+    EXPECT_EQ(expected, data);
+}
+
+TEST(MTMSTest, OperatorInsertTest)
+{
+    std::vector<uint8_t> data{'T', 'T', 'T', 'T', '-', 'M', 'M', 'M', '1', '2',
+                              '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C'};
+    Stream stream{data};
+
+    // Check that when we insert data it is what's expected
+    MTMS mtms;
+    stream >> mtms;
+
+    std::array<uint8_t, 8> t{'T', 'T', 'T', 'T', '-', 'M', 'M', 'M'};
+    EXPECT_EQ(t, mtms.machineTypeAndModel());
+
+    std::array<uint8_t, 12> s{'1', '2', '3', '4', '5', '6',
+                              '7', '8', '9', 'A', 'B', 'C'};
+    EXPECT_EQ(s, mtms.machineSerialNumber());
+}
