• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2016, Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
8  *    * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *    * Redistributions in binary form must reproduce the above
11  * copyright notice, this list of conditions and the following disclaimer
12  * in the documentation and/or other materials provided with the
13  * distribution.
14  *
15  *    * Neither the name of Google Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from
17  * this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 package com.google.auth.oauth2;
33 
34 import java.util.LinkedList;
35 import java.util.concurrent.Executor;
36 
37 /** Mock thread-less executor. */
38 public final class MockExecutor implements Executor {
39   private LinkedList<Runnable> tasks = new LinkedList<Runnable>();
40 
41   @Override
execute(Runnable task)42   public void execute(Runnable task) {
43     tasks.add(task);
44   }
45 
runTasks()46   int runTasks() {
47     LinkedList<Runnable> savedTasks = tasks;
48     tasks = new LinkedList<Runnable>();
49     for (Runnable task : savedTasks) {
50       task.run();
51     }
52     return savedTasks.size();
53   }
54 
runTasksExhaustively()55   int runTasksExhaustively() {
56     int num = 0;
57     while (true) {
58       int thisNum = runTasks();
59       if (thisNum == 0) {
60         return num;
61       }
62       num += thisNum;
63     }
64   }
65 
numTasks()66   int numTasks() {
67     return tasks.size();
68   }
69 }
70