/** * 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.testing; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import com.facebook.react.bridge.BaseJavaModule; import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.ReactMethod; /** * This class is used to verify that some JS integration tests have completed successfully. * The JS integration tests can be started from a ReactIntegrationTestCase and upon * finishing successfully the {@link JSIntegrationTestChecker#testDone()} method will be called. * To verify if the test has completed successfully, call {#link JSIntegrationTestChecker#await()} * to wait for the test to run, and {#link JSIntegrationTestChecker#isTestDone()} to check if it * completed successfully. */ public class JSIntegrationTestChecker extends BaseJavaModule { private final CountDownLatch mLatch; public JSIntegrationTestChecker() { mLatch = new CountDownLatch(1); } @Override public String getName() { return "TestModule"; } @ReactMethod public void markTestCompleted() { mLatch.countDown(); } @ReactMethod public void verifySnapshot(Callback callback) { } public boolean await(long ms) { try { return mLatch.await(ms, TimeUnit.MILLISECONDS); } catch (InterruptedException ignore) { return false; } } public boolean isTestDone() { return mLatch.getCount() == 0; } }