From c98de6b2ecb4b4855fe6ce152329dc74eaae4710 Mon Sep 17 00:00:00 2001 From: Yedidya Feldblum Date: Thu, 21 Dec 2017 20:31:44 -0800 Subject: [PATCH] Fix the assumption in the propagate_const test about local layout Summary: [Folly] Fix the assumption in the `propagate_const` test about local layout. Reviewed By: aary Differential Revision: D6624962 fbshipit-source-id: 6871dc20f2b5ec2d1a86f520030c7cda8a225958 --- folly/lang/test/PropagateConstTest.cpp | 245 +++++++++++++------------ 1 file changed, 132 insertions(+), 113 deletions(-) diff --git a/folly/lang/test/PropagateConstTest.cpp b/folly/lang/test/PropagateConstTest.cpp index 1a62f48d..04b1058b 100644 --- a/folly/lang/test/PropagateConstTest.cpp +++ b/folly/lang/test/PropagateConstTest.cpp @@ -77,36 +77,40 @@ TEST_F(PropagateConstTest, op_assign_move) { } TEST_F(PropagateConstTest, get) { - int a = 3; - auto pc_a = pc(&a); + int data[1] = {3}; + auto a = data + 0; + auto pc_a = pc(a); - EXPECT_EQ(&a, pc_a.get()); - EXPECT_EQ(&a, as_const(pc_a).get()); + EXPECT_EQ(a, pc_a.get()); + EXPECT_EQ(a, as_const(pc_a).get()); EXPECT_FALSE(is_const(*pc_a.get())); EXPECT_TRUE(is_const(*as_const(pc_a).get())); } TEST_F(PropagateConstTest, op_indirect) { - int a = 3; - auto pc_a = pc(&a); + int data[1] = {3}; + auto a = data + 0; + auto pc_a = pc(a); - EXPECT_EQ(&a, &*pc_a); - EXPECT_EQ(&a, &*as_const(pc_a)); + EXPECT_EQ(a, &*pc_a); + EXPECT_EQ(a, &*as_const(pc_a)); EXPECT_FALSE(is_const(*pc_a)); EXPECT_TRUE(is_const(*as_const(pc_a))); } TEST_F(PropagateConstTest, op_element_type_ptr) { - int a = 3; - auto pc_a = pc(&a); + int data[1] = {3}; + auto a = data + 0; + auto pc_a = pc(a); - EXPECT_EQ(&a, static_cast(pc_a)); - EXPECT_EQ(&a, static_cast(as_const(pc_a))); + EXPECT_EQ(a, static_cast(pc_a)); + EXPECT_EQ(a, static_cast(as_const(pc_a))); } TEST_F(PropagateConstTest, op_bool) { - int a = 3; - auto pc_a = pc(&a); + int data[1] = {3}; + auto a = data + 0; + auto pc_a = pc(a); auto pc_0 = pc(nullptr); EXPECT_TRUE(pc_a); @@ -114,21 +118,23 @@ TEST_F(PropagateConstTest, op_bool) { } TEST_F(PropagateConstTest, get_underlying) { - int a = 3; - auto pc_a = pc(&a); + int data[1] = {3}; + auto a = data + 0; + auto pc_a = pc(a); - EXPECT_EQ(&a, get_underlying(pc_a)); - EXPECT_EQ(&a, get_underlying(as_const(pc_a))); + EXPECT_EQ(a, get_underlying(pc_a)); + EXPECT_EQ(a, get_underlying(as_const(pc_a))); EXPECT_FALSE(is_const(get_underlying(pc_a))); EXPECT_TRUE(is_const(get_underlying(as_const(pc_a)))); EXPECT_TRUE(&get_underlying(pc_a) == &get_underlying(as_const(pc_a))); } TEST_F(PropagateConstTest, swap) { - int a = 3; - int b = 4; - auto pc_a = pc(&a); - auto pc_b = pc(&b); + int data[2] = {3, 4}; + auto a = data + 0; + auto b = data + 1; + auto pc_a = pc(a); + auto pc_b = pc(b); swap(pc_a, pc_b); EXPECT_EQ(3, *pc_b); @@ -140,133 +146,141 @@ TEST_F(PropagateConstTest, swap) { } TEST_F(PropagateConstTest, op_equal_to) { - int a = 3; - int b = 4; - auto pc_a = pc(&a); - auto pc_b = pc(&b); + int data[2] = {3, 4}; + auto a = data + 0; + auto b = data + 1; + auto pc_a = pc(a); + auto pc_b = pc(b); auto _ = [](auto&& x, auto&& y) { return x == y; }; EXPECT_TRUE(_(pc_a, pc_a)); EXPECT_FALSE(_(pc_a, pc_b)); EXPECT_FALSE(_(pc_a, nullptr)); - EXPECT_TRUE(_(pc_a, &a)); - EXPECT_FALSE(_(pc_a, &b)); - EXPECT_TRUE(_(&a, pc_a)); - EXPECT_FALSE(_(&b, pc_a)); + EXPECT_TRUE(_(pc_a, a)); + EXPECT_FALSE(_(pc_a, b)); + EXPECT_TRUE(_(a, pc_a)); + EXPECT_FALSE(_(b, pc_a)); } TEST_F(PropagateConstTest, op_not_equal_to) { - int a = 3; - int b = 4; - auto pc_a = pc(&a); - auto pc_b = pc(&b); + int data[2] = {3, 4}; + auto a = data + 0; + auto b = data + 1; + auto pc_a = pc(a); + auto pc_b = pc(b); auto _ = [](auto&& x, auto&& y) { return x != y; }; EXPECT_FALSE(_(pc_a, pc_a)); EXPECT_TRUE(_(pc_a, pc_b)); EXPECT_TRUE(_(pc_a, nullptr)); - EXPECT_FALSE(_(pc_a, &a)); - EXPECT_TRUE(_(pc_a, &b)); - EXPECT_FALSE(_(&a, pc_a)); - EXPECT_TRUE(_(&b, pc_a)); + EXPECT_FALSE(_(pc_a, a)); + EXPECT_TRUE(_(pc_a, b)); + EXPECT_FALSE(_(a, pc_a)); + EXPECT_TRUE(_(b, pc_a)); } TEST_F(PropagateConstTest, op_less) { - int a = 3; - int b = 4; - auto pc_a = pc(&a); - auto pc_b = pc(&b); + int data[2] = {3, 4}; + auto a = data + 0; + auto b = data + 1; + auto pc_a = pc(a); + auto pc_b = pc(b); auto _ = [](auto&& x, auto&& y) { return x < y; }; EXPECT_FALSE(_(pc_a, pc_a)); - EXPECT_FALSE(_(pc_a, &a)); - EXPECT_FALSE(_(&a, pc_a)); + EXPECT_FALSE(_(pc_a, a)); + EXPECT_FALSE(_(a, pc_a)); EXPECT_TRUE(_(pc_a, pc_b)); - EXPECT_TRUE(_(pc_a, &b)); - EXPECT_TRUE(_(&a, pc_b)); + EXPECT_TRUE(_(pc_a, b)); + EXPECT_TRUE(_(a, pc_b)); EXPECT_FALSE(_(pc_b, pc_a)); - EXPECT_FALSE(_(pc_b, &a)); - EXPECT_FALSE(_(&b, pc_a)); + EXPECT_FALSE(_(pc_b, a)); + EXPECT_FALSE(_(b, pc_a)); EXPECT_FALSE(_(pc_b, pc_b)); - EXPECT_FALSE(_(pc_b, &b)); - EXPECT_FALSE(_(&b, pc_b)); + EXPECT_FALSE(_(pc_b, b)); + EXPECT_FALSE(_(b, pc_b)); } TEST_F(PropagateConstTest, op_greater) { - int a = 3; - int b = 4; - auto pc_a = pc(&a); - auto pc_b = pc(&b); + int data[2] = {3, 4}; + auto a = data + 0; + auto b = data + 1; + auto pc_a = pc(a); + auto pc_b = pc(b); auto _ = [](auto&& x, auto&& y) { return x > y; }; EXPECT_FALSE(_(pc_a, pc_a)); - EXPECT_FALSE(_(pc_a, &a)); - EXPECT_FALSE(_(&a, pc_a)); + EXPECT_FALSE(_(pc_a, a)); + EXPECT_FALSE(_(a, pc_a)); EXPECT_FALSE(_(pc_a, pc_b)); - EXPECT_FALSE(_(pc_a, &b)); - EXPECT_FALSE(_(&a, pc_b)); + EXPECT_FALSE(_(pc_a, b)); + EXPECT_FALSE(_(a, pc_b)); EXPECT_TRUE(_(pc_b, pc_a)); - EXPECT_TRUE(_(pc_b, &a)); - EXPECT_TRUE(_(&b, pc_a)); + EXPECT_TRUE(_(pc_b, a)); + EXPECT_TRUE(_(b, pc_a)); EXPECT_FALSE(_(pc_b, pc_b)); - EXPECT_FALSE(_(pc_b, &b)); - EXPECT_FALSE(_(&b, pc_b)); + EXPECT_FALSE(_(pc_b, b)); + EXPECT_FALSE(_(b, pc_b)); } TEST_F(PropagateConstTest, op_less_equal) { - int a = 3; - int b = 4; - auto pc_a = pc(&a); - auto pc_b = pc(&b); + int data[2] = {3, 4}; + auto a = data + 0; + auto b = data + 1; + auto pc_a = pc(a); + auto pc_b = pc(b); auto _ = [](auto&& x, auto&& y) { return x <= y; }; EXPECT_TRUE(_(pc_a, pc_a)); - EXPECT_TRUE(_(pc_a, &a)); - EXPECT_TRUE(_(&a, pc_a)); + EXPECT_TRUE(_(pc_a, a)); + EXPECT_TRUE(_(a, pc_a)); EXPECT_TRUE(_(pc_a, pc_b)); - EXPECT_TRUE(_(pc_a, &b)); - EXPECT_TRUE(_(&a, pc_b)); + EXPECT_TRUE(_(pc_a, b)); + EXPECT_TRUE(_(a, pc_b)); EXPECT_FALSE(_(pc_b, pc_a)); - EXPECT_FALSE(_(pc_b, &a)); - EXPECT_FALSE(_(&b, pc_a)); + EXPECT_FALSE(_(pc_b, a)); + EXPECT_FALSE(_(b, pc_a)); EXPECT_TRUE(_(pc_b, pc_b)); - EXPECT_TRUE(_(pc_b, &b)); - EXPECT_TRUE(_(&b, pc_b)); + EXPECT_TRUE(_(pc_b, b)); + EXPECT_TRUE(_(b, pc_b)); } TEST_F(PropagateConstTest, op_greater_equal) { - int a = 3; - int b = 4; - auto pc_a = pc(&a); - auto pc_b = pc(&b); + int data[2] = {3, 4}; + auto a = data + 0; + auto b = data + 1; + auto pc_a = pc(a); + auto pc_b = pc(b); auto _ = [](auto&& x, auto&& y) { return x >= y; }; EXPECT_TRUE(_(pc_a, pc_a)); - EXPECT_TRUE(_(pc_a, &a)); - EXPECT_TRUE(_(&a, pc_a)); + EXPECT_TRUE(_(pc_a, a)); + EXPECT_TRUE(_(a, pc_a)); EXPECT_FALSE(_(pc_a, pc_b)); - EXPECT_FALSE(_(pc_a, &b)); - EXPECT_FALSE(_(&a, pc_b)); + EXPECT_FALSE(_(pc_a, b)); + EXPECT_FALSE(_(a, pc_b)); EXPECT_TRUE(_(pc_b, pc_a)); - EXPECT_TRUE(_(pc_b, &a)); - EXPECT_TRUE(_(&b, pc_a)); + EXPECT_TRUE(_(pc_b, a)); + EXPECT_TRUE(_(b, pc_a)); EXPECT_TRUE(_(pc_b, pc_b)); - EXPECT_TRUE(_(pc_b, &b)); - EXPECT_TRUE(_(&b, pc_b)); + EXPECT_TRUE(_(pc_b, b)); + EXPECT_TRUE(_(b, pc_b)); } TEST_F(PropagateConstTest, hash) { - int a = 3; - auto pc_a = pc(&a); + int data[1] = {3}; + auto a = data + 0; + auto pc_a = pc(a); - EXPECT_EQ(std::hash()(&a), std::hash>()(pc_a)); + EXPECT_EQ(std::hash()(a), std::hash>()(pc_a)); } TEST_F(PropagateConstTest, equal_to) { - int a = 3; - int b = 4; - auto pc_a = pc(&a); - auto pc_b = pc(&b); + int data[2] = {3, 4}; + auto a = data + 0; + auto b = data + 1; + auto pc_a = pc(a); + auto pc_b = pc(b); auto _ = std::equal_to>{}; EXPECT_TRUE(_(pc_a, pc_a)); @@ -274,10 +288,11 @@ TEST_F(PropagateConstTest, equal_to) { } TEST_F(PropagateConstTest, not_equal_to) { - int a = 3; - int b = 4; - auto pc_a = pc(&a); - auto pc_b = pc(&b); + int data[2] = {3, 4}; + auto a = data + 0; + auto b = data + 1; + auto pc_a = pc(a); + auto pc_b = pc(b); auto _ = std::not_equal_to>{}; EXPECT_FALSE(_(pc_a, pc_a)); @@ -285,10 +300,11 @@ TEST_F(PropagateConstTest, not_equal_to) { } TEST_F(PropagateConstTest, less) { - int a = 3; - int b = 4; - auto pc_a = pc(&a); - auto pc_b = pc(&b); + int data[2] = {3, 4}; + auto a = data + 0; + auto b = data + 1; + auto pc_a = pc(a); + auto pc_b = pc(b); auto _ = std::less>{}; EXPECT_FALSE(_(pc_a, pc_a)); @@ -298,10 +314,11 @@ TEST_F(PropagateConstTest, less) { } TEST_F(PropagateConstTest, greater) { - int a = 3; - int b = 4; - auto pc_a = pc(&a); - auto pc_b = pc(&b); + int data[2] = {3, 4}; + auto a = data + 0; + auto b = data + 1; + auto pc_a = pc(a); + auto pc_b = pc(b); auto _ = std::greater>{}; EXPECT_FALSE(_(pc_a, pc_a)); @@ -311,10 +328,11 @@ TEST_F(PropagateConstTest, greater) { } TEST_F(PropagateConstTest, less_equal) { - int a = 3; - int b = 4; - auto pc_a = pc(&a); - auto pc_b = pc(&b); + int data[2] = {3, 4}; + auto a = data + 0; + auto b = data + 1; + auto pc_a = pc(a); + auto pc_b = pc(b); auto _ = std::less_equal>{}; EXPECT_TRUE(_(pc_a, pc_a)); @@ -324,10 +342,11 @@ TEST_F(PropagateConstTest, less_equal) { } TEST_F(PropagateConstTest, greater_equal) { - int a = 3; - int b = 4; - auto pc_a = pc(&a); - auto pc_b = pc(&b); + int data[2] = {3, 4}; + auto a = data + 0; + auto b = data + 1; + auto pc_a = pc(a); + auto pc_b = pc(b); auto _ = std::greater_equal>{}; EXPECT_TRUE(_(pc_a, pc_a)); -- 2.34.1