mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
ce6fb337a1
Summary: It's now unnecessary to declare which JS modules you want to expose on your package. To upgrade, remove all overrides of `createJSModules` and keeping calling your JS modules as before. Reviewed By: AaaChiuuu Differential Revision: D5229259 fbshipit-source-id: 1160826c951433722f1fe0421c1200883ba1a348
131 lines
4.8 KiB
Java
131 lines
4.8 KiB
Java
/**
|
|
* Copyright (c) 2014-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
package com.facebook.react.tests;
|
|
|
|
import com.facebook.react.testing.ReactInstanceSpecForTest;
|
|
import com.facebook.react.bridge.JavaScriptModule;
|
|
import com.facebook.react.uimanager.UIManagerModule;
|
|
import com.facebook.react.testing.AssertModule;
|
|
import com.facebook.react.testing.ReactAppInstrumentationTestCase;
|
|
|
|
/**
|
|
* Tests for {@link UIManagerModule#measure}, {@link UIManagerModule#measureLayout}, and
|
|
* {@link UIManagerModule#measureLayoutRelativeToParent}. Tests measurement for views in the
|
|
* following hierarchy:
|
|
*
|
|
* +---------------------------------------------+
|
|
* | A |
|
|
* | |
|
|
* | +-----------+ +---------+ |
|
|
* | | B | | D | |
|
|
* | | +---+ | | | |
|
|
* | | | C | | | | |
|
|
* | | | | | +---------+ |
|
|
* | | +---+ | |
|
|
* | +-----------+ |
|
|
* | |
|
|
* | |
|
|
* | |
|
|
* +---------------------------------------------+
|
|
*
|
|
* View locations and dimensions:
|
|
* A - (0,0) to (500, 500) (500x500)
|
|
* B - (50,80) to (250, 380) (200x300)
|
|
* C - (150,150) to (200, 300) (50x150)
|
|
* D - (400,100) to (450, 300) (50x200)
|
|
*/
|
|
public class CatalystMeasureLayoutTest extends ReactAppInstrumentationTestCase {
|
|
|
|
private static interface MeasureLayoutTestModule extends JavaScriptModule {
|
|
public void verifyMeasureOnViewA();
|
|
public void verifyMeasureOnViewC();
|
|
public void verifyMeasureLayoutCRelativeToA();
|
|
public void verifyMeasureLayoutCRelativeToB();
|
|
public void verifyMeasureLayoutCRelativeToSelf();
|
|
public void verifyMeasureLayoutRelativeToParentOnViewA();
|
|
public void verifyMeasureLayoutRelativeToParentOnViewB();
|
|
public void verifyMeasureLayoutRelativeToParentOnViewC();
|
|
public void verifyMeasureLayoutDRelativeToB();
|
|
public void verifyMeasureLayoutNonExistentTag();
|
|
public void verifyMeasureLayoutNonExistentAncestor();
|
|
public void verifyMeasureLayoutRelativeToParentNonExistentTag();
|
|
}
|
|
|
|
private MeasureLayoutTestModule mTestJSModule;
|
|
private AssertModule mAssertModule;
|
|
|
|
@Override
|
|
protected void setUp() throws Exception {
|
|
super.setUp();
|
|
mTestJSModule = getReactContext().getJSModule(MeasureLayoutTestModule.class);
|
|
}
|
|
|
|
@Override
|
|
protected String getReactApplicationKeyUnderTest() {
|
|
return "MeasureLayoutTestApp";
|
|
}
|
|
|
|
@Override
|
|
protected ReactInstanceSpecForTest createReactInstanceSpecForTest() {
|
|
mAssertModule = new AssertModule();
|
|
return super.createReactInstanceSpecForTest()
|
|
.addNativeModule(mAssertModule);
|
|
}
|
|
|
|
private void waitForBridgeIdleAndVerifyAsserts() {
|
|
waitForBridgeAndUIIdle();
|
|
mAssertModule.verifyAssertsAndReset();
|
|
}
|
|
|
|
public void testMeasure() {
|
|
mTestJSModule.verifyMeasureOnViewA();
|
|
waitForBridgeIdleAndVerifyAsserts();
|
|
mTestJSModule.verifyMeasureOnViewC();
|
|
waitForBridgeIdleAndVerifyAsserts();
|
|
}
|
|
|
|
public void testMeasureLayout() {
|
|
mTestJSModule.verifyMeasureLayoutCRelativeToA();
|
|
waitForBridgeIdleAndVerifyAsserts();
|
|
mTestJSModule.verifyMeasureLayoutCRelativeToB();
|
|
waitForBridgeIdleAndVerifyAsserts();
|
|
mTestJSModule.verifyMeasureLayoutCRelativeToSelf();
|
|
waitForBridgeIdleAndVerifyAsserts();
|
|
}
|
|
|
|
public void testMeasureLayoutRelativeToParent() {
|
|
mTestJSModule.verifyMeasureLayoutRelativeToParentOnViewA();
|
|
waitForBridgeIdleAndVerifyAsserts();
|
|
mTestJSModule.verifyMeasureLayoutRelativeToParentOnViewB();
|
|
waitForBridgeIdleAndVerifyAsserts();
|
|
mTestJSModule.verifyMeasureLayoutRelativeToParentOnViewC();
|
|
waitForBridgeIdleAndVerifyAsserts();
|
|
}
|
|
|
|
public void testMeasureLayoutCallsErrorCallbackWhenViewIsNotChildOfAncestor() {
|
|
mTestJSModule.verifyMeasureLayoutDRelativeToB();
|
|
waitForBridgeIdleAndVerifyAsserts();
|
|
}
|
|
|
|
public void testMeasureLayoutCallsErrorCallbackWhenViewDoesNotExist() {
|
|
mTestJSModule.verifyMeasureLayoutNonExistentTag();
|
|
waitForBridgeIdleAndVerifyAsserts();
|
|
}
|
|
|
|
public void testMeasureLayoutCallsErrorCallbackWhenAncestorDoesNotExist() {
|
|
mTestJSModule.verifyMeasureLayoutNonExistentAncestor();
|
|
waitForBridgeIdleAndVerifyAsserts();
|
|
}
|
|
|
|
public void testMeasureLayoutRelativeToParentCallsErrorCallbackWhenViewDoesNotExist() {
|
|
mTestJSModule.verifyMeasureLayoutRelativeToParentNonExistentTag();
|
|
waitForBridgeIdleAndVerifyAsserts();
|
|
}
|
|
}
|