1 /*
2  * Copyright (C) 2010 The Android Open Source Project
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 package com.android.quicksearchbox.util;
18 
19 import static junit.framework.Assert.assertEquals;
20 
21 /**
22  * A task that knows how many times it has been run.
23  */
24 public class MockTask implements NamedTask {
25     private final String mName;
26     private final int mId;
27     private int mRunCount = 0;
28 
MockTask(String name, int id)29     public MockTask(String name, int id) {
30         mName = name;
31         mId = id;
32     }
33 
getName()34     public String getName() {
35         return mName;
36     }
37 
run()38     public synchronized void run() {
39         mRunCount++;
40         notifyAll();
41     }
42 
getRunCount()43     public synchronized int getRunCount() {
44         return mRunCount;
45     }
46 
waitForCompletion()47     public synchronized void waitForCompletion() throws InterruptedException {
48         while (mRunCount == 0) {
49             wait();
50         }
51     }
52 
53     @Override
toString()54     public String toString() {
55         return mName + mId;
56     }
57 
assertRunCount(String message, int count)58     public void assertRunCount(String message, int count) {
59         assertEquals(message + ": " + toString() + " bad run count", count, getRunCount());
60     }
61 
assertRanNever(String message)62     public void assertRanNever(String message) {
63         assertRunCount(message, 0);
64     }
65 
assertRanOnce(String message)66     public void assertRanOnce(String message) {
67         assertRunCount(message, 1);
68     }
69 
assertRanNever(String message, MockTask... tasks)70     public static void assertRanNever(String message, MockTask... tasks) {
71         for (MockTask task : tasks) {
72             task.assertRanNever(message);
73         }
74     }
75 
assertRanOnce(String message, MockTask... tasks)76     public static void assertRanOnce(String message, MockTask... tasks) {
77         for (MockTask task : tasks) {
78             task.assertRanOnce(message);
79         }
80     }
81 
82 }
83