FragmentTestUtil.java revision 5da42343afdd9b343e89344aecb53875a5134242
1dcd23c6a5874355bb9296fd44cf0fc092ad5326fMyeongseok Baekpackage org.robolectric.util;
2dcd23c6a5874355bb9296fd44cf0fc092ad5326fMyeongseok Baek
3cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orrimport org.robolectric.Robolectric;
4cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr
5738df879d116e324c7c2a6afc649d9b8c8fa12d2Dandre' Allisonimport android.app.Activity;
6738df879d116e324c7c2a6afc649d9b8c8fa12d2Dandre' Allisonimport android.app.Fragment;
7cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orrimport android.app.FragmentManager;
83cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stottimport android.os.Bundle;
90b7537ef8b3e3bed85459ff4c214af07de81c1cdMyeongseok Baekimport android.support.v4.app.FragmentActivity;
103cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stottimport android.widget.LinearLayout;
110b7537ef8b3e3bed85459ff4c214af07de81c1cdMyeongseok Baek
12738df879d116e324c7c2a6afc649d9b8c8fa12d2Dandre' Allisonpublic final class FragmentTestUtil {
13738df879d116e324c7c2a6afc649d9b8c8fa12d2Dandre' Allison
1429a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams  public static void startFragment(Fragment fragment) {
15cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr    buildFragmentManager(FragmentUtilActivity.class)
16cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr        .beginTransaction().add(fragment, null).commit();
17738df879d116e324c7c2a6afc649d9b8c8fa12d2Dandre' Allison  }
18cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr
19cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr  public static void startFragment(Fragment fragment, Class<? extends Activity> activityClass) {
20e7fbfaa13f9230ce29eb9f159821b8e02e3068daJimmy Orr    buildFragmentManager(activityClass)
21e7fbfaa13f9230ce29eb9f159821b8e02e3068daJimmy Orr        .beginTransaction().add(fragment, null).commit();
22cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr  }
23cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr
24738df879d116e324c7c2a6afc649d9b8c8fa12d2Dandre' Allison  public static void startFragment(android.support.v4.app.Fragment fragment) {
25cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr    buildSupportFragmentManager(FragmentUtilActivity.class)
26cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr        .beginTransaction().add(fragment, null).commit();
27cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr  }
28cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr
29cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr  public static void startFragment(android.support.v4.app.Fragment fragment,
30cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr      Class<? extends FragmentActivity> fragmentActivityClass) {
31cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr    buildSupportFragmentManager(fragmentActivityClass)
32cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr        .beginTransaction().add(fragment, null).commit();
3329a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams  }
340b7537ef8b3e3bed85459ff4c214af07de81c1cdMyeongseok Baek
353cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott  public static void startVisibleFragment(Fragment fragment) {
36cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr    buildFragmentManager(FragmentUtilActivity.class)
37cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr        .beginTransaction().add(1, fragment, null).commit();
383cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott  }
393cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott
405da42343afdd9b343e89344aecb53875a5134242Tony Cosentini  public static void startVisibleFragment(Fragment fragment,
415da42343afdd9b343e89344aecb53875a5134242Tony Cosentini      Class<? extends Activity> activityClass, int containerViewId) {
425da42343afdd9b343e89344aecb53875a5134242Tony Cosentini    buildFragmentManager(activityClass)
435da42343afdd9b343e89344aecb53875a5134242Tony Cosentini        .beginTransaction().add(containerViewId, fragment, null).commit();
445da42343afdd9b343e89344aecb53875a5134242Tony Cosentini  }
455da42343afdd9b343e89344aecb53875a5134242Tony Cosentini
463cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott  public static void startVisibleFragment(android.support.v4.app.Fragment fragment) {
47cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr    buildSupportFragmentManager(FragmentUtilActivity.class)
48cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr        .beginTransaction().add(1, fragment, null).commit();
493cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott  }
503cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott
515da42343afdd9b343e89344aecb53875a5134242Tony Cosentini  public static void startVisibleFragment(android.support.v4.app.Fragment fragment,
525da42343afdd9b343e89344aecb53875a5134242Tony Cosentini      Class<?extends FragmentActivity> fragmentActivityClass, int containerViewId) {
535da42343afdd9b343e89344aecb53875a5134242Tony Cosentini    buildSupportFragmentManager(fragmentActivityClass)
545da42343afdd9b343e89344aecb53875a5134242Tony Cosentini        .beginTransaction().add(containerViewId, fragment, null).commit();
555da42343afdd9b343e89344aecb53875a5134242Tony Cosentini  }
565da42343afdd9b343e89344aecb53875a5134242Tony Cosentini
57cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr  private static FragmentManager buildFragmentManager(Class<? extends Activity> activityClass) {
58cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr    Activity activity = Robolectric.setupActivity(activityClass);
59b0f9dff48e989aa551b47fd72c5825cbe3cd4170Callum Stott    return activity.getFragmentManager();
60b0f9dff48e989aa551b47fd72c5825cbe3cd4170Callum Stott  }
613cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott
62cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr  private static android.support.v4.app.FragmentManager buildSupportFragmentManager(
63cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr      Class<? extends FragmentActivity> fragmentActivityClass) {
64cc4de4d4e1c9737a138521388a57d387510aa34eJimmy Orr    FragmentActivity activity = Robolectric.setupActivity(fragmentActivityClass);
65b0f9dff48e989aa551b47fd72c5825cbe3cd4170Callum Stott    return activity.getSupportFragmentManager();
663cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott  }
673cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott
68b0f9dff48e989aa551b47fd72c5825cbe3cd4170Callum Stott  private static class FragmentUtilActivity extends FragmentActivity {
693cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott    @Override
703cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott    protected void onCreate(Bundle savedInstanceState) {
713cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott      super.onCreate(savedInstanceState);
723cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott      LinearLayout view = new LinearLayout(this);
733cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott      view.setId(1);
743cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott
753cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott      setContentView(view);
763cf2701aa08d5b59c1ef4ab4a6d0580866762ba4Callum Stott    }
7729a8359eaef1ee9f40c967d3c4b5c1117c8c2a43Christian Williams  }
78dcd23c6a5874355bb9296fd44cf0fc092ad5326fMyeongseok Baek}
79