|  | @@ -3,22 +3,19 @@ package com.reactnativenavigation.viewcontrollers;
 | 
	
		
			
			| 3 | 3 |  import android.app.Activity;
 | 
	
		
			
			| 4 | 4 |  import android.support.annotation.NonNull;
 | 
	
		
			
			| 5 | 5 |  import android.support.design.widget.BottomNavigationView;
 | 
	
		
			
			| 6 |  | -import android.view.MenuItem;
 | 
	
		
			
			| 7 | 6 |  import android.view.View;
 | 
	
		
			
			| 8 | 7 |  import android.widget.RelativeLayout;
 | 
	
		
			
			| 9 | 8 |  
 | 
	
		
			
			| 10 | 9 |  import com.reactnativenavigation.BaseTest;
 | 
	
		
			
			| 11 | 10 |  import com.reactnativenavigation.mocks.SimpleViewController;
 | 
	
		
			
			| 12 | 11 |  
 | 
	
		
			
			| 13 |  | -import org.assertj.core.api.Condition;
 | 
	
		
			
			|  | 12 | +import org.assertj.core.api.iterable.Extractor;
 | 
	
		
			
			| 14 | 13 |  import org.junit.Test;
 | 
	
		
			
			| 15 | 14 |  
 | 
	
		
			
			| 16 | 15 |  import java.util.Arrays;
 | 
	
		
			
			| 17 | 16 |  import java.util.List;
 | 
	
		
			
			| 18 | 17 |  
 | 
	
		
			
			| 19 | 18 |  import static org.assertj.core.api.Java6Assertions.assertThat;
 | 
	
		
			
			| 20 |  | -import static org.mockito.Mockito.mock;
 | 
	
		
			
			| 21 |  | -import static org.mockito.Mockito.when;
 | 
	
		
			
			| 22 | 19 |  
 | 
	
		
			
			| 23 | 20 |  public class BottomTabsControllerTest extends BaseTest {
 | 
	
		
			
			| 24 | 21 |  
 | 
	
	
		
			
			|  | @@ -60,34 +57,28 @@ public class BottomTabsControllerTest extends BaseTest {
 | 
	
		
			
			| 60 | 57 |  		List<ViewController> tabs = createTabs();
 | 
	
		
			
			| 61 | 58 |  		uut.setTabs(tabs);
 | 
	
		
			
			| 62 | 59 |  		assertThat(uut.getView().getChildCount()).isEqualTo(6);
 | 
	
		
			
			| 63 |  | -		assertThat(uut.getView().getChildAt(1).getVisibility()).isEqualTo(View.VISIBLE);
 | 
	
		
			
			| 64 |  | -		assertThat(uut.getView().getChildAt(2).getVisibility()).isEqualTo(View.GONE);
 | 
	
		
			
			| 65 |  | -		assertThat(uut.getView().getChildAt(3).getVisibility()).isEqualTo(View.GONE);
 | 
	
		
			
			| 66 |  | -		assertThat(uut.getView().getChildAt(4).getVisibility()).isEqualTo(View.GONE);
 | 
	
		
			
			| 67 |  | -		assertThat(uut.getView().getChildAt(5).getVisibility()).isEqualTo(View.GONE);
 | 
	
		
			
			|  | 60 | +		assertThat(uut.getChildControllers()).extracting(new Extractor<ViewController, Integer>() {
 | 
	
		
			
			|  | 61 | +			@Override
 | 
	
		
			
			|  | 62 | +			public Integer extract(final ViewController input) {
 | 
	
		
			
			|  | 63 | +				return input.getView().getVisibility();
 | 
	
		
			
			|  | 64 | +			}
 | 
	
		
			
			|  | 65 | +		}).containsExactly(View.VISIBLE, View.GONE, View.GONE, View.GONE, View.GONE);
 | 
	
		
			
			| 68 | 66 |  	}
 | 
	
		
			
			| 69 | 67 |  
 | 
	
		
			
			| 70 | 68 |  	@Test
 | 
	
		
			
			| 71 |  | -	public void onTabSelected_SelectsTab() throws Exception {
 | 
	
		
			
			|  | 69 | +	public void selectTabAtIndex() throws Exception {
 | 
	
		
			
			| 72 | 70 |  		uut.setTabs(createTabs());
 | 
	
		
			
			| 73 | 71 |  		assertThat(uut.getSelectedIndex()).isZero();
 | 
	
		
			
			| 74 | 72 |  
 | 
	
		
			
			| 75 |  | -		MenuItem menuItem = mock(MenuItem.class);
 | 
	
		
			
			| 76 |  | -		when(menuItem.getItemId()).thenReturn(3);
 | 
	
		
			
			| 77 |  | -		assertThat(uut.onNavigationItemSelected(menuItem)).isTrue();
 | 
	
		
			
			|  | 73 | +		uut.selectTabAtIndex(3);
 | 
	
		
			
			| 78 | 74 |  
 | 
	
		
			
			| 79 | 75 |  		assertThat(uut.getSelectedIndex()).isEqualTo(3);
 | 
	
		
			
			| 80 |  | -		assertThat(uut.getChildControllers()).areExactly(1, new Condition<ViewController>() {
 | 
	
		
			
			|  | 76 | +		assertThat(uut.getChildControllers()).extracting(new Extractor<ViewController, Integer>() {
 | 
	
		
			
			| 81 | 77 |  			@Override
 | 
	
		
			
			| 82 |  | -			public boolean matches(final ViewController value) {
 | 
	
		
			
			| 83 |  | -				return value.getView().getVisibility() == View.VISIBLE;
 | 
	
		
			
			|  | 78 | +			public Integer extract(final ViewController input) {
 | 
	
		
			
			|  | 79 | +				return input.getView().getVisibility();
 | 
	
		
			
			| 84 | 80 |  			}
 | 
	
		
			
			| 85 |  | -		});
 | 
	
		
			
			| 86 |  | -//		assertThat(uut.getView().getChildAt(1).getVisibility()).isEqualTo(View.GONE);
 | 
	
		
			
			| 87 |  | -//		assertThat(uut.getView().getChildAt(2).getVisibility()).isEqualTo(View.GONE);
 | 
	
		
			
			| 88 |  | -//		assertThat(uut.getView().getChildAt(3).getVisibility()).isEqualTo(View.GONE);
 | 
	
		
			
			| 89 |  | -//		assertThat(uut.getView().getChildAt(4).getVisibility()).isEqualTo(View.VISIBLE);
 | 
	
		
			
			| 90 |  | -//		assertThat(uut.getView().getChildAt(5).getVisibility()).isEqualTo(View.GONE);
 | 
	
		
			
			|  | 81 | +		}).containsExactly(View.GONE, View.GONE, View.GONE, View.VISIBLE, View.GONE);
 | 
	
		
			
			| 91 | 82 |  	}
 | 
	
		
			
			| 92 | 83 |  
 | 
	
		
			
			| 93 | 84 |  	@Test
 |