create-expo-cljs-app
Version:
Create a react native application with Expo and Shadow-CLJS!
212 lines (200 loc) • 4.97 kB
JavaScript
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
;
const React = require('react');
const {StyleSheet, UIManager, View, findNodeHandle} = require('react-native');
const BatchedBridge = require('react-native/Libraries/BatchedBridge/BatchedBridge');
const assertEquals = require('./Asserts').assertEquals;
const styles = StyleSheet.create({
A: {
width: 500,
height: 500,
},
B: {
backgroundColor: 'rgb(255, 0, 0)',
left: 50,
top: 80,
width: 200,
height: 300,
},
C: {
backgroundColor: 'rgb(0, 255, 0)',
left: 100,
top: 70,
width: 50,
height: 150,
},
D: {
backgroundColor: 'rgb(0, 0, 255)',
left: 400,
top: 100,
width: 50,
height: 200,
},
});
let A, B, C, D;
class MeasureLayoutTestApp extends React.Component {
componentDidMount() {
A = findNodeHandle(this.refs.A);
B = findNodeHandle(this.refs.B);
C = findNodeHandle(this.refs.C);
D = findNodeHandle(this.refs.D);
}
render() {
return (
<View ref="A" style={styles.A} collapsable={false}>
<View ref="B" style={styles.B} collapsable={false}>
<View ref="C" style={styles.C} collapsable={false} />
</View>
<View ref="D" style={styles.D} collapsable={false} />
</View>
);
}
}
function shouldNotCallThisCallback() {
assertEquals(false, true);
}
const MeasureLayoutTestModule = {
MeasureLayoutTestApp: MeasureLayoutTestApp,
verifyMeasureOnViewA: function() {
UIManager.measure(A, function(a, b, width, height, x, y) {
assertEquals(500, width);
assertEquals(500, height);
assertEquals(0, x);
assertEquals(0, y);
});
},
verifyMeasureOnViewC: function() {
UIManager.measure(C, function(a, b, width, height, x, y) {
assertEquals(50, width);
assertEquals(150, height);
assertEquals(150, x);
assertEquals(150, y);
});
},
verifyMeasureLayoutCRelativeToA: function() {
UIManager.measureLayout(C, A, shouldNotCallThisCallback, function(
x,
y,
width,
height,
) {
assertEquals(50, width);
assertEquals(150, height);
assertEquals(150, x);
assertEquals(150, y);
});
},
verifyMeasureLayoutCRelativeToB: function() {
UIManager.measureLayout(C, B, shouldNotCallThisCallback, function(
x,
y,
width,
height,
) {
assertEquals(50, width);
assertEquals(150, height);
assertEquals(100, x);
assertEquals(70, y);
});
},
verifyMeasureLayoutCRelativeToSelf: function() {
UIManager.measureLayout(C, C, shouldNotCallThisCallback, function(
x,
y,
width,
height,
) {
assertEquals(50, width);
assertEquals(150, height);
assertEquals(0, x);
assertEquals(0, y);
});
},
verifyMeasureLayoutRelativeToParentOnViewA: function() {
UIManager.measureLayoutRelativeToParent(
A,
shouldNotCallThisCallback,
function(x, y, width, height) {
assertEquals(500, width);
assertEquals(500, height);
assertEquals(0, x);
assertEquals(0, y);
},
);
},
verifyMeasureLayoutRelativeToParentOnViewB: function() {
UIManager.measureLayoutRelativeToParent(
B,
shouldNotCallThisCallback,
function(x, y, width, height) {
assertEquals(200, width);
assertEquals(300, height);
assertEquals(50, x);
assertEquals(80, y);
},
);
},
verifyMeasureLayoutRelativeToParentOnViewC: function() {
UIManager.measureLayoutRelativeToParent(
C,
shouldNotCallThisCallback,
function(x, y, width, height) {
assertEquals(50, width);
assertEquals(150, height);
assertEquals(100, x);
assertEquals(70, y);
},
);
},
verifyMeasureLayoutDRelativeToB: function() {
UIManager.measureLayout(
D,
B,
function() {
assertEquals(true, true);
},
shouldNotCallThisCallback,
);
},
verifyMeasureLayoutNonExistentTag: function() {
UIManager.measureLayout(
192,
A,
function() {
assertEquals(true, true);
},
shouldNotCallThisCallback,
);
},
verifyMeasureLayoutNonExistentAncestor: function() {
UIManager.measureLayout(
B,
192,
function() {
assertEquals(true, true);
},
shouldNotCallThisCallback,
);
},
verifyMeasureLayoutRelativeToParentNonExistentTag: function() {
UIManager.measureLayoutRelativeToParent(
192,
function() {
assertEquals(true, true);
},
shouldNotCallThisCallback,
);
},
};
BatchedBridge.registerCallableModule(
'MeasureLayoutTestModule',
MeasureLayoutTestModule,
);
module.exports = MeasureLayoutTestModule;