react-native-navigation 7.24.3 → 7.25.0-snapshot.552

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/lib/android/app/build.gradle +12 -9
  2. package/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java +7 -9
  3. package/lib/android/app/src/main/java/com/reactnativenavigation/options/BottomTabOptions.java +4 -0
  4. package/lib/android/app/src/main/java/com/reactnativenavigation/options/Options.java +2 -0
  5. package/lib/android/app/src/main/java/com/reactnativenavigation/options/OverlayOptions.java +3 -2
  6. package/lib/android/app/src/main/java/com/reactnativenavigation/options/OverlayOptions.kt +31 -0
  7. package/lib/android/app/src/main/java/com/reactnativenavigation/options/layout/LayoutInsets.kt +44 -0
  8. package/lib/android/app/src/main/java/com/reactnativenavigation/options/layout/LayoutOptions.kt +71 -0
  9. package/lib/android/app/src/main/java/com/reactnativenavigation/options/parsers/JSONParser.java +0 -2
  10. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/PrimitiveExt.kt +9 -0
  11. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenter.java +2 -1
  12. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +31 -4
  13. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildController.java +6 -13
  14. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +37 -12
  15. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalStack.java +4 -0
  16. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/navigator/Navigator.java +25 -6
  17. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManager.kt +104 -33
  18. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/parent/ParentController.java +86 -9
  19. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuController.java +12 -0
  20. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +18 -1
  21. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenter.java +51 -0
  22. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonController.kt +7 -1
  23. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonPresenter.kt +1 -1
  24. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/Presenter.java +23 -7
  25. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/RootPresenter.java +0 -1
  26. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java +24 -3
  27. package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabs.java +29 -1
  28. package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainer.kt +1 -0
  29. package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabsLayout.java +10 -1
  30. package/lib/android/app/src/main/java/com/reactnativenavigation/views/component/ComponentLayout.java +10 -2
  31. package/lib/android/app/src/main/java/com/reactnativenavigation/views/overlay/AttachedOverlayContainer.kt +69 -0
  32. package/lib/android/app/src/main/java/com/reactnativenavigation/views/overlay/ViewTooltip.java +921 -0
  33. package/lib/android/app/src/main/java/com/reactnativenavigation/views/sidemenu/SideMenuRoot.java +9 -1
  34. package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/StackLayout.java +14 -4
  35. package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/TopBar.java +0 -1
  36. package/lib/android/app/src/main/java/com/reactnativenavigation/views/toptabs/TopTabsStyleHelper.java +0 -1
  37. package/lib/dist/src/interfaces/Options.d.ts +34 -0
  38. package/lib/ios/RNNBasePresenter.m +17 -0
  39. package/lib/ios/RNNBottomTabsController.m +1 -0
  40. package/lib/ios/RNNBridgeManager.mm +5 -3
  41. package/lib/ios/RNNComponentViewController.m +5 -0
  42. package/lib/ios/RNNLayoutOptions.h +2 -1
  43. package/lib/ios/RNNLayoutOptions.m +4 -0
  44. package/lib/ios/RNNModalHostViewManagerHandler.h +11 -0
  45. package/lib/ios/RNNModalHostViewManagerHandler.m +40 -0
  46. package/lib/ios/RNNModalManager.h +2 -2
  47. package/lib/ios/RNNModalManager.m +0 -26
  48. package/lib/ios/RNNStackPresenter.m +1 -0
  49. package/lib/ios/ReactNativeNavigation.xcodeproj/project.pbxproj +8 -0
  50. package/lib/src/interfaces/Options.ts +38 -0
  51. package/package.json +3 -1
  52. package/.buildkite/pipeline.yml +0 -59
  53. package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutOptions.java +0 -48
  54. package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +0 -178
  55. package/lib/android/app/src/test/java/com/reactnativenavigation/EnvironmentTest.java +0 -43
  56. package/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java +0 -23
  57. package/lib/android/app/src/test/java/com/reactnativenavigation/TestApplication.java +0 -35
  58. package/lib/android/app/src/test/java/com/reactnativenavigation/TestUtils.java +0 -62
  59. package/lib/android/app/src/test/java/com/reactnativenavigation/fakes/IconResolverFake.kt +0 -8
  60. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/BackDrawable.java +0 -30
  61. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/ImageLoaderMock.kt +0 -49
  62. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/Mocks.kt +0 -18
  63. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleComponentViewController.java +0 -15
  64. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleOverlay.java +0 -54
  65. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleViewController.java +0 -113
  66. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentLayout.java +0 -79
  67. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentViewCreator.java +0 -18
  68. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestReactView.java +0 -71
  69. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarButtonCreatorMock.java +0 -34
  70. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarReactViewCreatorMock.java +0 -20
  71. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TopBarBackgroundViewCreatorMock.java +0 -20
  72. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TypefaceLoaderMock.kt +0 -21
  73. package/lib/android/app/src/test/java/com/reactnativenavigation/options/LayoutNodeParserTest.java +0 -51
  74. package/lib/android/app/src/test/java/com/reactnativenavigation/options/OptionsTest.java +0 -315
  75. package/lib/android/app/src/test/java/com/reactnativenavigation/options/OrientationOptionsTest.java +0 -81
  76. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TopBarButtonsTest.kt +0 -95
  77. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TransitionAnimationOptionsTest.kt +0 -122
  78. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/BoolParserTest.java +0 -28
  79. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/ColorParseTest.java +0 -50
  80. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/JSONParserTest.java +0 -64
  81. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/PresenterTest.java +0 -56
  82. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/RenderCheckerTest.java +0 -59
  83. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/SideMenuPresenterTest.java +0 -35
  84. package/lib/android/app/src/test/java/com/reactnativenavigation/react/NavigationModuleTest.java +0 -102
  85. package/lib/android/app/src/test/java/com/reactnativenavigation/react/ReloadListenerTest.java +0 -24
  86. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/AnimationHelper.kt +0 -33
  87. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonPresenterTest.java +0 -241
  88. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonSpanTest.java +0 -57
  89. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/CompatUtilsTest.java +0 -17
  90. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/LayoutFactoryTest.java +0 -78
  91. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/MotionEventTest.kt +0 -47
  92. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/NativeCommandListenerTest.java +0 -60
  93. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/OptionHelper.java +0 -16
  94. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ReflectionUtilsTest.java +0 -26
  95. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/StringUtilsTest.java +0 -19
  96. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/SystemUiUtilsTest.kt +0 -27
  97. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleAndButtonsMeasurerTest.kt +0 -357
  98. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleBarHelper.java +0 -54
  99. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiThreadTest.java +0 -29
  100. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiUtilsTest.java +0 -22
  101. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ViewHelper.java +0 -9
  102. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/OptionsApplyingTest.java +0 -149
  103. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenterTest.java +0 -206
  104. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAttacherTest.java +0 -62
  105. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt +0 -589
  106. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsPresenterTest.kt +0 -173
  107. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AfterInitialTabTest.java +0 -38
  108. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachModeTest.java +0 -86
  109. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/OnSwitchToTabTest.java +0 -31
  110. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/TogetherTest.java +0 -20
  111. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/button/NavigationIconResolverTest.java +0 -78
  112. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +0 -80
  113. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistryTest.java +0 -56
  114. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewControllerTest.java +0 -216
  115. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/ExternalComponentViewControllerTest.java +0 -97
  116. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/FragmentCreatorMock.java +0 -34
  117. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/SomeFragment.java +0 -8
  118. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/fakes/FakeParentController.kt +0 -33
  119. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorMock.java +0 -40
  120. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorTest.kt +0 -213
  121. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +0 -319
  122. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +0 -367
  123. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +0 -898
  124. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +0 -254
  125. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManagerTest.java +0 -108
  126. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +0 -299
  127. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +0 -446
  128. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/BackButtonHelperTest.java +0 -77
  129. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/FloatingActionButtonTest.java +0 -154
  130. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/IdStackTest.java +0 -114
  131. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +0 -241
  132. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +0 -1165
  133. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +0 -1081
  134. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarButtonControllerTest.java +0 -61
  135. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarReactViewControllerTest.java +0 -43
  136. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarButtonControllerTest.java +0 -120
  137. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +0 -432
  138. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsViewControllerTest.java +0 -249
  139. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerTest.java +0 -337
  140. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegateTest.java +0 -68
  141. package/lib/android/app/src/test/java/com/reactnativenavigation/views/OverlayTouchDelegateTest.java +0 -60
  142. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TitleAndButtonsContainerTest.kt +0 -477
  143. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TopBarTest.java +0 -82
  144. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/BaseViewAnimatorTest.kt +0 -109
  145. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/DefaultViewAnimatorCreatorFake.kt +0 -36
  146. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainerTest.kt +0 -101
  147. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsTest.kt +0 -40
  148. package/lib/android/app/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker +0 -1
