proxygen
WriteFlagsTest.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2017-present Facebook, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
17 
18 //#include <folly/io/async/test/MockAsyncTransport.h>
20 
21 using namespace testing;
22 
23 namespace folly {
24 
25 TEST(WriteFlagsTest, isSet) {
26  WriteFlags flags = WriteFlags::NONE;
27  ASSERT_FALSE(isSet(flags, WriteFlags::CORK));
28  ASSERT_FALSE(isSet(flags, WriteFlags::EOR));
29 
30  flags = WriteFlags::CORK;
31  ASSERT_TRUE(isSet(flags, WriteFlags::CORK));
32  ASSERT_FALSE(isSet(flags, WriteFlags::EOR));
33 
34  flags = static_cast<WriteFlags>(
35  static_cast<uint32_t>(WriteFlags::CORK) |
36  static_cast<uint32_t>(WriteFlags::EOR));
37  ASSERT_TRUE(isSet(flags, WriteFlags::CORK));
38  ASSERT_TRUE(isSet(flags, WriteFlags::EOR));
39 }
40 
41 TEST(WriteFlagsTest, unionOperator) {
42  WriteFlags flags = WriteFlags::CORK | WriteFlags::NONE;
43  ASSERT_EQ(flags, WriteFlags::CORK);
44 
45  flags = static_cast<WriteFlags>(
46  static_cast<uint32_t>(WriteFlags::CORK) |
47  static_cast<uint32_t>(WriteFlags::EOR));
48  ASSERT_EQ(flags, WriteFlags::CORK | WriteFlags::EOR);
49 }
50 
51 TEST(WriteFlagsTest, intersectionOperator) {
52  ASSERT_EQ(WriteFlags::NONE & WriteFlags::CORK, WriteFlags::NONE);
53 
55  WriteFlags::CORK | WriteFlags::EOR | WriteFlags::WRITE_SHUTDOWN;
56  ASSERT_EQ(flags & WriteFlags::CORK, WriteFlags::CORK);
57  ASSERT_EQ(flags & WriteFlags::EOR, WriteFlags::EOR);
58  ASSERT_EQ(flags & WriteFlags::WRITE_SHUTDOWN, WriteFlags::WRITE_SHUTDOWN);
59 }
60 
61 TEST(WriteFlagsTest, exclusionOperator) {
62  ASSERT_FALSE(isSet(~WriteFlags::CORK, WriteFlags::CORK));
63  ASSERT_TRUE(isSet(~WriteFlags::CORK, WriteFlags::EOR));
64  ASSERT_TRUE(isSet(~WriteFlags::CORK, WriteFlags::WRITE_SHUTDOWN));
65 
66  ASSERT_FALSE(isSet(~WriteFlags::EOR, WriteFlags::EOR));
67  ASSERT_TRUE(isSet(~WriteFlags::EOR, WriteFlags::CORK));
68  ASSERT_TRUE(isSet(~WriteFlags::EOR, WriteFlags::WRITE_SHUTDOWN));
69 }
70 
71 TEST(WriteFlagsTest, unsetOperator) {
73  WriteFlags::CORK | WriteFlags::EOR | WriteFlags::WRITE_SHUTDOWN;
74  ASSERT_TRUE(isSet(flags, WriteFlags::CORK));
75  ASSERT_TRUE(isSet(flags, WriteFlags::EOR));
76  ASSERT_TRUE(isSet(flags, WriteFlags::WRITE_SHUTDOWN));
77 
78  flags = WriteFlags::CORK;
79  ASSERT_TRUE(isSet(flags, WriteFlags::CORK));
80  ASSERT_FALSE(isSet(flags, WriteFlags::EOR));
81  ASSERT_FALSE(isSet(flags, WriteFlags::WRITE_SHUTDOWN));
82 }
83 
84 TEST(WriteFlagsTest, compoundAssignmentUnionOperator) {
85  WriteFlags flags = WriteFlags::NONE;
86  flags |= WriteFlags::CORK;
87  ASSERT_EQ(flags, WriteFlags::CORK);
88 
89  flags = WriteFlags::CORK;
90  flags |= WriteFlags::EOR;
91  ASSERT_EQ(flags, WriteFlags::CORK | WriteFlags::EOR);
92 
93  flags = WriteFlags::CORK | WriteFlags::EOR;
94  flags |= WriteFlags::CORK;
95  ASSERT_EQ(flags, WriteFlags::CORK | WriteFlags::EOR);
96 }
97 
98 TEST(WriteFlagsTest, compoundAssignmentIntersectionOperator) {
99  WriteFlags flags = WriteFlags::CORK | WriteFlags::EOR;
100  flags &= WriteFlags::CORK;
101  ASSERT_EQ(flags, WriteFlags::CORK);
102 
103  flags = WriteFlags::CORK | WriteFlags::EOR;
104  flags &= WriteFlags::EOR;
105  ASSERT_EQ(flags, WriteFlags::EOR);
106 
107  flags = WriteFlags::NONE;
108  flags &= WriteFlags::EOR;
109  ASSERT_EQ(flags, WriteFlags::NONE);
110 }
111 
112 } // namespace folly
flags
Definition: http_parser.h:127
#define ASSERT_EQ(val1, val2)
Definition: gtest.h:1956
—— Concurrent Priority Queue Implementation ——
Definition: AtomicBitSet.h:29
bool isSet(WriteFlags a, WriteFlags b)
TEST(GTestEnvVarTest, Dummy)
#define ASSERT_FALSE(condition)
Definition: gtest.h:1868
#define ASSERT_TRUE(condition)
Definition: gtest.h:1865