18bf80f4bSopenharmony_ci/*
28bf80f4bSopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd.
38bf80f4bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
48bf80f4bSopenharmony_ci * you may not use this file except in compliance with the License.
58bf80f4bSopenharmony_ci * You may obtain a copy of the License at
68bf80f4bSopenharmony_ci *
78bf80f4bSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
88bf80f4bSopenharmony_ci *
98bf80f4bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
108bf80f4bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
118bf80f4bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
128bf80f4bSopenharmony_ci * See the License for the specific language governing permissions and
138bf80f4bSopenharmony_ci * limitations under the License.
148bf80f4bSopenharmony_ci */
158bf80f4bSopenharmony_ci
168bf80f4bSopenharmony_ci#include <gtest/gtest.h>
178bf80f4bSopenharmony_ci
188bf80f4bSopenharmony_ci#include <meta/base/version.h>
198bf80f4bSopenharmony_ci
208bf80f4bSopenharmony_ci#include "src/test_runner.h"
218bf80f4bSopenharmony_ci
228bf80f4bSopenharmony_ciusing namespace testing::ext;
238bf80f4bSopenharmony_ci
248bf80f4bSopenharmony_ciMETA_BEGIN_NAMESPACE()
258bf80f4bSopenharmony_ci
268bf80f4bSopenharmony_ciclass VersionTest : public testing::Test {
278bf80f4bSopenharmony_cipublic:
288bf80f4bSopenharmony_ci    static void SetUpTestSuite()
298bf80f4bSopenharmony_ci    {
308bf80f4bSopenharmony_ci        SetTest();
318bf80f4bSopenharmony_ci    }
328bf80f4bSopenharmony_ci    static void TearDownTestSuite()
338bf80f4bSopenharmony_ci    {
348bf80f4bSopenharmony_ci        ResetTest();
358bf80f4bSopenharmony_ci    }
368bf80f4bSopenharmony_ci    void SetUp() override {}
378bf80f4bSopenharmony_ci    void TearDown() override {}
388bf80f4bSopenharmony_ci};
398bf80f4bSopenharmony_ci
408bf80f4bSopenharmony_ci/**
418bf80f4bSopenharmony_ci * @tc.name: VersionTest
428bf80f4bSopenharmony_ci * @tc.desc: test Compare function
438bf80f4bSopenharmony_ci * @tc.type: FUNC
448bf80f4bSopenharmony_ci * @tc.require: I7DMS1
458bf80f4bSopenharmony_ci */
468bf80f4bSopenharmony_ciHWTEST_F(VersionTest, Compare, TestSize.Level1)
478bf80f4bSopenharmony_ci{
488bf80f4bSopenharmony_ci    Version a;
498bf80f4bSopenharmony_ci    Version b(1, 0);
508bf80f4bSopenharmony_ci    Version c(1, 1);
518bf80f4bSopenharmony_ci    Version d(0, 9999);
528bf80f4bSopenharmony_ci    Version e(1, 9999);
538bf80f4bSopenharmony_ci    Version f(2366, 0);
548bf80f4bSopenharmony_ci
558bf80f4bSopenharmony_ci    EXPECT_TRUE(a == a);
568bf80f4bSopenharmony_ci    EXPECT_TRUE(b == b);
578bf80f4bSopenharmony_ci    EXPECT_TRUE(a != b);
588bf80f4bSopenharmony_ci
598bf80f4bSopenharmony_ci    EXPECT_TRUE(a < b);
608bf80f4bSopenharmony_ci    EXPECT_TRUE(b < c);
618bf80f4bSopenharmony_ci    EXPECT_TRUE(d < b);
628bf80f4bSopenharmony_ci    EXPECT_TRUE(e < f);
638bf80f4bSopenharmony_ci
648bf80f4bSopenharmony_ci    EXPECT_FALSE(b > b);
658bf80f4bSopenharmony_ci    EXPECT_FALSE(b > c);
668bf80f4bSopenharmony_ci    EXPECT_FALSE(d > b);
678bf80f4bSopenharmony_ci    EXPECT_FALSE(e > f);
688bf80f4bSopenharmony_ci
698bf80f4bSopenharmony_ci    EXPECT_TRUE(a <= a);
708bf80f4bSopenharmony_ci    EXPECT_TRUE(b <= b);
718bf80f4bSopenharmony_ci    EXPECT_TRUE(a <= b);
728bf80f4bSopenharmony_ci    EXPECT_TRUE(b <= c);
738bf80f4bSopenharmony_ci    EXPECT_TRUE(d <= b);
748bf80f4bSopenharmony_ci    EXPECT_TRUE(e <= f);
758bf80f4bSopenharmony_ci
768bf80f4bSopenharmony_ci    EXPECT_TRUE(a >= a);
778bf80f4bSopenharmony_ci    EXPECT_TRUE(b >= b);
788bf80f4bSopenharmony_ci    EXPECT_FALSE(a >= b);
798bf80f4bSopenharmony_ci    EXPECT_FALSE(b >= c);
808bf80f4bSopenharmony_ci    EXPECT_FALSE(d >= b);
818bf80f4bSopenharmony_ci    EXPECT_FALSE(e >= f);
828bf80f4bSopenharmony_ci}
838bf80f4bSopenharmony_ci
848bf80f4bSopenharmony_civoid TestFromToVersion(Version v)
858bf80f4bSopenharmony_ci{
868bf80f4bSopenharmony_ci    Version other(v.ToString());
878bf80f4bSopenharmony_ci    EXPECT_EQ(v, other);
888bf80f4bSopenharmony_ci}
898bf80f4bSopenharmony_ci
908bf80f4bSopenharmony_ci/**
918bf80f4bSopenharmony_ci * @tc.name: VersionTest
928bf80f4bSopenharmony_ci * @tc.desc: test ToString function
938bf80f4bSopenharmony_ci * @tc.type: FUNC
948bf80f4bSopenharmony_ci * @tc.require: I7DMS1
958bf80f4bSopenharmony_ci */
968bf80f4bSopenharmony_ciHWTEST_F(VersionTest, ToString, TestSize.Level1)
978bf80f4bSopenharmony_ci{
988bf80f4bSopenharmony_ci    TestFromToVersion(Version());
998bf80f4bSopenharmony_ci    TestFromToVersion(Version(1, 0));
1008bf80f4bSopenharmony_ci    TestFromToVersion(Version(1, 1));
1018bf80f4bSopenharmony_ci    TestFromToVersion(Version(1, 9999));
1028bf80f4bSopenharmony_ci    TestFromToVersion(Version(9999, 0));
1038bf80f4bSopenharmony_ci    TestFromToVersion(Version(123, 2));
1048bf80f4bSopenharmony_ci}
1058bf80f4bSopenharmony_ci
1068bf80f4bSopenharmony_ci/**
1078bf80f4bSopenharmony_ci * @tc.name: VersionTest
1088bf80f4bSopenharmony_ci * @tc.desc: test FromString function
1098bf80f4bSopenharmony_ci * @tc.type: FUNC
1108bf80f4bSopenharmony_ci * @tc.require: I7DMS1
1118bf80f4bSopenharmony_ci */
1128bf80f4bSopenharmony_ciHWTEST_F(VersionTest, FromString, TestSize.Level1)
1138bf80f4bSopenharmony_ci{
1148bf80f4bSopenharmony_ci    EXPECT_EQ(Version("1"), Version(1, 0));
1158bf80f4bSopenharmony_ci    EXPECT_EQ(Version("1125"), Version(1125, 0));
1168bf80f4bSopenharmony_ci    EXPECT_EQ(Version("1."), Version(1, 0));
1178bf80f4bSopenharmony_ci    EXPECT_EQ(Version("1.df"), Version(1, 0));
1188bf80f4bSopenharmony_ci}
1198bf80f4bSopenharmony_ci
1208bf80f4bSopenharmony_ci/**
1218bf80f4bSopenharmony_ci * @tc.name: VersionTest
1228bf80f4bSopenharmony_ci * @tc.desc: test InvalidString function
1238bf80f4bSopenharmony_ci * @tc.type: FUNC
1248bf80f4bSopenharmony_ci * @tc.require: I7DMS1
1258bf80f4bSopenharmony_ci */
1268bf80f4bSopenharmony_ciHWTEST_F(VersionTest, InvalidString, TestSize.Level1)
1278bf80f4bSopenharmony_ci{
1288bf80f4bSopenharmony_ci    EXPECT_EQ(Version(""), Version());
1298bf80f4bSopenharmony_ci    EXPECT_EQ(Version(".1"), Version());
1308bf80f4bSopenharmony_ci    EXPECT_EQ(Version(".."), Version());
1318bf80f4bSopenharmony_ci    EXPECT_EQ(Version("asdb"), Version());
1328bf80f4bSopenharmony_ci    EXPECT_EQ(Version("-1.24"), Version());
1338bf80f4bSopenharmony_ci}
1348bf80f4bSopenharmony_ciMETA_END_NAMESPACE()