1 #include "msl_verify.hpp"
2 
3 #include <gtest/gtest.h>
4 
5 namespace openpower
6 {
7 namespace software
8 {
9 namespace image
10 {
11 
12 class MinimumShipLevelTest : public testing::Test
13 {
14   protected:
15     std::string minShipLevel = "v.2.2";
16     std::unique_ptr<MinimumShipLevel> minimumShipLevel;
17 
18     virtual void SetUp()
19     {
20         minimumShipLevel = std::make_unique<MinimumShipLevel>(minShipLevel);
21     }
22 };
23 
24 TEST_F(MinimumShipLevelTest, compare)
25 {
26     MinimumShipLevel::Version min;
27     MinimumShipLevel::Version actual;
28 
29     min = {3, 5, 7};
30 
31     // actual = min
32     actual = {3, 5, 7};
33     EXPECT_EQ(0, minimumShipLevel->compare(actual, min));
34 
35     // actual < min
36     actual = {3, 5, 6};
37     EXPECT_EQ(-1, minimumShipLevel->compare(actual, min));
38     actual = {3, 4, 7};
39     EXPECT_EQ(-1, minimumShipLevel->compare(actual, min));
40     actual = {2, 5, 7};
41     EXPECT_EQ(-1, minimumShipLevel->compare(actual, min));
42 
43     // actual > min
44     actual = {3, 5, 8};
45     EXPECT_EQ(1, minimumShipLevel->compare(actual, min));
46     actual = {3, 6, 7};
47     EXPECT_EQ(1, minimumShipLevel->compare(actual, min));
48     actual = {4, 5, 7};
49     EXPECT_EQ(1, minimumShipLevel->compare(actual, min));
50 }
51 
52 TEST_F(MinimumShipLevelTest, parse)
53 {
54     MinimumShipLevel::Version version;
55     std::string versionStr;
56 
57     versionStr = "nomatch-1.2.3-abc";
58     minimumShipLevel->parse(versionStr, version);
59     EXPECT_EQ(0, version.major);
60     EXPECT_EQ(0, version.minor);
61     EXPECT_EQ(0, version.rev);
62 
63     versionStr = "xyzformat-v1.2.3-4.5abc";
64     minimumShipLevel->parse(versionStr, version);
65     EXPECT_EQ(1, version.major);
66     EXPECT_EQ(2, version.minor);
67     EXPECT_EQ(3, version.rev);
68 
69     versionStr = "xyformat-system-v6.7-abc";
70     minimumShipLevel->parse(versionStr, version);
71     EXPECT_EQ(6, version.major);
72     EXPECT_EQ(7, version.minor);
73     EXPECT_EQ(0, version.rev);
74 }
75 
76 } // namespace image
77 } // namespace software
78 } // namespace openpower
79