• Home
  • Raw
  • Download

Lines Matching +full:- +full:multilib

1 //===- unittests/Driver/MultilibTest.cpp --- Multilib tests ---------------===//
8 //===----------------------------------------------------------------------===//
10 // Unit tests for Multilib and MultilibSet
12 //===----------------------------------------------------------------------===//
14 #include "clang/Driver/Multilib.h"
25 ASSERT_TRUE(Multilib().isValid()) << "Empty multilib is not valid"; in TEST()
27 ASSERT_TRUE(Multilib().flag("+foo").isValid()) in TEST()
30 ASSERT_TRUE(Multilib().flag("-foo").isValid()) in TEST()
33 ASSERT_FALSE(Multilib().flag("+foo").flag("-foo").isValid()) in TEST()
34 << "Conflicting flags should invalidate the Multilib"; in TEST()
36 ASSERT_TRUE(Multilib().flag("+foo").flag("+foo").isValid()) in TEST()
37 << "Multilib should be valid even if it has the same flag twice"; in TEST()
39 ASSERT_TRUE(Multilib().flag("+foo").flag("-foobar").isValid()) in TEST()
44 Multilib M; in TEST()
45 ASSERT_TRUE(M == M) << "Multilib::operator==() is not reflexive"; in TEST()
49 ASSERT_TRUE(Multilib() == Multilib()) in TEST()
54 Multilib M1, M2; in TEST()
61 Multilib M1, M2; in TEST()
63 M2.flag("-foo"); in TEST()
70 Multilib M1, M2; in TEST()
76 Multilib M1, M2; in TEST()
85 Multilib M1("64"); in TEST()
86 Multilib M2; in TEST()
89 << "Constructor argument must match Multilib::gccSuffix()"; in TEST()
91 << "Constructor argument must match Multilib::gccSuffix() (commuted)"; in TEST()
95 Multilib M1("", "32"); in TEST()
96 Multilib M2; in TEST()
99 << "Constructor argument must match Multilib::osSuffix()"; in TEST()
101 << "Constructor argument must match Multilib::osSuffix() (commuted)"; in TEST()
105 Multilib M1("", "", "16"); in TEST()
106 Multilib M2; in TEST()
109 << "Constructor argument must match Multilib::includeSuffix()"; in TEST()
111 << "Constructor argument must match Multilib::includeSuffix() (commuted)"; in TEST()
115 Multilib M1("foo"); in TEST()
116 Multilib M2("bar"); in TEST()
123 Multilib M1("", "foo"); in TEST()
124 Multilib M2("", "bar"); in TEST()
131 Multilib M1("", "", "foo"); in TEST()
132 Multilib M2("", "", "bar"); in TEST()
139 Multilib M("gcc64", "os64", "inc64"); in TEST()
146 Multilib M1; in TEST()
147 Multilib M2(""); in TEST()
148 Multilib M3("", ""); in TEST()
149 Multilib M4("", "", ""); in TEST()
151 << "Default arguments to Multilib constructor broken (first argument)"; in TEST()
153 << "Default arguments to Multilib constructor broken (second argument)"; in TEST()
155 << "Default arguments to Multilib constructor broken (third argument)"; in TEST()
159 Multilib M = Multilib().flag("+f1").flag("+f2").flag("-f3"); in TEST()
160 for (Multilib::flags_list::const_iterator I = M.flags().begin(), in TEST()
164 .Cases("+f1", "+f2", "-f3", true) in TEST()
169 static bool hasFlag(const Multilib &M, StringRef Flag) { in hasFlag()
170 for (Multilib::flags_list::const_iterator I = M.flags().begin(), in hasFlag()
185 MS.Maybe(Multilib("64").flag("+m64")); in TEST()
188 if (I->gccSuffix() == "/64") in TEST()
189 ASSERT_TRUE(I->flags()[0] == "+m64"); in TEST()
190 else if (I->gccSuffix() == "") in TEST()
191 ASSERT_TRUE(I->flags()[0] == "-m64"); in TEST()
193 FAIL() << "Unrecognized gccSufix: " << I->gccSuffix(); in TEST()
200 MS.Maybe(Multilib("sof").flag("+sof")); in TEST()
201 MS.Maybe(Multilib("el").flag("+EL")); in TEST()
204 ASSERT_TRUE(I->isValid()) << "Multilb " << *I << " should be valid"; in TEST()
205 ASSERT_TRUE(llvm::StringSwitch<bool>(I->gccSuffix()) in TEST()
208 << "Multilib " << *I << " wasn't expected"; in TEST()
209 ASSERT_TRUE(llvm::StringSwitch<bool>(I->gccSuffix()) in TEST()
210 .Case("", hasFlag(*I, "-sof")) in TEST()
212 .Case("/el", hasFlag(*I, "-sof")) in TEST()
215 << "Multilib " << *I << " didn't have the appropriate {+,-}sof flag"; in TEST()
216 ASSERT_TRUE(llvm::StringSwitch<bool>(I->gccSuffix()) in TEST()
217 .Case("", hasFlag(*I, "-EL")) in TEST()
218 .Case("/sof", hasFlag(*I, "-EL")) in TEST()
222 << "Multilib " << *I << " didn't have the appropriate {+,-}EL flag"; in TEST()
228 MS.push_back(Multilib("one")); in TEST()
229 MS.push_back(Multilib("two")); in TEST()
232 ASSERT_TRUE(llvm::StringSwitch<bool>(I->gccSuffix()) in TEST()
242 MS.Maybe(Multilib("one")); in TEST()
243 MS.Maybe(Multilib("two")); in TEST()
244 MS.Maybe(Multilib("three")); in TEST()
248 ASSERT_EQ(MS.size(), (unsigned)2 * 2 * 2 - 1) in TEST()
251 ASSERT_TRUE(I->gccSuffix() != "/one/two/three") in TEST()
258 MS.Maybe(Multilib("orange")); in TEST()
259 MS.Maybe(Multilib("pear")); in TEST()
260 MS.Maybe(Multilib("plum")); in TEST()
270 MS.FilterOut([](const Multilib &M) { in TEST()
280 ASSERT_FALSE(StringRef(I->gccSuffix()).startswith("/p")) in TEST()
287 .Maybe(Multilib("64").flag("+m64")); in TEST()
289 Multilib::flags_list FlagM64; in TEST()
291 Multilib SelectionM64; in TEST()
297 Multilib::flags_list FlagNoM64; in TEST()
298 FlagNoM64.push_back("-m64"); in TEST()
299 Multilib SelectionNoM64; in TEST()
301 << "Flag set was {\"-m64\"}, but selection not found"; in TEST()
308 .Maybe(Multilib("el").flag("+EL")) in TEST()
309 .Maybe(Multilib("sf").flag("+SF")); in TEST()
314 Multilib::flags_list Flags; in TEST()
318 Flags.push_back("-EL"); in TEST()
323 Flags.push_back("-SF"); in TEST()
325 Multilib Selection; in TEST()
327 << (IsEL ? "+EL" : "-EL") << " " in TEST()
328 << (IsSF ? "+SF" : "-SF"); in TEST()
343 Coffee.push_back(Multilib("coffee")); in TEST()
345 Milk.push_back(Multilib("milk")); in TEST()