mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
a665914d18
Reviewed By: tadeuzagallo Differential Revision: D3522855 fbshipit-source-id: 2d14db33ce9b98ea1aeea5a12e292e5926e43796
86 lines
2.9 KiB
Java
86 lines
2.9 KiB
Java
/**
|
|
* Copyright (c) 2015-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.cxxbridge;
|
|
|
|
import java.io.FileDescriptor;
|
|
import java.io.FileInputStream;
|
|
import java.io.FileOutputStream;
|
|
import java.io.InputStream;
|
|
import java.io.IOException;
|
|
|
|
import org.junit.Before;
|
|
import org.junit.Rule;
|
|
import org.junit.runner.RunWith;
|
|
import org.junit.Test;
|
|
import org.powermock.core.classloader.annotations.PowerMockIgnore;
|
|
import org.powermock.core.classloader.annotations.PrepareForTest;
|
|
import org.powermock.modules.junit4.rule.PowerMockRule;
|
|
import org.robolectric.RobolectricTestRunner;
|
|
|
|
import static org.junit.Assert.assertArrayEquals;
|
|
import static org.junit.Assert.assertFalse;
|
|
import static org.junit.Assert.assertTrue;
|
|
import static org.mockito.Matchers.any;
|
|
import static org.mockito.Matchers.eq;
|
|
import static org.mockito.Mockito.times;
|
|
import static org.powermock.api.mockito.PowerMockito.mockStatic;
|
|
import static org.powermock.api.mockito.PowerMockito.verifyStatic;
|
|
|
|
@PrepareForTest({UnpackingJSBundleLoader.class})
|
|
@PowerMockIgnore({ "org.mockito.*", "org.robolectric.*", "android.*" })
|
|
@RunWith(RobolectricTestRunner.class)
|
|
public class ContentCheckingUnpackerTest extends UnpackerTestBase {
|
|
@Rule
|
|
public PowerMockRule rule = new PowerMockRule();
|
|
|
|
private UnpackingJSBundleLoader.ContentCheckingUnpacker mUnpacker;
|
|
|
|
@Before
|
|
public void setUp() throws IOException {
|
|
super.setUp();
|
|
mUnpacker = new UnpackingJSBundleLoader.ContentCheckingUnpacker(
|
|
NAME_IN_APK,
|
|
DESTINATION_NAME);
|
|
mUnpacker.setDestinationDirectory(folder.getRoot());
|
|
}
|
|
|
|
@Test
|
|
public void testReconstructsIfFileDoesNotExist() throws IOException {
|
|
assertTrue(mUnpacker.shouldReconstructDir(mContext, mIOBuffer));
|
|
}
|
|
|
|
@Test
|
|
public void testReconstructsIfContentDoesNotMatch() throws IOException {
|
|
try (FileOutputStream fos = new FileOutputStream(mDestinationPath)) {
|
|
fos.write(ASSET_DATA, 0, ASSET_DATA.length - 1);
|
|
fos.write((byte) (ASSET_DATA[ASSET_DATA.length - 1] + 1));
|
|
}
|
|
assertTrue(mUnpacker.shouldReconstructDir(mContext, mIOBuffer));
|
|
}
|
|
|
|
@Test
|
|
public void testDoesNotReconstructIfContentMatches() throws IOException {
|
|
try (FileOutputStream fos = new FileOutputStream(mDestinationPath)) {
|
|
fos.write(ASSET_DATA);
|
|
}
|
|
assertFalse(mUnpacker.shouldReconstructDir(mContext, mIOBuffer));
|
|
}
|
|
|
|
@Test
|
|
public void testUnpacksFile() throws IOException {
|
|
mUnpacker.unpack(mContext, mIOBuffer);
|
|
assertTrue(mDestinationPath.exists());
|
|
try (InputStream is = new FileInputStream(mDestinationPath)) {
|
|
byte[] storedData = UnpackingJSBundleLoader.readBytes(is, mIOBuffer, Integer.MAX_VALUE);
|
|
assertArrayEquals(ASSET_DATA, storedData);
|
|
}
|
|
}
|
|
}
|