clang-tools
22.0.0git
llvm-project
clang-tools-extra
clangd
unittests
tweaks
SwapBinaryOperandsTests.cpp
Go to the documentation of this file.
1
//===-- SwapBinaryOperandsTests.cpp -----------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#include "
TweakTesting.h
"
10
#include "gmock/gmock-matchers.h"
11
#include "gmock/gmock.h"
12
#include "gtest/gtest.h"
13
14
namespace
clang
{
15
namespace
clangd
{
16
namespace
{
17
18
TWEAK_TEST
(SwapBinaryOperands);
19
20
TEST_F
(SwapBinaryOperandsTest, Test) {
21
Context
=
Function
;
22
EXPECT_EQ(apply(
"int *p = nullptr; bool c = ^p == nullptr;"
),
23
"int *p = nullptr; bool c = nullptr == p;"
);
24
EXPECT_EQ(apply(
"int *p = nullptr; bool c = p ^== nullptr;"
),
25
"int *p = nullptr; bool c = nullptr == p;"
);
26
EXPECT_EQ(apply(
"int x = 3; bool c = ^x >= 5;"
),
27
"int x = 3; bool c = 5 <= x;"
);
28
EXPECT_EQ(apply(
"int x = 3; bool c = x >^= 5;"
),
29
"int x = 3; bool c = 5 <= x;"
);
30
EXPECT_EQ(apply(
"int x = 3; bool c = x >=^ 5;"
),
31
"int x = 3; bool c = 5 <= x;"
);
32
EXPECT_EQ(apply(
"int x = 3; bool c = x >=^ 5;"
),
33
"int x = 3; bool c = 5 <= x;"
);
34
EXPECT_EQ(apply(
"int f(); int x = 3; bool c = x >=^ f();"
),
35
"int f(); int x = 3; bool c = f() <= x;"
);
36
EXPECT_EQ(apply(R
"cpp(
37
int f();
38
#define F f
39
int x = 3; bool c = x >=^ F();
40
)cpp"),
41
R
"cpp(
42
int f();
43
#define F f
44
int x = 3; bool c = F() <= x;
45
)cpp");
46
EXPECT_EQ(apply(R
"cpp(
47
int f();
48
#define F f()
49
int x = 3; bool c = x >=^ F;
50
)cpp"),
51
R
"cpp(
52
int f();
53
#define F f()
54
int x = 3; bool c = F <= x;
55
)cpp");
56
EXPECT_EQ(apply(R
"cpp(
57
int f(bool);
58
#define F(v) f(v)
59
int x = 0;
60
bool c = F(x^ < 5);
61
)cpp"),
62
R
"cpp(
63
int f(bool);
64
#define F(v) f(v)
65
int x = 0;
66
bool c = F(5 > x);
67
)cpp");
68
ExtraArgs = {
"-std=c++20"
};
69
Context
= CodeContext::File;
70
EXPECT_UNAVAILABLE
(R
"cpp(
71
namespace std {
72
struct strong_ordering {
73
int val;
74
static const strong_ordering less;
75
static const strong_ordering equivalent;
76
static const strong_ordering equal;
77
static const strong_ordering greater;
78
};
79
inline constexpr strong_ordering strong_ordering::less {-1};
80
inline constexpr strong_ordering strong_ordering::equivalent {0};
81
inline constexpr strong_ordering strong_ordering::equal {0};
82
inline constexpr strong_ordering strong_ordering::greater {1};
83
};
84
#define F(v) v
85
int x = 0;
86
auto c = F(5^ <=> x);
87
)cpp");
88
}
89
90
}
// namespace
91
}
// namespace clangd
92
}
// namespace clang
TweakTesting.h
TWEAK_TEST
#define TWEAK_TEST(TweakID)
Definition
TweakTesting.h:107
EXPECT_UNAVAILABLE
#define EXPECT_UNAVAILABLE(MarkedCode)
Definition
TweakTesting.h:124
clang::clangd::Context
A context is an immutable container for per-request data that must be propagated through layers that ...
Definition
Context.h:69
clang::clangd
FIXME: Skip testing on windows temporarily due to the different escaping code mode.
Definition
AST.cpp:45
clang::clangd::TEST_F
TEST_F(BackgroundIndexTest, NoCrashOnErrorFile)
Definition
BackgroundIndexTests.cpp:94
clang::clangd::CompletionItemKind::Function
@ Function
Definition
Protocol.h:342
clang
===– Representation.cpp - ClangDoc Representation --------—*- C++ -*-===//
Definition
ApplyReplacements.h:27
Generated on
for clang-tools by
1.14.0