Files
processing4/core/test/processing/core/Base64StringImageLoadTest.java
A Pottinger c14695476e Moves to Java11 and OpenJDK via AdoptOpenJDK within the processing4 train.
Moves to Java11 and OpenJDK via AdoptOpenJDK within the processing4 train using a squash of sampottinger processing fork's java11 branch.

**Primary required changes:**
Some changes directly support OpenJFX / OpenJDK 11:

 - Response to image loading changes caused by [JEP 320](https://openjdk.java.net/jeps/320)
 - Use of jmodules as necessitated by [JEP 261](https://openjdk.java.net/jeps/261)
 - Reponse to largely changed file paths caused by [JEP 220](https://openjdk.java.net/jeps/220).
 - Modifications in build system related to AdoptOpenJDK and Java 11 which have a different naming structure for downloads.
 - Allowing use of non-Oracle Java within internal Processing checks.

**Secondary required changes:**
There were some secondary required changes that impacted the usability of Processing after having moved to OpenJFX / OpenJDK 11:

 - Removal of com.apple.eawt calls related to [JEP 272](http://openjdk.java.net/jeps/272)
 - Response to HiDPI support on Windows and Linux in [JEP 263](https://openjdk.java.net/jeps/263)
- Removal of `java.ext.dirs`. Would be forced by [JEP 220](http://openjdk.java.net/jeps/220).
 - Due to bugs on Windows, updated the JNA jars.
 - Changes in downloader build tasks to support AdoptOpenJDK and OpenJFX.
 - Updated org.eclipse.* / equinox jars.
 - Some optimization around size of distribution.
 - Update of AppBundler.
 - Some changes in formulation of classpath and modifications in PreprocessingService given [JEP 261](https://openjdk.java.net/jeps/261).

**Incidental changes:**
This was (ahem) a bit of a larger PR with the above modifications. So, I wanted to introduce automated tests when possible and convenient along with a few changes for platform sustainability in order to support development:

 - Addition of cross-building capability (!) made possible by AdoptOpenJDK.
 - Addition of mockito for testing.
 - Upgrade of junit.
 - Addition of ant-contrib.
 - Standardized nomenclature around JRE / JDK in `build/build.xml`
 - Deduplication of code in `jre/build.xml`.
 - Addition of JavaDoc in a few places.
 - Some refactoring of PImage / Shape to support increased testing and readability in image manipulation code.
2019-10-05 20:49:33 -07:00

34 lines
1.0 KiB
Java

package processing.core;
import org.junit.Assert;
import org.junit.Test;
import processing.core.PApplet;
import processing.core.PImage;
import java.awt.*;
public class Base64StringImageLoadTest {
// Simple pattern to try loading. Would be part of SVG.
private static final String TEST_CONTENT = "data:image/svg;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAFCAMAAAC+RAbqAAAADFBMVEUAAAA0AP67u7v///+votL2AAAAGElEQVR4AWNgYAZBIIIAIJ8RyGGC8WHyAAYpAE9LN1znAAAAAElFTkSuQmCC";
@Test
public void testLoad() {
PImage results = PShape.parseBase64Image(TEST_CONTENT);
// Simply check a few sample pixels from the above pattern
Assert.assertEquals(7, results.pixelWidth);
Assert.assertEquals(5, results.pixelHeight);
Assert.assertEquals(7, results.width);
Assert.assertEquals(5, results.height);
int valueBlack = results.get(0, 0);
int valueBlue = results.get(2, 2);
Assert.assertEquals(Color.BLACK, new Color(valueBlack));
Assert.assertEquals(new Color(52, 0, 254), new Color(valueBlue));
}
}