@@ -1,114 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.stack;
2
-
3
- import com.reactnativenavigation.*;
4
-
5
- import org.junit.*;
6
-
7
- import static org.assertj.core.api.Java6Assertions.*;
8
-
9
- public class IdStackTest extends BaseTest {
10
-
11
- private IdStack<Integer> uut;
12
-
13
- @Override
14
- public void beforeEach() {
15
- super.beforeEach();
16
- uut = new IdStack<>();
17
- }
18
-
19
- @Test
20
- public void isEmpty() {
21
- assertThat(uut.isEmpty()).isTrue();
22
- uut.push("123", 123);
23
- assertThat(uut.isEmpty()).isFalse();
24
- }
25
-
26
- @Test
27
- public void size() {
28
- assertThat(uut.size()).isEqualTo(0);
29
- uut.push("123", 123);
30
- assertThat(uut.size()).isEqualTo(1);
31
- }
32
-
33
- @Test
34
- public void peek() {
35
- assertThat(uut.peek()).isNull();
36
- uut.push("123", 123);
37
- uut.push("456", 456);
38
- assertThat(uut.peek()).isEqualTo(456);
39
- }
40
-
41
- @Test
42
- public void pop() {
43
- assertThat(uut.pop()).isNull();
44
- uut.push("123", 123);
45
- uut.push("456", 456);
46
- assertThat(uut.pop()).isEqualTo(456);
47
- }
48
-
49
- @Test
50
- public void peekId() {
51
- assertThat(uut.peekId()).isNull();
52
- uut.push("123", 123);
53
- assertThat(uut.peekId()).isEqualTo("123");
54
- }
55
-
56
- @Test
57
- public void clear() {
58
- uut.push("123", 123);
59
- uut.push("456", 456);
60
- uut.clear();
61
- assertThat(uut.isEmpty()).isTrue();
62
- }
63
-
64
- @Test
65
- public void getById() {
66
- assertThat(uut.get("123")).isNull();
67
- uut.push("123", 123);
68
- uut.push("456", 456);
69
- assertThat(uut.get("123")).isEqualTo(123);
70
- }
71
-
72
- @Test
73
- public void containsId() {
74
- assertThat(uut.containsId("123")).isFalse();
75
- uut.push("123", 123);
76
- assertThat(uut.containsId("123")).isTrue();
77
- }
78
-
79
- @Test
80
- public void remove() {
81
- assertThat(uut.remove("123")).isNull();
82
-
83
- uut.push("123", 123);
84
- uut.push("456", 456);
85
-
86
- assertThat(uut.remove("123")).isEqualTo(123);
87
- }
88
-
89
- @Test
90
- public void iterableIds() {
91
- assertThat(uut).isInstanceOf(Iterable.class);
92
- assertThat(uut).isEmpty();
93
- uut.push("123", 123);
94
- uut.push("456", 456);
95
- assertThat(uut).containsExactly("123", "456");
96
- }
97
-
98
- @Test
99
- public void isTop() {
100
- assertThat(uut.isTop("123")).isFalse();
101
- uut.push("123", 123);
102
- assertThat(uut.isTop("123")).isTrue();
103
- uut.push("456", 456);
104
- assertThat(uut.isTop("123")).isFalse();
105
- }
106
-
107
- @Test
108
- public void values() {
109
- assertThat(uut.values()).isNotNull().isEmpty();
110
- uut.push("123", 123);
111
- uut.push("456", 456);
112
- assertThat(uut.values()).isNotNull().containsSequence(123, 456);
113
- }
114
- }
@@ -1,241 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.stack
2
-
3
- import android.animation.AnimatorSet
4
- import android.animation.ObjectAnimator
5
- import android.app.Activity
6
- import android.widget.FrameLayout
7
- import org.mockito.kotlin.*
8
- import com.reactnativenavigation.BaseTest
9
- import com.reactnativenavigation.mocks.Mocks
10
- import com.reactnativenavigation.mocks.SimpleViewController
11
- import com.reactnativenavigation.options.Options
12
- import com.reactnativenavigation.options.params.Bool
13
- import com.reactnativenavigation.utils.createEnterExitAnimation
14
- import com.reactnativenavigation.viewcontrollers.child.ChildControllersRegistry
15
- import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController
16
- import com.reactnativenavigation.views.element.TransitionAnimatorCreator
17
- import org.assertj.core.api.Java6Assertions.assertThat
18
- import org.junit.Test
19
-
20
- class StackAnimatorTest : BaseTest() {
21
- private lateinit var uut: StackAnimator
22
- private lateinit var activity: Activity
23
- private lateinit var child1: SimpleViewController
24
- private lateinit var child2: SimpleViewController
25
- private lateinit var commandAnimator: AnimatorSet
26
-
27
- override fun beforeEach() {
28
- activity = newActivity()
29
- val transitionAnimatorCreator = mock<TransitionAnimatorCreator> { }
30
- uut = object : StackAnimator(activity, transitionAnimatorCreator) {
31
- override fun createAnimatorSet(): AnimatorSet {
32
- commandAnimator = spy(super.createAnimatorSet())
33
- return commandAnimator
34
- }
35
- }
36
- val childRegistry = mock<ChildControllersRegistry>()
37
- child1 = SimpleViewController(activity, childRegistry, "child1", Options())
38
- child2 = SimpleViewController(activity, childRegistry, "child2", Options())
39
- }
40
-
41
- @Test
42
- fun push_onlyEnteringScreenIsAnimatedByDefault() {
43
- val onAnimationEnd = mock<Runnable>()
44
- uut.push(child2, child1, Options.EMPTY, emptyList(), onAnimationEnd)
45
-
46
- val pushAnimator = uut.runningPushAnimations[child2]!!
47
- assertThat(pushAnimator.childAnimations).hasSize(1)
48
- val appearingAnimatorSet = pushAnimator.childAnimations.first() as AnimatorSet
49
- (appearingAnimatorSet.childAnimations).forEach {
50
- assertThat((it as ObjectAnimator).target).isEqualTo(child2.view)
51
- }
52
- }
53
-
54
- @Test
55
- fun push_exitAndEnter() {
56
- createEnterExitPushAnimation(child2)
57
-
58
- val onAnimationEnd = mock<Runnable>()
59
- uut.push(child2, child1, child2.options, emptyList(), onAnimationEnd)
60
-
61
- assertThat(commandAnimator.childAnimations).hasSize(2)
62
-
63
- val enter = commandAnimator.childAnimations.first() as AnimatorSet
64
- (enter.childAnimations).forEach {
65
- assertThat((it as ObjectAnimator).target).isEqualTo(child2.view)
66
- }
67
-
68
- val exit = commandAnimator.childAnimations[1] as AnimatorSet
69
- (exit.childAnimations).forEach {
70
- assertThat((it as ObjectAnimator).target).isEqualTo(child1.view)
71
- }
72
- }
73
-
74
- @Test
75
- fun push_onAnimationEnd() {
76
- val onAnimationEnd = mock<Runnable>()
77
- uut.push(child2, child1, child2.options, emptyList(), onAnimationEnd)
78
-
79
- verify(onAnimationEnd, never()).run()
80
-
81
- commandAnimator.end()
82
- verify(onAnimationEnd).run()
83
- }
84
-
85
- @Test
86
- fun push_waitForRender_appearingScreenIsHiddenUntilAnimationStarts() {
87
- child2.options.animations.push.waitForRender = Bool(true)
88
-
89
- uut.push(child2, child1, child2.options, emptyList(), mock())
90
-
91
- assertThat(child2.view.alpha).isZero()
92
- child2.onViewWillAppear()
93
- idleMainLooper()
94
- assertThat(child2.view.alpha).isOne()
95
- }
96
-
97
- @Test
98
- fun pop_onlyExitAnimationIsPlayedByDefault() {
99
- val onAnimationEnd = mock<Runnable>()
100
- uut.pop(child1, child2, child2.options, emptyList(), onAnimationEnd)
101
-
102
- assertThat(commandAnimator.childAnimations).hasSize(1)
103
-
104
- val disappearingAnimatorSet = commandAnimator.childAnimations.first() as AnimatorSet
105
- (disappearingAnimatorSet.childAnimations).forEach {
106
- assertThat((it as ObjectAnimator).target).isEqualTo(child2.view)
107
- }
108
- }
109
-
110
- @Test
111
- fun pop_enterExitAnimations() {
112
- createEnterExitPopAnimation(child2)
113
-
114
- val onAnimationEnd = mock<Runnable>()
115
- uut.pop(child1, child2, child2.options, emptyList(), onAnimationEnd)
116
-
117
- assertThat(commandAnimator.childAnimations).hasSize(2)
118
-
119
- val enter = commandAnimator.childAnimations[1] as AnimatorSet
120
- (enter.childAnimations).forEach {
121
- assertThat((it as ObjectAnimator).target).isEqualTo(child1.view)
122
- }
123
-
124
- val exit = commandAnimator.childAnimations.first() as AnimatorSet
125
- (exit.childAnimations).forEach {
126
- assertThat((it as ObjectAnimator).target).isEqualTo(child2.view)
127
- }
128
- }
129
-
130
- @Test
131
- fun setRoot_onlyEnteringScreenIsAnimatedByDefault() {
132
- val onAnimationEnd = mock<Runnable>()
133
- uut.setRoot(child2, child2, child1.options, emptyList(), onAnimationEnd)
134
-
135
- assertThat(commandAnimator.childAnimations).hasSize(1)
136
- val appearingAnimatorSet = commandAnimator.childAnimations.first() as AnimatorSet
137
- (appearingAnimatorSet.childAnimations).forEach {
138
- assertThat((it as ObjectAnimator).target).isEqualTo(child2.view)
139
- }
140
- }
141
-
142
- @Test
143
- fun setRoot_enterExitAnimations() {
144
- createEnterExitSetRootAnimation(child2)
145
-
146
- val onAnimationEnd = mock<Runnable>()
147
- uut.setRoot(child2, child1, child2.options, emptyList(), onAnimationEnd)
148
-
149
- assertThat(commandAnimator.childAnimations).hasSize(2)
150
-
151
- val enter = commandAnimator.childAnimations[1] as AnimatorSet
152
- (enter.childAnimations).forEach {
153
- assertThat((it as ObjectAnimator).target).isEqualTo(child1.view)
154
- }
155
-
156
- val exit = commandAnimator.childAnimations.first() as AnimatorSet
157
- (exit.childAnimations).forEach {
158
- assertThat((it as ObjectAnimator).target).isEqualTo(child2.view)
159
- }
160
- }
161
-
162
- @Test
163
- fun setRoot_onAnimationEnd() {
164
- val onAnimationEnd = mock<Runnable>()
165
- uut.setRoot(child2, child1, child2.options, emptyList(), onAnimationEnd)
166
-
167
- verify(onAnimationEnd, never()).run()
168
-
169
- commandAnimator.end()
170
- verify(onAnimationEnd).run()
171
- }
172
-
173
- @Test
174
- fun setRoot_waitForRender() {
175
- val onAnimationEnd = mock<Runnable>()
176
- child2.options.animations.setStackRoot.waitForRender = Bool(true)
177
-
178
- uut.setRoot(child2, child1, child2.options, emptyList(), onAnimationEnd)
179
-
180
- verify(commandAnimator, never()).start()
181
- child2.onViewWillAppear()
182
- idleMainLooper()
183
- verify(commandAnimator).start()
184
- }
185
-
186
- @Test
187
- fun setRoot_waitForRender_appearingScreenIsHiddenUntilAnimationStarts() {
188
- val onAnimationEnd = mock<Runnable>()
189
- child2.options.animations.setStackRoot.waitForRender = Bool(true)
190
-
191
- uut.setRoot(child2, child1, child2.options, emptyList(), onAnimationEnd)
192
-
193
- assertThat(child2.view.alpha).isZero()
194
- child2.onViewWillAppear()
195
- idleMainLooper()
196
- assertThat(child2.view.alpha).isOne()
197
- }
198
-
199
- @Test
200
- fun isChildInTransition() {
201
- val child1: ViewController<*> = Mocks.viewController()
202
- uut.push(child1, mockViewController(), Options.EMPTY, emptyList(), mock())
203
- assertThat(uut.isChildInTransition(child1)).isTrue()
204
-
205
- val child2: ViewController<*> = Mocks.viewController()
206
- uut.setRoot(child2, mockViewController(), Options.EMPTY, emptyList(), mock())
207
- assertThat(uut.isChildInTransition(child2)).isTrue()
208
-
209
- val child3: ViewController<*> = Mocks.viewController()
210
- uut.pop(mock(), child3, Options.EMPTY, emptyList(), mock())
211
- assertThat(uut.isChildInTransition(child3)).isTrue()
212
- }
213
-
214
- private fun mockViewController(): ViewController<*> {
215
- val vc = mock<ViewController<*>>()
216
- val view = FrameLayout(activity)
217
- whenever(vc.view).thenReturn(view)
218
- return vc
219
- }
220
-
221
- private fun createEnterExitPushAnimation(vc: ViewController<*>) {
222
- Options().apply {
223
- animations.push.content = createEnterExitAnimation()
224
- vc.mergeOptions(this)
225
- }
226
- }
227
-
228
- private fun createEnterExitPopAnimation(vc: ViewController<*>) {
229
- Options().apply {
230
- animations.pop.content = createEnterExitAnimation()
231
- vc.mergeOptions(this)
232
- }
233
- }
234
-
235
- private fun createEnterExitSetRootAnimation(vc: ViewController<*>) {
236
- Options().apply {
237
- animations.setStackRoot.content = createEnterExitAnimation()
238
- vc.mergeOptions(this)
239
- }
240
- }
241
- }