1*c33a039bSNan Zhou #include "human_sort.hpp"
2*c33a039bSNan Zhou 
3*c33a039bSNan Zhou #include <set>
4*c33a039bSNan Zhou #include <string>
5*c33a039bSNan Zhou 
6*c33a039bSNan Zhou #include <gmock/gmock.h> // IWYU pragma: keep
7*c33a039bSNan Zhou #include <gtest/gtest.h> // IWYU pragma: keep
8*c33a039bSNan Zhou 
9*c33a039bSNan Zhou // IWYU pragma: no_include <gtest/gtest-message.h>
10*c33a039bSNan Zhou // IWYU pragma: no_include <gtest/gtest-test-part.h>
11*c33a039bSNan Zhou // IWYU pragma: no_include "gtest/gtest_pred_impl.h"
12*c33a039bSNan Zhou // IWYU pragma: no_include <gmock/gmock-matchers.h>
13*c33a039bSNan Zhou 
14*c33a039bSNan Zhou namespace
15*c33a039bSNan Zhou {
16*c33a039bSNan Zhou 
17*c33a039bSNan Zhou using ::testing::ElementsAreArray;
18*c33a039bSNan Zhou 
TEST(AlphaNum,NumberTests)19*c33a039bSNan Zhou TEST(AlphaNum, NumberTests)
20*c33a039bSNan Zhou {
21*c33a039bSNan Zhou     // testcases for the algorithm
22*c33a039bSNan Zhou     EXPECT_EQ(alphanumComp("", ""), 0);
23*c33a039bSNan Zhou     EXPECT_LT(alphanumComp("", "a"), 0);
24*c33a039bSNan Zhou     EXPECT_GT(alphanumComp("a", ""), 0);
25*c33a039bSNan Zhou     EXPECT_EQ(alphanumComp("a", "a"), 0);
26*c33a039bSNan Zhou     EXPECT_LT(alphanumComp("", "9"), 0);
27*c33a039bSNan Zhou     EXPECT_GT(alphanumComp("9", ""), 0);
28*c33a039bSNan Zhou     EXPECT_EQ(alphanumComp("1", "1"), 0);
29*c33a039bSNan Zhou     EXPECT_LT(alphanumComp("1", "2"), 0);
30*c33a039bSNan Zhou     EXPECT_GT(alphanumComp("3", "2"), 0);
31*c33a039bSNan Zhou     EXPECT_EQ(alphanumComp("a1", "a1"), 0);
32*c33a039bSNan Zhou     EXPECT_LT(alphanumComp("a1", "a2"), 0);
33*c33a039bSNan Zhou     EXPECT_GT(alphanumComp("a2", "a1"), 0);
34*c33a039bSNan Zhou     EXPECT_LT(alphanumComp("a1a2", "a1a3"), 0);
35*c33a039bSNan Zhou     EXPECT_GT(alphanumComp("a1a2", "a1a0"), 0);
36*c33a039bSNan Zhou     EXPECT_GT(alphanumComp("134", "122"), 0);
37*c33a039bSNan Zhou     EXPECT_EQ(alphanumComp("12a3", "12a3"), 0);
38*c33a039bSNan Zhou     EXPECT_GT(alphanumComp("12a1", "12a0"), 0);
39*c33a039bSNan Zhou     EXPECT_LT(alphanumComp("12a1", "12a2"), 0);
40*c33a039bSNan Zhou     EXPECT_LT(alphanumComp("a", "aa"), 0);
41*c33a039bSNan Zhou     EXPECT_GT(alphanumComp("aaa", "aa"), 0);
42*c33a039bSNan Zhou     EXPECT_EQ(alphanumComp("Alpha 2", "Alpha 2"), 0);
43*c33a039bSNan Zhou     EXPECT_LT(alphanumComp("Alpha 2", "Alpha 2A"), 0);
44*c33a039bSNan Zhou     EXPECT_GT(alphanumComp("Alpha 2 B", "Alpha 2"), 0);
45*c33a039bSNan Zhou 
46*c33a039bSNan Zhou     std::string str("Alpha 2");
47*c33a039bSNan Zhou     EXPECT_EQ(alphanumComp(str, "Alpha 2"), 0);
48*c33a039bSNan Zhou     EXPECT_LT(alphanumComp(str, "Alpha 2A"), 0);
49*c33a039bSNan Zhou     EXPECT_GT(alphanumComp("Alpha 2 B", str), 0);
50*c33a039bSNan Zhou }
51*c33a039bSNan Zhou 
TEST(AlphaNum,LessTest)52*c33a039bSNan Zhou TEST(AlphaNum, LessTest)
53*c33a039bSNan Zhou {
54*c33a039bSNan Zhou     std::set<std::string, AlphanumLess<std::string>> sorted{"Alpha 10",
55*c33a039bSNan Zhou                                                             "Alpha 2"};
56*c33a039bSNan Zhou     EXPECT_THAT(sorted, ElementsAreArray({"Alpha 2", "Alpha 10"}));
57*c33a039bSNan Zhou }
58*c33a039bSNan Zhou } // namespace
59