// Path: goro/src/main/java/com/stanfy/enroscar/goro/Goro.java
// static class GoroImpl extends Goro {
//   /** Listeners handler. */
//   final ListenersHandler listenersHandler = new ListenersHandler();
// 
//   /** Queues. */
//   private final Queues queues;
// 
//   GoroImpl() {
//     this(new Queues.Impl());
//   }
// 
//   GoroImpl(final Queues queues) {
//     this.queues = queues;
//   }
// 
//   @Override
//   public void addTaskListener(final GoroListener listener) {
//     listenersHandler.addTaskListener(listener);
//   }
// 
//   @Override
//   public void removeTaskListener(final GoroListener listener) {
//     listenersHandler.removeTaskListenerOrThrow(listener);
//   }
// 
//   @Override
//   public <T> ObservableFuture<T> schedule(final Callable<T> task) {
//     return schedule(DEFAULT_QUEUE, task);
//   }
// 
//   @Override
//   public <T> ObservableFuture<T> schedule(final String queueName, final Callable<T> task) {
//     if (task == null) {
//       throw new IllegalArgumentException("Task must not be null");
//     }
// 
//     GoroFuture<T> future = new GoroFuture<>(this, task);
//     listenersHandler.postSchedule(task, queueName);
//     queues.getExecutor(queueName).execute(future);
//     return future;
//   }
// 
//   @Override
//   public Executor getExecutor(final String queueName) {
//     return queues.getExecutor(queueName == null ? DEFAULT_QUEUE : queueName);
//   }
// 
//   @Override
//   protected void removeTasksInQueue(final String queueName) {
//     queues.clear(queueName);
//   }
// }


import android.os.Build;
import com.stanfy.enroscar.goro.Goro.GoroImpl;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InOrder;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicInteger;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.*;
package com.stanfy.enroscar.goro;






/**
 * Tests for {@link com.stanfy.enroscar.goro.Goro.GoroImpl}.
 */
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
public class GoroImplTest {

  /** Goro instance. */
// Path: goro/src/main/java/com/stanfy/enroscar/goro/Goro.java
// static class GoroImpl extends Goro {
//   /** Listeners handler. */
//   final ListenersHandler listenersHandler = new ListenersHandler();
// 
//   /** Queues. */
//   private final Queues queues;
// 
//   GoroImpl() {
//     this(new Queues.Impl());
//   }
// 
//   GoroImpl(final Queues queues) {
//     this.queues = queues;
//   }
// 
//   @Override
//   public void addTaskListener(final GoroListener listener) {
//     listenersHandler.addTaskListener(listener);
//   }
// 
//   @Override
//   public void removeTaskListener(final GoroListener listener) {
//     listenersHandler.removeTaskListenerOrThrow(listener);
//   }
// 
//   @Override
//   public <T> ObservableFuture<T> schedule(final Callable<T> task) {
//     return schedule(DEFAULT_QUEUE, task);
//   }
// 
//   @Override
//   public <T> ObservableFuture<T> schedule(final String queueName, final Callable<T> task) {
//     if (task == null) {
//       throw new IllegalArgumentException("Task must not be null");
//     }
// 
//     GoroFuture<T> future = new GoroFuture<>(this, task);
//     listenersHandler.postSchedule(task, queueName);
//     queues.getExecutor(queueName).execute(future);
//     return future;
//   }
// 
//   @Override
//   public Executor getExecutor(final String queueName) {
//     return queues.getExecutor(queueName == null ? DEFAULT_QUEUE : queueName);
//   }
// 
//   @Override
//   protected void removeTasksInQueue(final String queueName) {
//     queues.clear(queueName);
//   }
// }


// Path: goro/src/test/java/com/stanfy/enroscar/goro/GoroImplTest.java
import android.os.Build;
import com.stanfy.enroscar.goro.Goro.GoroImpl;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InOrder;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicInteger;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.*;

package com.stanfy.enroscar.goro;






/**
 * Tests for {@link com.stanfy.enroscar.goro.Goro.GoroImpl}.
 */
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
public class GoroImplTest {

  /** Goro instance. */
  private GoroImpl goro;