package com.imagepicker.testing.media; import com.facebook.react.bridge.JavaOnlyMap; import com.facebook.react.bridge.WritableMap; import com.imagepicker.media.ImageConfig; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import java.io.File; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; /** * Created by rusfearuth on 11.04.17. */ @RunWith(RobolectricTestRunner.class) public class ImageConfigTest { @Test public void testOnImmutable() { ImageConfig original = new ImageConfig(new File("original.txt"), new File("resized.txt"), 0, 0, 0, 0, false); ImageConfig updated = original.withOriginalFile(null); assertNotNull("Original has got original file", original.original); assertNull("Updated hasn't got original file", updated.original); updated = original.withResizedFile(null); assertNotNull("Original has got resized file", original.resized); assertNull("Updated hasn't got resized file", updated.resized); updated = original.withMaxWidth(1); assertEquals("Original max width", 0, original.maxWidth); assertEquals("Updated max width", 1, updated.maxWidth); updated = original.withMaxHeight(2); assertEquals("Original max height", 0, original.maxHeight); assertEquals("Updated max height", 2, updated.maxHeight); updated = original.withQuality(29); assertEquals("Original quality", 0, original.quality); assertEquals("Updated quality", 29, updated.quality); updated = original.withRotation(135); assertEquals("Original rotation", 0, original.rotation); assertEquals("Updated rotation", 135, updated.rotation); updated = original.withSaveToCameraRoll(true); assertEquals("Original saveToCameraRoll", false, original.saveToCameraRoll); assertEquals("Updated saveToCameraRoll", true, updated.saveToCameraRoll); } @Test public void testParsingOptions() { WritableMap options = defaultOptions(); ImageConfig config = new ImageConfig(null, null, 0, 0, 0, 0, false); config = config.updateFromOptions(options); assertEquals("maxWidth", 1000, config.maxWidth); assertEquals("maxHeight", 600, config.maxHeight); assertEquals("quality", 50, config.quality); assertEquals("rotation", 135, config.rotation); assertTrue("storageOptions.cameraRoll", config.saveToCameraRoll); } @Test public void testUseOriginal() { ImageConfig config = new ImageConfig(null, null, 800, 600, 100, 90, false); assertEquals("Image wont be resized", true, config.useOriginal(100, 100, 90)); assertEquals("Image will be resized because of rotation", false, config.useOriginal(100, 100, 80)); assertEquals("Image will be resized because of initial width", false, config.useOriginal(1000, 100, 80)); assertEquals("Image will be resized because of initial height", false, config.useOriginal(100, 1000, 80)); ImageConfig qualityIsLow = config.withQuality(90); assertEquals("Image will be resized because of quality is low", false, qualityIsLow.useOriginal(100, 100, 90)); } @Test public void testGetActualFile() { ImageConfig originalConfig = new ImageConfig(new File("original.txt"), null, 0, 0, 0, 0, false); ImageConfig resizedConfig = originalConfig.withResizedFile(new File("resized.txt")); assertEquals("For config which has got only original file", "original.txt", originalConfig.getActualFile().getName()); assertEquals("For config which has got resized file too", "resized.txt", resizedConfig.getActualFile().getName()); } private JavaOnlyMap defaultOptions() { JavaOnlyMap options = new JavaOnlyMap(); options.putInt("maxWidth", 1000); options.putInt("maxHeight", 600); options.putDouble("quality", 0.5); options.putInt("rotation", 135); JavaOnlyMap storage = new JavaOnlyMap(); storage.putBoolean("cameraRoll", true); options.putMap("storageOptions", storage); return options; } }