xref: /llvm-project/lldb/unittests/Utility/SupportFileTest.cpp (revision dd5df27d9c6b47793b72d4c8f2a796e5d8dc343d)
1*dd5df27dSJonas Devlieghere //===-- SupportFileTest.cpp
2*dd5df27dSJonas Devlieghere //--------------------------------------------------===//
3*dd5df27dSJonas Devlieghere //
4*dd5df27dSJonas Devlieghere // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5*dd5df27dSJonas Devlieghere // See https://llvm.org/LICENSE.txt for license information.
6*dd5df27dSJonas Devlieghere // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7*dd5df27dSJonas Devlieghere //
8*dd5df27dSJonas Devlieghere //===----------------------------------------------------------------------===//
9*dd5df27dSJonas Devlieghere 
10*dd5df27dSJonas Devlieghere #include "gtest/gtest.h"
11*dd5df27dSJonas Devlieghere 
12*dd5df27dSJonas Devlieghere #include "lldb/Utility/Checksum.h"
13*dd5df27dSJonas Devlieghere #include "lldb/Utility/FileSpec.h"
14*dd5df27dSJonas Devlieghere #include "lldb/Utility/SupportFile.h"
15*dd5df27dSJonas Devlieghere 
16*dd5df27dSJonas Devlieghere using namespace lldb_private;
17*dd5df27dSJonas Devlieghere 
18*dd5df27dSJonas Devlieghere static llvm::MD5::MD5Result hash1 = {
19*dd5df27dSJonas Devlieghere     {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}};
20*dd5df27dSJonas Devlieghere 
21*dd5df27dSJonas Devlieghere static llvm::MD5::MD5Result hash2 = {
22*dd5df27dSJonas Devlieghere     {8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7}};
23*dd5df27dSJonas Devlieghere 
TEST(SupportFileTest,TestDefaultConstructor)24*dd5df27dSJonas Devlieghere TEST(SupportFileTest, TestDefaultConstructor) {
25*dd5df27dSJonas Devlieghere   SupportFile support_file;
26*dd5df27dSJonas Devlieghere 
27*dd5df27dSJonas Devlieghere   EXPECT_EQ(support_file.GetSpecOnly(), FileSpec());
28*dd5df27dSJonas Devlieghere   EXPECT_EQ(support_file.GetChecksum(), Checksum());
29*dd5df27dSJonas Devlieghere }
30*dd5df27dSJonas Devlieghere 
TEST(SupportFileTest,TestConstructor)31*dd5df27dSJonas Devlieghere TEST(SupportFileTest, TestConstructor) {
32*dd5df27dSJonas Devlieghere   FileSpec file_spec("/foo/bar");
33*dd5df27dSJonas Devlieghere   Checksum checksum(hash1);
34*dd5df27dSJonas Devlieghere   SupportFile support_file(file_spec, checksum);
35*dd5df27dSJonas Devlieghere 
36*dd5df27dSJonas Devlieghere   EXPECT_EQ(support_file.GetSpecOnly(), file_spec);
37*dd5df27dSJonas Devlieghere   EXPECT_EQ(support_file.GetChecksum(), checksum);
38*dd5df27dSJonas Devlieghere }
39*dd5df27dSJonas Devlieghere 
TEST(SupportFileTest,TestEqual)40*dd5df27dSJonas Devlieghere TEST(SupportFileTest, TestEqual) {
41*dd5df27dSJonas Devlieghere   auto EQ = [&](const SupportFile &LHS, const SupportFile &RHS,
42*dd5df27dSJonas Devlieghere                 SupportFile::SupportFileEquality equality) -> bool {
43*dd5df27dSJonas Devlieghere     EXPECT_EQ(LHS.Equal(RHS, equality), RHS.Equal(LHS, equality));
44*dd5df27dSJonas Devlieghere     return LHS.Equal(RHS, equality);
45*dd5df27dSJonas Devlieghere   };
46*dd5df27dSJonas Devlieghere 
47*dd5df27dSJonas Devlieghere   FileSpec foo_bar("/foo/bar");
48*dd5df27dSJonas Devlieghere   Checksum checksum_foo_bar(hash1);
49*dd5df27dSJonas Devlieghere 
50*dd5df27dSJonas Devlieghere   FileSpec bar_baz("/bar/baz");
51*dd5df27dSJonas Devlieghere   Checksum checksum_bar_baz(hash2);
52*dd5df27dSJonas Devlieghere 
53*dd5df27dSJonas Devlieghere   // The canonical support file we're comparing against.
54*dd5df27dSJonas Devlieghere   SupportFile support_file(foo_bar, checksum_foo_bar);
55*dd5df27dSJonas Devlieghere 
56*dd5df27dSJonas Devlieghere   // Support file A is identical.
57*dd5df27dSJonas Devlieghere   SupportFile support_file_a(foo_bar, checksum_foo_bar);
58*dd5df27dSJonas Devlieghere   EXPECT_TRUE(EQ(support_file, support_file_a, SupportFile::eEqualFileSpec));
59*dd5df27dSJonas Devlieghere   EXPECT_TRUE(EQ(support_file, support_file_a, SupportFile::eEqualChecksum));
60*dd5df27dSJonas Devlieghere   EXPECT_TRUE(
61*dd5df27dSJonas Devlieghere       EQ(support_file, support_file_a, SupportFile::eEqualFileSpecAndChecksum));
62*dd5df27dSJonas Devlieghere   EXPECT_TRUE(EQ(support_file, support_file_a,
63*dd5df27dSJonas Devlieghere                  SupportFile::eEqualFileSpecAndChecksumIfSet));
64*dd5df27dSJonas Devlieghere 
65*dd5df27dSJonas Devlieghere   // Support file C is has the same path but no checksum.
66*dd5df27dSJonas Devlieghere   SupportFile support_file_b(foo_bar);
67*dd5df27dSJonas Devlieghere   EXPECT_TRUE(EQ(support_file, support_file_b, SupportFile::eEqualFileSpec));
68*dd5df27dSJonas Devlieghere   EXPECT_FALSE(EQ(support_file, support_file_b, SupportFile::eEqualChecksum));
69*dd5df27dSJonas Devlieghere   EXPECT_FALSE(
70*dd5df27dSJonas Devlieghere       EQ(support_file, support_file_b, SupportFile::eEqualFileSpecAndChecksum));
71*dd5df27dSJonas Devlieghere   EXPECT_TRUE(EQ(support_file, support_file_b,
72*dd5df27dSJonas Devlieghere                  SupportFile::eEqualFileSpecAndChecksumIfSet));
73*dd5df27dSJonas Devlieghere 
74*dd5df27dSJonas Devlieghere   // Support file D has a different path and checksum.
75*dd5df27dSJonas Devlieghere   SupportFile support_file_c(bar_baz, checksum_bar_baz);
76*dd5df27dSJonas Devlieghere   EXPECT_FALSE(EQ(support_file, support_file_c, SupportFile::eEqualFileSpec));
77*dd5df27dSJonas Devlieghere   EXPECT_FALSE(EQ(support_file, support_file_c,
78*dd5df27dSJonas Devlieghere                   SupportFile::eEqualFileSpecAndChecksumIfSet));
79*dd5df27dSJonas Devlieghere   EXPECT_FALSE(EQ(support_file, support_file_c, SupportFile::eEqualChecksum));
80*dd5df27dSJonas Devlieghere   EXPECT_FALSE(
81*dd5df27dSJonas Devlieghere       EQ(support_file, support_file_c, SupportFile::eEqualFileSpecAndChecksum));
82*dd5df27dSJonas Devlieghere 
83*dd5df27dSJonas Devlieghere   // Support file E has a different path but the same checksum.
84*dd5df27dSJonas Devlieghere   SupportFile support_file_d(bar_baz, checksum_foo_bar);
85*dd5df27dSJonas Devlieghere   EXPECT_FALSE(EQ(support_file, support_file_d, SupportFile::eEqualFileSpec));
86*dd5df27dSJonas Devlieghere   EXPECT_FALSE(EQ(support_file, support_file_d,
87*dd5df27dSJonas Devlieghere                   SupportFile::eEqualFileSpecAndChecksumIfSet));
88*dd5df27dSJonas Devlieghere   EXPECT_TRUE(EQ(support_file, support_file_d, SupportFile::eEqualChecksum));
89*dd5df27dSJonas Devlieghere   EXPECT_FALSE(
90*dd5df27dSJonas Devlieghere       EQ(support_file, support_file_d, SupportFile::eEqualFileSpecAndChecksum));
91*dd5df27dSJonas Devlieghere }
92