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