// Path: app/src/main/java/com/newegg/tr/dagger2prac/model/action/Action.java
// public interface Action {
// 
//     public String hello();
// 
//     public String bye();
// 
//     public String fibonacci();
// 
//     public int calcFibNumber(int input);
// }
// 
// Path: app/src/main/java/com/newegg/tr/dagger2prac/presenter/MainPresenter.java
// public interface MainPresenter {
// 
//     public void onActionSelected(ActionType type);
// 
//     public void calcFib(int fibNumber);
// 
//     public void updateUser();
// }
// 
// Path: app/src/main/java/com/newegg/tr/dagger2prac/presenter/internal/MainPresenterImpl.java
// public class MainPresenterImpl implements MainPresenter {
// 
//     private final static ActionType DEFAULT_ACTION = ActionType.HELLO;
// 
//     MainPageView mView;
//     Action mModel;
// 
//     ActionType currentAction = DEFAULT_ACTION;
// 
//     @Inject
//     public MainPresenterImpl(MainPageView view, Action model) {
//         mModel = model;
//         mView = view;
//     }
// 
//     @Override
//     public void onActionSelected(ActionType type) {
//         String result = "Error";
//         boolean isShowInputMethod = false;
//         currentAction = type;
//         switch (type){
//             case HELLO:
//                 result = mModel.hello();
//                 isShowInputMethod = false;
//                 break;
//             case BYE:
//                 result = mModel.bye();
//                 isShowInputMethod = false;
//                 break;
//             case FIBONACCI:
//                 result = mModel.fibonacci();
//                 isShowInputMethod = true;
//                 break;
//         }
//         Log.e("MainPresenterImpl", "onActionSelected: " + result);
//         mView.showInputMethodView(isShowInputMethod);
//         mView.showActionResultText(result);
//     }
// 
//     @Override
//     public void calcFib(final int fibNumber) {
//         Log.e("MainPresenterImpl", "calcFib: " + fibNumber);
//         mView.showLoading();
// 
//         new AsyncTask<Void, Void, Integer>(){
// 
//             @Override
//             protected Integer doInBackground(Void... params) {
//                 return mModel.calcFibNumber(fibNumber);
//             }
// 
//             @Override
//             protected void onPostExecute(Integer result) {
//                 super.onPostExecute(result);
// 
//                 if(result == -1) {
//                     mView.onActionError();
//                 }else {
//                     mView.showActionResultText(result.toString());
//                 }
//                 mView.hideLoading();
//             }
//         }.execute();
//     }
// 
// 
// 
//     @Override
//     public void updateUser() {
//         onActionSelected(currentAction);
//     }
// 
// }
// 
// Path: app/src/main/java/com/newegg/tr/dagger2prac/view/MainPageView.java
// public interface MainPageView {
// 
//     public void showActionResultText(String resultText);
// 
//     public void showInputMethodView(boolean isShow);
// 
//     public void showLoading();
// 
//     public void hideLoading();
// 
//     public void onActionError();
// }


import com.newegg.tr.dagger2prac.model.action.Action;
import com.newegg.tr.dagger2prac.presenter.MainPresenter;
import com.newegg.tr.dagger2prac.presenter.internal.MainPresenterImpl;
import com.newegg.tr.dagger2prac.view.MainPageView;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
package com.newegg.tr.dagger2prac.view.module;





/**
 * Created by william on 15/2/17.
 */
@Module
public class TestMainModule {
    MainPageView mView;

    @Mock
    Action mActionModel;

// Path: app/src/main/java/com/newegg/tr/dagger2prac/model/action/Action.java
// public interface Action {
// 
//     public String hello();
// 
//     public String bye();
// 
//     public String fibonacci();
// 
//     public int calcFibNumber(int input);
// }
// 
// Path: app/src/main/java/com/newegg/tr/dagger2prac/presenter/MainPresenter.java
// public interface MainPresenter {
// 
//     public void onActionSelected(ActionType type);
// 
//     public void calcFib(int fibNumber);
// 
//     public void updateUser();
// }
// 
// Path: app/src/main/java/com/newegg/tr/dagger2prac/presenter/internal/MainPresenterImpl.java
// public class MainPresenterImpl implements MainPresenter {
// 
//     private final static ActionType DEFAULT_ACTION = ActionType.HELLO;
// 
//     MainPageView mView;
//     Action mModel;
// 
//     ActionType currentAction = DEFAULT_ACTION;
// 
//     @Inject
//     public MainPresenterImpl(MainPageView view, Action model) {
//         mModel = model;
//         mView = view;
//     }
// 
//     @Override
//     public void onActionSelected(ActionType type) {
//         String result = "Error";
//         boolean isShowInputMethod = false;
//         currentAction = type;
//         switch (type){
//             case HELLO:
//                 result = mModel.hello();
//                 isShowInputMethod = false;
//                 break;
//             case BYE:
//                 result = mModel.bye();
//                 isShowInputMethod = false;
//                 break;
//             case FIBONACCI:
//                 result = mModel.fibonacci();
//                 isShowInputMethod = true;
//                 break;
//         }
//         Log.e("MainPresenterImpl", "onActionSelected: " + result);
//         mView.showInputMethodView(isShowInputMethod);
//         mView.showActionResultText(result);
//     }
// 
//     @Override
//     public void calcFib(final int fibNumber) {
//         Log.e("MainPresenterImpl", "calcFib: " + fibNumber);
//         mView.showLoading();
// 
//         new AsyncTask<Void, Void, Integer>(){
// 
//             @Override
//             protected Integer doInBackground(Void... params) {
//                 return mModel.calcFibNumber(fibNumber);
//             }
// 
//             @Override
//             protected void onPostExecute(Integer result) {
//                 super.onPostExecute(result);
// 
//                 if(result == -1) {
//                     mView.onActionError();
//                 }else {
//                     mView.showActionResultText(result.toString());
//                 }
//                 mView.hideLoading();
//             }
//         }.execute();
//     }
// 
// 
// 
//     @Override
//     public void updateUser() {
//         onActionSelected(currentAction);
//     }
// 
// }
// 
// Path: app/src/main/java/com/newegg/tr/dagger2prac/view/MainPageView.java
// public interface MainPageView {
// 
//     public void showActionResultText(String resultText);
// 
//     public void showInputMethodView(boolean isShow);
// 
//     public void showLoading();
// 
//     public void hideLoading();
// 
//     public void onActionError();
// }


// Path: app/src/debug/java/com/newegg/tr/dagger2prac/view/module/TestMainModule.java
import com.newegg.tr.dagger2prac.model.action.Action;
import com.newegg.tr.dagger2prac.presenter.MainPresenter;
import com.newegg.tr.dagger2prac.presenter.internal.MainPresenterImpl;
import com.newegg.tr.dagger2prac.view.MainPageView;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;

package com.newegg.tr.dagger2prac.view.module;





/**
 * Created by william on 15/2/17.
 */
@Module
public class TestMainModule {
    MainPageView mView;

    @Mock
    Action mActionModel;

    public TestMainModule(MainPageView view) {