/** * 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 * @flow */ 'use strict'; const React = require('react'); const ReactNative = require('react-native'); const {View} = ReactNative; const {TestModule} = ReactNative.NativeModules; class PromiseTest extends React.Component<{}> { shouldResolve = false; shouldReject = false; shouldSucceedAsync = false; shouldThrowAsync = false; componentDidMount() { Promise.all([ this.testShouldResolve(), this.testShouldReject(), this.testShouldSucceedAsync(), this.testShouldThrowAsync(), ]).then(() => TestModule.markTestPassed( this.shouldResolve && this.shouldReject && this.shouldSucceedAsync && this.shouldThrowAsync, ), ); } testShouldResolve = () => { return TestModule.shouldResolve() .then(() => (this.shouldResolve = true)) .catch(() => (this.shouldResolve = false)); }; testShouldReject = () => { return TestModule.shouldReject() .then(() => (this.shouldReject = false)) .catch(() => (this.shouldReject = true)); }; testShouldSucceedAsync = async (): Promise => { try { await TestModule.shouldResolve(); this.shouldSucceedAsync = true; } catch (e) { this.shouldSucceedAsync = false; } }; testShouldThrowAsync = async (): Promise => { try { await TestModule.shouldReject(); this.shouldThrowAsync = false; } catch (e) { this.shouldThrowAsync = true; } }; render(): React.Node { return ; } } PromiseTest.displayName = 'PromiseTest'; module.exports = PromiseTest;