Project: cow
package com.actionbarsherlock.tests.runner;
 
import java.util.LinkedList; 
import java.util.List; 
import java.util.concurrent.CountDownLatch; 
import android.app.Activity; 
import android.os.Build; 
import android.test.ActivityInstrumentationTestCase2; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.TextView; 
 
public abstract class BaseTestCase<T extends Activity> extends ActivityInstrumentationTestCase2<T> { 
 protected static final boolean IS_HONEYCOMB = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; 
  
 public BaseTestCase(Class<T> clazz) { 
  super(clazz); 
 
  
 protected View findViewByClassName(View root, String className) { 
  LinkedList<View> lookupQueue = new LinkedList<View>(); 
  lookupQueue.add(root); 
   
  while (!lookupQueue.isEmpty()) { 
   View target = lookupQueue.removeFirst(); 
   if (className.equals(target.getClass().getName())) { 
    return target; 
   
   if (target instanceof ViewGroup) { 
    ViewGroup targetGroup = (ViewGroup)target; 
    for (int i = 0, count = targetGroup.getChildCount(); i < count; i++) { 
     lookupQueue.addLast(targetGroup.getChildAt(i)); 
    
   
  
   
  return null
 
  
 protected List<View> findViewsByClassName(View root, String className) { 
  LinkedList<View> results = new LinkedList<View>(); 
  LinkedList<View> lookupQueue = new LinkedList<View>(); 
  lookupQueue.add(root); 
   
  while (!lookupQueue.isEmpty()) { 
   View target = lookupQueue.removeFirst(); 
   if (className.equals(target.getClass().getName())) { 
    results.add(target); 
   else if (target instanceof ViewGroup) { 
    ViewGroup targetGroup = (ViewGroup)target; 
    for (int i = 0, count = targetGroup.getChildCount(); i < count; i++) { 
     lookupQueue.addLast(targetGroup.getChildAt(i)); 
    
   
  
   
  return results; 
 
  
 protected View findActionItem(final String text) { 
  List<View> items = null
  if (IS_HONEYCOMB) { 
   items = findViewsByClassName(getActivity().getWindow().getDecorView(), "com.android.internal.view.menu.ActionMenuItemView"); 
   for (View item : items) { 
    Button textView = (Button)findViewByClassName(item, "android.widget.Button"); 
    if (textView != null && text.equals(textView.getText())) { 
     return textView; 
    
   
  else { 
   items = findViewsByClassName(getActivity().getWindow().getDecorView(), "com.actionbarsherlock.internal.view.menu.ActionMenuItemView"); 
   for (View item : items) { 
    TextView textView = (TextView)findViewByClassName(item, "android.widget.TextView"); 
    if (textView != null && text.equals(textView.getText())) { 
     return item; 
    
   
  
  return null
 
  
 protected void clickActionItem(final String text) { 
  final View result = findActionItem(text); 
  if (result != null) { 
   final CountDownLatch latch = new CountDownLatch(1); 
    
   getActivity().runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
     result.performClick(); 
     latch.countDown(); 
    
   }); 
    
   try { 
    latch.await(); 
   catch (InterruptedException e) { 
    e.printStackTrace(); 
   
  
 
 
 @Override 
 protected void tearDown() throws Exception { 
  getActivity().finish(); 
  super.tearDown(); 
 
}