-<div class="remarkup-code-block" data-code-lang="cpp"><pre class="remarkup-code"><span class="c1">// The async interface we want to mock</span>
-<span class="k">class</span> <span class="nc">AsyncClient</span> <span class="p">{</span>
- <span class="nl">public:</span>
- <span class="k">virtual</span> <span class="n">Future</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">foo</span><span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="p">);</span>
-<span class="p">};</span>
-
-<span class="c1">// The mock implementation</span>
-<span class="k">class</span> <span class="nc">MockAsyncClient</span> <span class="o">:</span> <span class="k">public</span> <span class="n">AsyncClient</span> <span class="p">{</span>
- <span class="nl">public:</span>
- <span class="c1">// Declare a mock method foo_ that takes an int and returns an int</span>
- <span class="n">MOCK_METHOD1</span><span class="p">(</span><span class="n">foo_</span><span class="p">,</span> <span class="kt">int</span><span class="p">(</span><span class="kt">int</span><span class="p">));</span>
-
- <span class="c1">// Plug the mock into an override of the interface</span>
- <span class="n">Future</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">foo</span><span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="p">)</span> <span class="n">override</span> <span class="p">{</span>
- <span class="c1">// Lift the result back into a Future before returning</span>
- <span class="k">return</span> <span class="n">makeFuture</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">foo_</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
- <span class="p">}</span>
-<span class="p">};</span>
-
-<span class="c1">// Let's say that we're testing a class MyProxy that simply forwards foo()</span>
-<span class="c1">// calls to AsyncClient and returns the result</span>
-<span class="k">class</span> <span class="nc">MyProxy</span> <span class="p">{</span>
- <span class="nl">public:</span>
- <span class="n">Future</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">foo</span><span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="p">)</span> <span class="p">{</span>
- <span class="k">return</span> <span class="n">client</span><span class="o">-></span><span class="n">foo</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
- <span class="p">}</span>
- <span class="kt">void</span> <span class="n">setClient</span><span class="p">(</span><span class="n">AsyncClient</span><span class="o">*</span> <span class="n">client</span><span class="p">);</span>
- <span class="nl">private:</span>
- <span class="n">AsyncClient</span><span class="o">*</span> <span class="n">client</span><span class="p">;</span>
-<span class="p">};</span>
-
-<span class="c1">// Now, in our testing code</span>
-<span class="n">MyProxy</span> <span class="n">proxy</span><span class="p">;</span>
-<span class="n">MockAsyncClient</span> <span class="n">mockClient</span><span class="p">;</span>
-<span class="c1">// Inject the mock</span>
-<span class="n">proxy</span><span class="p">.</span><span class="n">setClient</span><span class="p">(</span><span class="o">&</span><span class="n">mockClient</span><span class="p">)</span>
-<span class="c1">// Set an expectation on the mock to be called with 42 and return 84</span>
-<span class="n">EXPECT_CALL</span><span class="p">(</span><span class="n">mockClient</span><span class="p">,</span> <span class="n">foo_</span><span class="p">(</span><span class="mi">42</span><span class="p">)).</span><span class="n">WillOnce</span><span class="p">(</span><span class="n">Return</span><span class="p">(</span><span class="mi">84</span><span class="p">));</span>
-<span class="c1">// Trigger the call</span>
-<span class="k">auto</span> <span class="n">f</span> <span class="o">=</span> <span class="n">MyProxy</span><span class="p">.</span><span class="n">foo</span><span class="p">(</span><span class="mi">42</span><span class="p">);</span>
-<span class="c1">// If everything has been mocked out synchronously, we can just check the</span>
-<span class="c1">// value of the future directly</span>
-<span class="n">EXPECT_EQ</span><span class="p">(</span><span class="mi">84</span><span class="p">,</span> <span class="n">f</span><span class="p">.</span><span class="n">value</span><span class="p">());</span></pre></div></section><section class="dex_document"><h1>Pitfalls</h1><p class="dex_introduction"></p><h2 id="eventbase-eventbasemanag">EventBase, EventBaseManager, Executor <a href="#eventbase-eventbasemanag" class="headerLink">#</a></h2>
+<div class="remarkup-code-block" data-code-lang="cpp"><pre class="remarkup-code"><span class="c1">// The async interface we want to mock
+</span><span class=""></span><span class="k">class</span><span class=""> </span><span class="nc">AsyncClient</span><span class=""> </span><span class="p">{</span><span class="">
+</span><span class=""> </span><span class="nl">public:</span><span class="">
+</span><span class=""> </span><span class="k">virtual</span><span class=""> </span><span class="n">Future</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class=""> </span><span class="n">foo</span><span class="p">(</span><span class="kt">int</span><span class=""> </span><span class="n">i</span><span class="p">)</span><span class="p">;</span><span class="">
+</span><span class=""></span><span class="p">}</span><span class="p">;</span><span class="">
+</span><span class="">
+</span><span class="c1">// The mock implementation
+</span><span class=""></span><span class="k">class</span><span class=""> </span><span class="nc">MockAsyncClient</span><span class=""> </span><span class="o">:</span><span class=""> </span><span class="k">public</span><span class=""> </span><span class="n">AsyncClient</span><span class=""> </span><span class="p">{</span><span class="">
+</span><span class=""> </span><span class="nl">public:</span><span class="">
+</span><span class=""> </span><span class="c1">// Declare a mock method foo_ that takes an int and returns an int
+</span><span class=""> </span><span class="n">MOCK_METHOD1</span><span class="p">(</span><span class="n">foo_</span><span class="p">,</span><span class=""> </span><span class="kt">int</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="p">)</span><span class="p">;</span><span class="">
+</span><span class="">
+</span><span class=""> </span><span class="c1">// Plug the mock into an override of the interface
+</span><span class=""> </span><span class=""></span><span class="n">Future</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class=""> </span><span class="n">foo</span><span class="p">(</span><span class="kt">int</span><span class=""> </span><span class="n">i</span><span class="p">)</span><span class=""> </span><span class="n">override</span><span class=""> </span><span class="p">{</span><span class="">
+</span><span class=""> </span><span class="c1">// Lift the result back into a Future before returning
+</span><span class=""> </span><span class="k">return</span><span class=""> </span><span class="n">makeFuture</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">foo_</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="p">)</span><span class="p">;</span><span class="">
+</span><span class=""> </span><span class=""></span><span class="p">}</span><span class="">
+</span><span class="p">}</span><span class="p">;</span><span class="">
+</span><span class="">
+</span><span class="c1">// Let's say that we're testing a class MyProxy that simply forwards foo()
+</span><span class="c1">// calls to AsyncClient and returns the result
+</span><span class=""></span><span class="k">class</span><span class=""> </span><span class="nc">MyProxy</span><span class=""> </span><span class="p">{</span><span class="">
+</span><span class=""> </span><span class="nl">public:</span><span class="">
+</span><span class=""> </span><span class="n">Future</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class=""> </span><span class="n">foo</span><span class="p">(</span><span class="kt">int</span><span class=""> </span><span class="n">i</span><span class="p">)</span><span class=""> </span><span class="p">{</span><span class="">
+</span><span class=""> </span><span class="k">return</span><span class=""> </span><span class="n">client</span><span class="o">-</span><span class="o">></span><span class="n">foo</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="p">;</span><span class="">
+</span><span class=""> </span><span class=""></span><span class="p">}</span><span class="">
+</span><span class=""> </span><span class="kt">void</span><span class=""> </span><span class="n">setClient</span><span class="p">(</span><span class="n">AsyncClient</span><span class="o">*</span><span class=""> </span><span class="n">client</span><span class="p">)</span><span class="p">;</span><span class="">
+</span><span class=""> </span><span class="nl">private:</span><span class="">
+</span><span class=""> </span><span class=""></span><span class="n">AsyncClient</span><span class="o">*</span><span class=""> </span><span class="n">client</span><span class="p">;</span><span class="">
+</span><span class=""></span><span class="p">}</span><span class="p">;</span><span class="">
+</span><span class="">
+</span><span class="c1">// Now, in our testing code
+</span><span class=""></span><span class="n">MyProxy</span><span class=""> </span><span class="n">proxy</span><span class="p">;</span><span class="">
+</span><span class=""></span><span class="n">MockAsyncClient</span><span class=""> </span><span class="n">mockClient</span><span class="p">;</span><span class="">
+</span><span class="c1">// Inject the mock
+</span><span class=""></span><span class="n">proxy</span><span class="p">.</span><span class="n">setClient</span><span class="p">(</span><span class="o">&</span><span class="n">mockClient</span><span class="p">)</span><span class="">
+</span><span class="c1">// Set an expectation on the mock to be called with 42 and return 84
+</span><span class="n">EXPECT_CALL</span><span class="p">(</span><span class="n">mockClient</span><span class="p">,</span><span class=""> </span><span class="n">foo_</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span><span class="p">)</span><span class="p">.</span><span class="n">WillOnce</span><span class="p">(</span><span class="n">Return</span><span class="p">(</span><span class="mi">84</span><span class="p">)</span><span class="p">)</span><span class="p">;</span><span class="">
+</span><span class="c1">// Trigger the call
+</span><span class=""></span><span class="k">auto</span><span class=""> </span><span class="n">f</span><span class=""> </span><span class="o">=</span><span class=""> </span><span class="n">MyProxy</span><span class="p">.</span><span class="n">foo</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span><span class="p">;</span><span class="">
+</span><span class="c1">// If everything has been mocked out synchronously, we can just check the
+</span><span class="c1">// value of the future directly
+</span><span class=""></span><span class="n">EXPECT_EQ</span><span class="p">(</span><span class="mi">84</span><span class="p">,</span><span class=""> </span><span class="n">f</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="p">)</span><span class="p">)</span><span class="p">;</span><span class="">
+</span><span class=""></span></pre></div></section><section class="dex_document"><h1>Pitfalls</h1><p class="dex_introduction"></p><h2 id="eventbase-eventbasemanag">EventBase, EventBaseManager, Executor <a href="#eventbase-eventbasemanag" class="headerLink">#</a></h2>