package org.jcodec.common; import org.junit.Test; import java.util.Arrays; import static org.mockito.Matchers.*; import static org.mockito.Mockito.*; import android.graphics.Bitmap; import org.jcodec.common.model.ColorSpace; import org.jcodec.common.model.Picture; import org.jcodec.common.model.Picture8Bit; import org.jcodec.scale.BitmapUtil; import org.junit.Assert; public class AndroidUtilTest { @Test @Deprecated public void testToBitmap() { BitmapUtil bitmapUtil = mock(BitmapUtil.class); Picture expected = Picture.create(16, 16, ColorSpace.RGB); Picture src = Picture.create(16, 16, ColorSpace.YUV420J); Arrays.fill(src.getPlaneData(0), 169); Arrays.fill(src.getPlaneData(1), 45); Arrays.fill(src.getPlaneData(2), 103); for (int i = 0; i < 256 * 3; i += 3) { expected.getPlaneData(0)[i] = 134; expected.getPlaneData(0)[i + 1] = 215; expected.getPlaneData(0)[i + 2] = 22; } AndroidUtil util = new AndroidUtil(bitmapUtil); util.toBitmapImpl(src); verify(bitmapUtil).toBitmapImpl(eq(expected)); } @Test public void testToBitmap8Bit() { BitmapUtil bitmapUtil = mock(BitmapUtil.class); Picture8Bit expected = Picture8Bit.create(16, 16, ColorSpace.RGB); Picture8Bit src = Picture8Bit.create(16, 16, ColorSpace.YUV420J); Arrays.fill(src.getPlaneData(0), (byte) (169 - 128)); Arrays.fill(src.getPlaneData(1), (byte) (45 - 128)); Arrays.fill(src.getPlaneData(2), (byte) (103 - 128)); for (int i = 0; i < 256 * 3; i += 3) { expected.getPlaneData(0)[i] = (byte) (134 - 128); expected.getPlaneData(0)[i + 1] = (byte) (215 - 128); expected.getPlaneData(0)[i + 2] = (byte) (22 - 128); } AndroidUtil util = new AndroidUtil(bitmapUtil); util.toBitmap8BitImpl(src); verify(bitmapUtil).toBitmap8BitImpl(eq(expected)); } @Test @Deprecated public void testFromBitmap() { BitmapUtil bitmapUtil = mock(BitmapUtil.class); Picture src = Picture.create(16, 16, ColorSpace.RGB); for (int i = 0; i < 256 * 3; i += 3) { src.getPlaneData(0)[i] = 134; src.getPlaneData(0)[i + 1] = 215; src.getPlaneData(0)[i + 2] = 22; } when(bitmapUtil.fromBitmapImpl(any(Bitmap.class))).thenReturn(src); Picture expected = Picture.create(16, 16, ColorSpace.YUV420J); Arrays.fill(expected.getPlaneData(0), 168); Arrays.fill(expected.getPlaneData(1), 45); Arrays.fill(expected.getPlaneData(2), 103); AndroidUtil util = new AndroidUtil(bitmapUtil); Bitmap mock = mock(Bitmap.class); when(mock.getConfig()).thenReturn(Bitmap.Config.ARGB_8888); when(mock.getWidth()).thenReturn(16); when(mock.getHeight()).thenReturn(16); Picture res = util.fromBitmapImpl(mock, ColorSpace.YUV420J); Assert.assertEquals(expected, res); } @Test public void testFromBitmap8Bit() { BitmapUtil bitmapUtil = mock(BitmapUtil.class); Picture8Bit src = Picture8Bit.create(16, 16, ColorSpace.RGB); for (int i = 0; i < 256 * 3; i += 3) { src.getPlaneData(0)[i] = (byte) (134 - 128); src.getPlaneData(0)[i + 1] = (byte) (215 - 128); src.getPlaneData(0)[i + 2] = (byte) (22 - 128); } when(bitmapUtil.fromBitmap8BitImpl(any(Bitmap.class))).thenReturn(src); Picture8Bit expected = Picture8Bit.create(16, 16, ColorSpace.YUV420J); Arrays.fill(expected.getPlaneData(0), (byte) (168 - 128)); Arrays.fill(expected.getPlaneData(1), (byte) (45 - 128)); Arrays.fill(expected.getPlaneData(2), (byte) (103 - 128)); AndroidUtil util = new AndroidUtil(bitmapUtil); Bitmap mock = mock(Bitmap.class); when(mock.getConfig()).thenReturn(Bitmap.Config.ARGB_8888); when(mock.getWidth()).thenReturn(16); when(mock.getHeight()).thenReturn(16); Picture8Bit res = util.fromBitmap8BitImpl(mock, ColorSpace.YUV420J); Assert.assertEquals(expected, res); } }