Daniel Zlotin 8 年之前
父節點
當前提交
104385d975
共有 1 個檔案被更改,包括 38 行新增22 行删除
  1. 38
    22
      lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/NavigatorTest.java

+ 38
- 22
lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/NavigatorTest.java 查看文件

1
 package com.reactnativenavigation.viewcontrollers;
1
 package com.reactnativenavigation.viewcontrollers;
2
 
2
 
3
 import android.app.Activity;
3
 import android.app.Activity;
4
+import android.support.annotation.NonNull;
4
 import android.view.ViewGroup;
5
 import android.view.ViewGroup;
5
 
6
 
6
 import com.reactnativenavigation.BaseTest;
7
 import com.reactnativenavigation.BaseTest;
7
 import com.reactnativenavigation.mocks.SimpleViewController;
8
 import com.reactnativenavigation.mocks.SimpleViewController;
8
 import com.reactnativenavigation.mocks.TestStackAnimator;
9
 import com.reactnativenavigation.mocks.TestStackAnimator;
10
+import com.reactnativenavigation.utils.CompatUtils;
9
 
11
 
10
 import org.junit.Test;
12
 import org.junit.Test;
11
 import org.robolectric.Shadows;
13
 import org.robolectric.Shadows;
20
 	private ViewController child1;
22
 	private ViewController child1;
21
 	private ViewController child2;
23
 	private ViewController child2;
22
 	private ViewController child3;
24
 	private ViewController child3;
25
+	private ViewController child4;
26
+	private ViewController child5;
23
 
27
 
24
 	@Override
28
 	@Override
25
 	public void beforeEach() {
29
 	public void beforeEach() {
29
 		child1 = new SimpleViewController(activity, "child1");
33
 		child1 = new SimpleViewController(activity, "child1");
30
 		child2 = new SimpleViewController(activity, "child2");
34
 		child2 = new SimpleViewController(activity, "child2");
31
 		child3 = new SimpleViewController(activity, "child3");
35
 		child3 = new SimpleViewController(activity, "child3");
36
+		child4 = new SimpleViewController(activity, "child4");
37
+		child5 = new SimpleViewController(activity, "child5");
32
 	}
38
 	}
33
 
39
 
34
 
40
 
72
 
78
 
73
 	@Test
79
 	@Test
