blob: d556d80ec3686a5c419f6955f805f1a247e4d5f2 [file] [log] [blame]
Googlerb56d7092021-11-26 12:38:29 +00001// Part of the Crubit project, under the Apache License v2.0 with LLVM
2// Exceptions. See /LICENSE for license information.
3// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4
5#include "lifetime_annotations/lifetime.h"
6
Luca Versaric21d92f2022-05-25 00:56:30 -07007#include "gmock/gmock.h"
8#include "gtest/gtest.h"
Googlerb56d7092021-11-26 12:38:29 +00009
Martin Brænne1a207c52022-04-19 00:05:38 -070010namespace clang {
11namespace tidy {
12namespace lifetimes {
Googlerb56d7092021-11-26 12:38:29 +000013namespace {
14
15TEST(Lifetime, IsVariable) {
16 EXPECT_TRUE(Lifetime::CreateVariable().IsVariable());
17 EXPECT_FALSE(Lifetime::Static().IsVariable());
18 EXPECT_FALSE(Lifetime::CreateLocal().IsVariable());
19}
20
21TEST(Lifetime, IsConstant) {
22 EXPECT_TRUE(Lifetime::Static().IsConstant());
23 EXPECT_TRUE(Lifetime::CreateLocal().IsConstant());
24 EXPECT_FALSE(Lifetime::CreateVariable().IsConstant());
25}
26
27TEST(Lifetime, IsLocal) {
28 EXPECT_TRUE(Lifetime::CreateLocal().IsLocal());
29 EXPECT_FALSE(Lifetime::Static().IsLocal());
30}
31
32TEST(Lifetime, Equality) {
33 Lifetime l1 = Lifetime::CreateVariable();
34 Lifetime l2 = Lifetime::CreateVariable();
35
36 EXPECT_EQ(l1, l1);
37 EXPECT_EQ(l2, l2);
38 EXPECT_NE(l1, l2);
39 EXPECT_NE(l2, l1);
40
41 EXPECT_EQ(Lifetime::Static(), Lifetime::Static());
42 EXPECT_NE(l1, Lifetime::Static());
43
44 Lifetime local1 = Lifetime::CreateLocal();
45 Lifetime local2 = Lifetime::CreateLocal();
46 EXPECT_NE(local1, local2);
47 EXPECT_NE(l1, local1);
48}
49
50TEST(Lifetime, Copy) {
51 Lifetime l1 = Lifetime::CreateVariable();
52 Lifetime l2 = l1;
53
54 EXPECT_EQ(l1, l2);
55
56 Lifetime l3 = Lifetime::CreateVariable();
57 EXPECT_NE(l1, l3);
58 l3 = l1;
59 EXPECT_EQ(l1, l3);
60}
61
62} // namespace
Martin Brænne1a207c52022-04-19 00:05:38 -070063} // namespace lifetimes
64} // namespace tidy
65} // namespace clang