codemod: merge folly/wangle and folly/experimental/wangle
[folly.git] / folly / wangle / concurrent / test / GlobalExecutorTest.cpp
1 /*
2  * Copyright 2014 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
17 #include <gtest/gtest.h>
18 #include <folly/wangle/concurrent/GlobalExecutor.h>
19 #include <folly/wangle/concurrent/IOExecutor.h>
20
21 using namespace folly::wangle;
22
23 TEST(GlobalExecutorTest, GlobalIOExecutor) {
24   class DummyExecutor : public IOExecutor {
25    public:
26     void add(folly::Func f) override {
27       count++;
28     }
29     folly::EventBase* getEventBase() override {
30       return nullptr;
31     }
32     int count{0};
33   };
34
35   auto f = [](){};
36
37   // Don't explode, we should create the default global IOExecutor lazily here.
38   getIOExecutor()->add(f);
39
40   {
41     DummyExecutor dummy;
42     setIOExecutor(&dummy);
43     getIOExecutor()->add(f);
44     // Make sure we were properly installed.
45     EXPECT_EQ(1, dummy.count);
46   }
47
48   // Don't explode, we should restore the default global IOExecutor when dummy
49   // is destructed.
50   getIOExecutor()->add(f);
51 }