react-native-navigation的迁移库

BaseTest.java 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package com.reactnativenavigation;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.support.v7.app.AppCompatActivity;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.FrameLayout;
  8. import com.reactnativenavigation.parse.params.Bool;
  9. import com.reactnativenavigation.utils.ViewUtils;
  10. import com.reactnativenavigation.viewcontrollers.ViewController;
  11. import org.junit.After;
  12. import org.junit.Before;
  13. import org.junit.runner.RunWith;
  14. import org.robolectric.Robolectric;
  15. import org.robolectric.RobolectricTestRunner;
  16. import org.robolectric.android.controller.ActivityController;
  17. import org.robolectric.annotation.Config;
  18. import java.util.Arrays;
  19. import static com.reactnativenavigation.utils.CollectionUtils.forEach;
  20. import static org.assertj.core.api.Java6Assertions.assertThat;
  21. @RunWith(RobolectricTestRunner.class)
  22. @Config(sdk = 27, application = TestApplication.class)
  23. public abstract class BaseTest {
  24. @Before
  25. public void beforeEach() {
  26. //
  27. }
  28. @After
  29. public void afterEach() {
  30. //
  31. }
  32. public Activity newActivity() {
  33. return Robolectric.setupActivity(AppCompatActivity.class);
  34. }
  35. public <T extends AppCompatActivity> ActivityController<T> newActivityController(Class<T> clazz) {
  36. return Robolectric.buildActivity(clazz);
  37. }
  38. public void assertIsChild(ViewGroup parent, ViewController... children) {
  39. forEach(Arrays.asList(children),c -> assertIsChild(parent, c.getView()));
  40. }
  41. public void assertIsChild(ViewGroup parent, View child) {
  42. assertThat(parent).isNotNull();
  43. assertThat(child).isNotNull();
  44. assertThat(ViewUtils.isChildOf(parent, child)).isTrue();
  45. }
  46. public void assertNotChildOf(ViewGroup parent, ViewController... children) {
  47. forEach(Arrays.asList(children), c -> assertNotChildOf(parent, c.getView()));
  48. }
  49. public void assertNotChildOf(ViewGroup parent, View child) {
  50. assertThat(parent).isNotNull();
  51. assertThat(child).isNotNull();
  52. assertThat(ViewUtils.isChildOf(parent, child)).isFalse();
  53. }
  54. protected void disablePushAnimation(ViewController... controllers) {
  55. for (ViewController controller : controllers) {
  56. controller.options.animations.push.enabled = new Bool(false);
  57. }
  58. }
  59. protected void disablePopAnimation(ViewController... controllers) {
  60. for (ViewController controller : controllers) {
  61. controller.options.animations.pop.enabled = new Bool(false);
  62. }
  63. }
  64. protected void disableModalAnimations(ViewController... modals) {
  65. disableShowModalAnimation(modals);
  66. disableDismissModalAnimation(modals);
  67. }
  68. protected void disableShowModalAnimation(ViewController... modals) {
  69. for (ViewController modal : modals) {
  70. modal.options.animations.showModal.enabled = new Bool(false);
  71. }
  72. }
  73. protected void disableDismissModalAnimation(ViewController... modals) {
  74. for (ViewController modal : modals) {
  75. modal.options.animations.dismissModal.enabled = new Bool(false);
  76. }
  77. }
  78. protected void dispatchPreDraw(View view) {
  79. view.getViewTreeObserver().dispatchOnPreDraw();
  80. }
  81. protected void dispatchOnGlobalLayout(View view) {
  82. view.getViewTreeObserver().dispatchOnGlobalLayout();
  83. }
  84. protected void addToParent(Context context, ViewController... controllers) {
  85. for (ViewController controller : controllers) {
  86. new FrameLayout(context).addView(controller.getView());
  87. }
  88. }
  89. }