74
 	public void push() throws Exception {
80
 	public void push() throws Exception {
75
-		StackController stackController = new StackController(activity, "stack1", new TestStackAnimator());
81
+		StackController stackController = newStack();
76
 		stackController.push(child1);
82
 		stackController.push(child1);
77
 		uut.setRoot(stackController);
83
 		uut.setRoot(stackController);
78
 
84
 
94
 
100
 
95
 	@Test
101
 	@Test
96
 	public void push_OnCorrectStackByFindingChildId() throws Exception {
102
 	public void push_OnCorrectStackByFindingChildId() throws Exception {
97
-		BottomTabsController bottomTabsController = new BottomTabsController(activity, "tabsController");
98
-		StackController stack1 = new StackController(activity, "stack1", new TestStackAnimator());
99
-		StackController stack2 = new StackController(activity, "stack2", new TestStackAnimator());
103
+		BottomTabsController bottomTabsController = newTabs();
104
+		StackController stack1 = newStack();
105
+		StackController stack2 = newStack();
100
 		stack1.push(child1);
106
 		stack1.push(child1);
101
 		stack2.push(child2);
107
 		stack2.push(child2);
102
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
108
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
114
 		uut.pop("123");
120
 		uut.pop("123");
115
 		uut.setRoot(child1);
121
 		uut.setRoot(child1);
116
 		uut.pop(child1.getId());
122
 		uut.pop(child1.getId());
123
+		assertThat(uut.getChildControllers()).hasSize(1);
117
 	}
124
 	}
118
 
125
 
119
 	@Test
126
 	@Test
120
 	public void pop_FromCorrectStackByFindingChildId() throws Exception {
127
 	public void pop_FromCorrectStackByFindingChildId() throws Exception {
121
-		BottomTabsController bottomTabsController = new BottomTabsController(activity, "tabsController");
122
-		StackController stack1 = new StackController(activity, "stack1", new TestStackAnimator());
123
-		StackController stack2 = new StackController(activity, "stack2", new TestStackAnimator());
128
+		BottomTabsController bottomTabsController = newTabs();
129
+		StackController stack1 = newStack();
130
+		StackController stack2 = newStack();
124
 		stack1.push(child1);
131
 		stack1.push(child1);
125
 		stack2.push(child2);
132
 		stack2.push(child2);
126
 		stack2.push(child3);
133
 		stack2.push(child3);
127
-		stack2.push(new SimpleViewController(activity, "child4"));
134
+		stack2.push(child4);
128
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
135
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
129
 		uut.setRoot(bottomTabsController);
136
 		uut.setRoot(bottomTabsController);
130
 
137
 
135
 
142
 
136
 	@Test
143
 	@Test
137
 	public void popSpecific() throws Exception {
144
 	public void popSpecific() throws Exception {
138
-		BottomTabsController bottomTabsController = new BottomTabsController(activity, "tabsController");
139
-		StackController stack1 = new StackController(activity, "stack1", new TestStackAnimator());
140
-		StackController stack2 = new StackController(activity, "stack2", new TestStackAnimator());
145
+		BottomTabsController bottomTabsController = newTabs();
146
+		StackController stack1 = newStack();
147
+		StackController stack2 = newStack();
141
 		stack1.push(child1);
148
 		stack1.push(child1);
142
 		stack2.push(child2);
149
 		stack2.push(child2);
143
 		stack2.push(child3);
150
 		stack2.push(child3);
144
-		SimpleViewController child4 = new SimpleViewController(activity, "child4");
145
 		stack2.push(child4);
151
 		stack2.push(child4);
146
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
152
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
147
 		uut.setRoot(bottomTabsController);
153
 		uut.setRoot(bottomTabsController);
153
 
159
 
154
 	@Test
160
 	@Test
155
 	public void popTo_FromCorrectStackUpToChild() throws Exception {
161
 	public void popTo_FromCorrectStackUpToChild() throws Exception {
156
-		BottomTabsController bottomTabsController = new BottomTabsController(activity, "tabsController");
157
-		StackController stack1 = new StackController(activity, "stack1", new TestStackAnimator());
158
-		StackController stack2 = new StackController(activity, "stack2", new TestStackAnimator());
162
+		BottomTabsController bottomTabsController = newTabs();
163
+		StackController stack1 = newStack();
164
+		StackController stack2 = newStack();
159
 		stack1.push(child1);
165
 		stack1.push(child1);
160
 		stack2.push(child2);
166
 		stack2.push(child2);
161
 		stack2.push(child3);
167
 		stack2.push(child3);
162
-		stack2.push(new SimpleViewController(activity, "child4"));
163
-		stack2.push(new SimpleViewController(activity, "child5"));
168
+		stack2.push(child4);
169
+		stack2.push(child5);
164
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
170
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
165
 		uut.setRoot(bottomTabsController);
171
 		uut.setRoot(bottomTabsController);
166
 
172
 
171
 
177
 
172
 	@Test
178
 	@Test
173
 	public void popToRoot() throws Exception {
179
 	public void popToRoot() throws Exception {
174
-		BottomTabsController bottomTabsController = new BottomTabsController(activity, "tabsController");
175
-		StackController stack1 = new StackController(activity, "stack1", new TestStackAnimator());
176
-		StackController stack2 = new StackController(activity, "stack2", new TestStackAnimator());
180
+		BottomTabsController bottomTabsController = newTabs();
181
+		StackController stack1 = newStack();
182
+		StackController stack2 = newStack();
177
 		stack1.push(child1);
183
 		stack1.push(child1);
178
 		stack2.push(child2);
184
 		stack2.push(child2);
179
 		stack2.push(child3);
185
 		stack2.push(child3);
180
-		stack2.push(new SimpleViewController(activity, "child4"));
181
-		stack2.push(new SimpleViewController(activity, "child5"));
186
+		stack2.push(child4);
187
+		stack2.push(child5);
182
 
188
 
183
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
189
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
184
 		uut.setRoot(bottomTabsController);
190
 		uut.setRoot(bottomTabsController);
188
 		assertThat(stack2.getChildControllers()).containsOnly(child2);
194
 		assertThat(stack2.getChildControllers()).containsOnly(child2);
189
 	}
195
 	}
190
 
196
 
197
+	@NonNull
198
+	private BottomTabsController newTabs() {
199
+		return new BottomTabsController(activity, "tabsController");
200
+	}
201
+
191
 	private void assertHasSingleChildViewOf(ViewController parent, ViewController child) {
202
 	private void assertHasSingleChildViewOf(ViewController parent, ViewController child) {
192
 		assertThat(((ViewGroup) parent.getView()).getChildCount()).isEqualTo(1);
203
 		assertThat(((ViewGroup) parent.getView()).getChildCount()).isEqualTo(1);
193
 		assertThat(((ViewGroup) parent.getView()).getChildAt(0)).isEqualTo(child.getView()).isNotNull();
204
 		assertThat(((ViewGroup) parent.getView()).getChildAt(0)).isEqualTo(child.getView()).isNotNull();
194
 	}
205
 	}
206
+
207
+	@NonNull
208
+	private StackController newStack() {
209
+		return new StackController(activity, "stack" + CompatUtils.generateViewId(), new TestStackAnimator());
210
+	}
195
 }
211
 }