package com.marginallyclever.robotoverlord.renderpanel.texturemanager; import com.jogamp.opengl.util.texture.Texture; import com.jogamp.opengl.util.texture.TextureIO; import com.marginallyclever.robotoverlord.renderpanel.OpenGLTestMinimal; import com.marginallyclever.robotoverlord.renderpanel.OpenGLTestPerspective; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable; import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.Objects; @DisabledIfEnvironmentVariable(named = "CI", matches = "true", disabledReason = "headless environment") public class CompareLoadMethods { public void compare() throws IOException { // old method Texture a = TextureIO.newTexture(Objects.requireNonNull(CompareLoadMethods.class.getResourceAsStream("viewCube.png")),false,"png"); // new method BufferedImage image = ImageIO.read(Objects.requireNonNull(CompareLoadMethods.class.getResourceAsStream("viewCube.png"))); Texture b = GLTextureFromImage.BufferedImageToTexture(null,image); // compare contents by dumping to temp files and doing byte-by-byte comparison File tempA = File.createTempFile("methodA",".png"); tempA.deleteOnExit(); File tempB = File.createTempFile("methodB",".png"); tempB.deleteOnExit(); TextureIO.write(a,tempA); TextureIO.write(b,tempB); byte[] dataA = Files.readAllBytes(tempA.toPath()); byte[] dataB = Files.readAllBytes(tempB.toPath()); Assertions.assertArrayEquals(dataA,dataB); } public static void main(String[] args) { OpenGLTestMinimal rp = new OpenGLTestMinimal(); JButton runTest = new JButton("compare"); runTest.addActionListener(e -> { rp.getGlCanvas().invoke(false,(glAutoDrawable)-> { try { (new CompareLoadMethods()).compare(); } catch (IOException ioException) { ioException.printStackTrace(); } return false; }); }); JPanel panel = new JPanel(new BorderLayout()); panel.add(rp.getPanel(),BorderLayout.CENTER); panel.add(runTest,BorderLayout.SOUTH); // make a frame JFrame frame = new JFrame( OpenGLTestPerspective.class.getSimpleName()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setContentPane(panel); frame.setPreferredSize(new Dimension(600,600)); frame.setSize(600,600); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }