// Path: app/src/main/java/br/ufs/demos/rxmvp/playground/core/behaviours/emptystate/EmptyStateView.java
// public interface EmptyStateView {
// 
//     Action showEmptyState();
// 
//     Action hideEmptyState();
// 
// }
// 
// Path: app/src/main/java/br/ufs/demos/rxmvp/playground/core/behaviours/errorstate/ErrorStateView.java
// public interface ErrorStateView {
// 
//     Action showErrorState();
// 
//     Action hideErrorState();
// 
// }
// 
// Path: app/src/main/java/br/ufs/demos/rxmvp/playground/core/behaviours/loadingcontent/LoadingView.java
// public interface LoadingView {
// 
//     Action showLoading();
// 
//     Action hideLoading();
// 
// }
// 
// Path: app/src/main/java/br/ufs/demos/rxmvp/playground/core/behaviours/networking/NetworkingErrorView.java
// public interface NetworkingErrorView {
// 
//     Action reportNetworkingError();
// 
// }
// 
// Path: app/src/main/java/br/ufs/demos/rxmvp/playground/core/behaviours/tooglerefresh/ToogleRefreshView.java
// public interface ToogleRefreshView {
// 
//     Action disableRefresh();
// 
//     Action enableRefresh();
// 
// }
// 
// Path: app/src/test/java/br/ufs/demos/rxmvp/playground/util/MockitoHelpers.java
// public static VerificationMode oneTimeOnly() {
//     return VerificationModeFactory.times(1);
// }


import org.mockito.InOrder;
import br.ufs.demos.rxmvp.playground.core.behaviours.emptystate.EmptyStateView;
import br.ufs.demos.rxmvp.playground.core.behaviours.errorstate.ErrorStateView;
import br.ufs.demos.rxmvp.playground.core.behaviours.loadingcontent.LoadingView;
import br.ufs.demos.rxmvp.playground.core.behaviours.networking.NetworkingErrorView;
import br.ufs.demos.rxmvp.playground.core.behaviours.tooglerefresh.ToogleRefreshView;
import static br.ufs.demos.rxmvp.playground.util.MockitoHelpers.oneTimeOnly;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
        EmptyStateView view = (EmptyStateView) target;
        verify(view.showEmptyState(), oneTimeOnly()).run();
        return this;
    }

    public BehavioursRobot shouldNotShowEmptyState() throws Exception {
        checkEmptyStateView();
        EmptyStateView view = (EmptyStateView) target;
        verify(view.showEmptyState(), never()).run();
        return this;
    }

    public BehavioursRobot shouldReportNetworkingError() throws Exception {
        checkNetworkingErrorView();
        NetworkingErrorView view = (NetworkingErrorView) target;
        verify(view.reportNetworkingError(), oneTimeOnly()).run();
        return this;
    }

    public BehavioursRobot shouldNotReportNetworkingError() throws Exception {
        checkNetworkingErrorView();
        NetworkingErrorView view = (NetworkingErrorView) target;
        verify(view.reportNetworkingError(), never()).run();
        return this;
    }

    public BehavioursRobot showLoadingFirstHideLoadingAfter() throws Exception {
        checkLoadingView();
        LoadingView view = (LoadingView) target;
        verifyInOrderShowAndHideLoading(view);
// Path: app/src/main/java/br/ufs/demos/rxmvp/playground/core/behaviours/emptystate/EmptyStateView.java
// public interface EmptyStateView {
// 
//     Action showEmptyState();
// 
//     Action hideEmptyState();
// 
// }
// 
// Path: app/src/main/java/br/ufs/demos/rxmvp/playground/core/behaviours/errorstate/ErrorStateView.java
// public interface ErrorStateView {
// 
//     Action showErrorState();
// 
//     Action hideErrorState();
// 
// }
// 
// Path: app/src/main/java/br/ufs/demos/rxmvp/playground/core/behaviours/loadingcontent/LoadingView.java
// public interface LoadingView {
// 
//     Action showLoading();
// 
//     Action hideLoading();
// 
// }
// 
// Path: app/src/main/java/br/ufs/demos/rxmvp/playground/core/behaviours/networking/NetworkingErrorView.java
// public interface NetworkingErrorView {
// 
//     Action reportNetworkingError();
// 
// }
// 
// Path: app/src/main/java/br/ufs/demos/rxmvp/playground/core/behaviours/tooglerefresh/ToogleRefreshView.java
// public interface ToogleRefreshView {
// 
//     Action disableRefresh();
// 
//     Action enableRefresh();
// 
// }
// 
// Path: app/src/test/java/br/ufs/demos/rxmvp/playground/util/MockitoHelpers.java
// public static VerificationMode oneTimeOnly() {
//     return VerificationModeFactory.times(1);
// }


// Path: app/src/test/java/br/ufs/demos/rxmvp/playground/util/BehavioursRobot.java
import org.mockito.InOrder;
import br.ufs.demos.rxmvp.playground.core.behaviours.emptystate.EmptyStateView;
import br.ufs.demos.rxmvp.playground.core.behaviours.errorstate.ErrorStateView;
import br.ufs.demos.rxmvp.playground.core.behaviours.loadingcontent.LoadingView;
import br.ufs.demos.rxmvp.playground.core.behaviours.networking.NetworkingErrorView;
import br.ufs.demos.rxmvp.playground.core.behaviours.tooglerefresh.ToogleRefreshView;
import static br.ufs.demos.rxmvp.playground.util.MockitoHelpers.oneTimeOnly;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;

        EmptyStateView view = (EmptyStateView) target;
        verify(view.showEmptyState(), oneTimeOnly()).run();
        return this;
    }

    public BehavioursRobot shouldNotShowEmptyState() throws Exception {
        checkEmptyStateView();
        EmptyStateView view = (EmptyStateView) target;
        verify(view.showEmptyState(), never()).run();
        return this;
    }

    public BehavioursRobot shouldReportNetworkingError() throws Exception {
        checkNetworkingErrorView();
        NetworkingErrorView view = (NetworkingErrorView) target;
        verify(view.reportNetworkingError(), oneTimeOnly()).run();
        return this;
    }

    public BehavioursRobot shouldNotReportNetworkingError() throws Exception {
        checkNetworkingErrorView();
        NetworkingErrorView view = (NetworkingErrorView) target;
        verify(view.reportNetworkingError(), never()).run();
        return this;
    }

    public BehavioursRobot showLoadingFirstHideLoadingAfter() throws Exception {
        checkLoadingView();
        LoadingView view = (LoadingView) target;
        verifyInOrderShowAndHideLoading(view);
        return this;