WriteFlagsTest.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. */
  16. #include <folly/io/async/AsyncTransport.h>
  17. //#include <folly/io/async/test/MockAsyncTransport.h>
  18. #include <folly/portability/GTest.h>
  19. using namespace testing;
  20. namespace folly {
  21. TEST(WriteFlagsTest, isSet) {
  22. WriteFlags flags = WriteFlags::NONE;
  23. ASSERT_FALSE(isSet(flags, WriteFlags::CORK));
  24. ASSERT_FALSE(isSet(flags, WriteFlags::EOR));
  25. flags = WriteFlags::CORK;
  26. ASSERT_TRUE(isSet(flags, WriteFlags::CORK));
  27. ASSERT_FALSE(isSet(flags, WriteFlags::EOR));
  28. flags = static_cast<WriteFlags>(
  29. static_cast<uint32_t>(WriteFlags::CORK) |
  30. static_cast<uint32_t>(WriteFlags::EOR));
  31. ASSERT_TRUE(isSet(flags, WriteFlags::CORK));
  32. ASSERT_TRUE(isSet(flags, WriteFlags::EOR));
  33. }
  34. TEST(WriteFlagsTest, unionOperator) {
  35. WriteFlags flags = WriteFlags::CORK | WriteFlags::NONE;
  36. ASSERT_EQ(flags, WriteFlags::CORK);
  37. flags = static_cast<WriteFlags>(
  38. static_cast<uint32_t>(WriteFlags::CORK) |
  39. static_cast<uint32_t>(WriteFlags::EOR));
  40. ASSERT_EQ(flags, WriteFlags::CORK | WriteFlags::EOR);
  41. }
  42. TEST(WriteFlagsTest, intersectionOperator) {
  43. ASSERT_EQ(WriteFlags::NONE & WriteFlags::CORK, WriteFlags::NONE);
  44. WriteFlags flags =
  45. WriteFlags::CORK | WriteFlags::EOR | WriteFlags::WRITE_SHUTDOWN;
  46. ASSERT_EQ(flags & WriteFlags::CORK, WriteFlags::CORK);
  47. ASSERT_EQ(flags & WriteFlags::EOR, WriteFlags::EOR);
  48. ASSERT_EQ(flags & WriteFlags::WRITE_SHUTDOWN, WriteFlags::WRITE_SHUTDOWN);
  49. }
  50. TEST(WriteFlagsTest, exclusionOperator) {
  51. ASSERT_FALSE(isSet(~WriteFlags::CORK, WriteFlags::CORK));
  52. ASSERT_TRUE(isSet(~WriteFlags::CORK, WriteFlags::EOR));
  53. ASSERT_TRUE(isSet(~WriteFlags::CORK, WriteFlags::WRITE_SHUTDOWN));
  54. ASSERT_FALSE(isSet(~WriteFlags::EOR, WriteFlags::EOR));
  55. ASSERT_TRUE(isSet(~WriteFlags::EOR, WriteFlags::CORK));
  56. ASSERT_TRUE(isSet(~WriteFlags::EOR, WriteFlags::WRITE_SHUTDOWN));
  57. }
  58. TEST(WriteFlagsTest, unsetOperator) {
  59. WriteFlags flags =
  60. WriteFlags::CORK | WriteFlags::EOR | WriteFlags::WRITE_SHUTDOWN;
  61. ASSERT_TRUE(isSet(flags, WriteFlags::CORK));
  62. ASSERT_TRUE(isSet(flags, WriteFlags::EOR));
  63. ASSERT_TRUE(isSet(flags, WriteFlags::WRITE_SHUTDOWN));
  64. flags = WriteFlags::CORK;
  65. ASSERT_TRUE(isSet(flags, WriteFlags::CORK));
  66. ASSERT_FALSE(isSet(flags, WriteFlags::EOR));
  67. ASSERT_FALSE(isSet(flags, WriteFlags::WRITE_SHUTDOWN));
  68. }
  69. TEST(WriteFlagsTest, compoundAssignmentUnionOperator) {
  70. WriteFlags flags = WriteFlags::NONE;
  71. flags |= WriteFlags::CORK;
  72. ASSERT_EQ(flags, WriteFlags::CORK);
  73. flags = WriteFlags::CORK;
  74. flags |= WriteFlags::EOR;
  75. ASSERT_EQ(flags, WriteFlags::CORK | WriteFlags::EOR);
  76. flags = WriteFlags::CORK | WriteFlags::EOR;
  77. flags |= WriteFlags::CORK;
  78. ASSERT_EQ(flags, WriteFlags::CORK | WriteFlags::EOR);
  79. }
  80. TEST(WriteFlagsTest, compoundAssignmentIntersectionOperator) {
  81. WriteFlags flags = WriteFlags::CORK | WriteFlags::EOR;
  82. flags &= WriteFlags::CORK;
  83. ASSERT_EQ(flags, WriteFlags::CORK);
  84. flags = WriteFlags::CORK | WriteFlags::EOR;
  85. flags &= WriteFlags::EOR;
  86. ASSERT_EQ(flags, WriteFlags::EOR);
  87. flags = WriteFlags::NONE;
  88. flags &= WriteFlags::EOR;
  89. ASSERT_EQ(flags, WriteFlags::NONE);
  90. }
  91. } // namespace folly