/** * 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.ArrayList; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import com.facebook.react.bridge.BaseJavaModule; import com.facebook.react.bridge.ReactMethod; /** * Native module provides single method {@link #record} which records its single int argument * in calls array */ public class IntRecordingModule extends BaseJavaModule { private final List<Integer> mCalls = new ArrayList<>(); private final CountDownLatch mCountDownLatch = new CountDownLatch(1); @Override public String getName() { return "Recording"; } @ReactMethod public void record(int i) { mCalls.add(i); mCountDownLatch.countDown(); } public void reset() { mCalls.clear(); } public List<Integer> getCalls() { return mCalls; } public void waitForFirstCall() { try { if (!mCountDownLatch.await(15000, TimeUnit.MILLISECONDS)) { throw new RuntimeException("Timed out waiting for first call"); } } catch (InterruptedException e) { throw new RuntimeException(e); } } }