diff --git a/test/msl_verify.cpp b/test/msl_verify.cpp
new file mode 100644
index 0000000..5fdf505
--- /dev/null
+++ b/test/msl_verify.cpp
@@ -0,0 +1,78 @@
+#include "msl_verify.hpp"
+
+#include <gtest/gtest.h>
+
+namespace openpower
+{
+namespace software
+{
+namespace image
+{
+
+class MinimumShipLevelTest : public testing::Test
+{
+  protected:
+    std::string minShipLevel = "v.2.2";
+    std::unique_ptr<MinimumShipLevel> minimumShipLevel;
+
+    virtual void SetUp()
+    {
+        minimumShipLevel = std::make_unique<MinimumShipLevel>(minShipLevel);
+    }
+};
+
+TEST_F(MinimumShipLevelTest, compare)
+{
+    MinimumShipLevel::Version min;
+    MinimumShipLevel::Version actual;
+
+    min = {3, 5, 7};
+
+    // actual = min
+    actual = {3, 5, 7};
+    EXPECT_EQ(0, minimumShipLevel->compare(actual, min));
+
+    // actual < min
+    actual = {3, 5, 6};
+    EXPECT_EQ(-1, minimumShipLevel->compare(actual, min));
+    actual = {3, 4, 7};
+    EXPECT_EQ(-1, minimumShipLevel->compare(actual, min));
+    actual = {2, 5, 7};
+    EXPECT_EQ(-1, minimumShipLevel->compare(actual, min));
+
+    // actual > min
+    actual = {3, 5, 8};
+    EXPECT_EQ(1, minimumShipLevel->compare(actual, min));
+    actual = {3, 6, 7};
+    EXPECT_EQ(1, minimumShipLevel->compare(actual, min));
+    actual = {4, 5, 7};
+    EXPECT_EQ(1, minimumShipLevel->compare(actual, min));
+}
+
+TEST_F(MinimumShipLevelTest, parse)
+{
+    MinimumShipLevel::Version version;
+    std::string versionStr;
+
+    versionStr = "nomatch-1.2.3-abc";
+    minimumShipLevel->parse(versionStr, version);
+    EXPECT_EQ(0, version.major);
+    EXPECT_EQ(0, version.minor);
+    EXPECT_EQ(0, version.rev);
+
+    versionStr = "xyzformat-v1.2.3-4.5abc";
+    minimumShipLevel->parse(versionStr, version);
+    EXPECT_EQ(1, version.major);
+    EXPECT_EQ(2, version.minor);
+    EXPECT_EQ(3, version.rev);
+
+    versionStr = "xyformat-system-v6.7-abc";
+    minimumShipLevel->parse(versionStr, version);
+    EXPECT_EQ(6, version.major);
+    EXPECT_EQ(7, version.minor);
+    EXPECT_EQ(0, version.rev);
+}
+
+} // namespace image
+} // namespace software
+} // namespace openpower
