package org.geogebra.resources;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import org.geogebra.common.euclidian.EuclidianConstants;
import org.geogebra.common.util.StringUtil;
import org.geogebra.common.util.lang.Country;
import org.geogebra.desktop.geogebra3D.gui.GuiResources3D;
import org.geogebra.desktop.util.GuiResourcesD;
import org.geogebra.desktop.util.ImageManagerD;
import org.geogebra.desktop.util.ImageResourceD;
import org.geogebra.desktop.util.StringUtilD;
import org.junit.Assert;
import org.junit.Test;
public class ResourceAvailability {
@Test
public void checkGuiResources() {
for (GuiResourcesD res : GuiResourcesD.values()) {
String fn = res.getFilename();
if (!fn.startsWith("/org")) {
fn = "/org/geogebra/desktop/" + fn;
}
URL url = ResourceAvailability.class.getResource(fn);
Assert.assertNotNull("" + res, url);
}
}
@Test
public void checkGuiResources3D() {
for (GuiResources3D res : GuiResources3D.values()) {
String fn = res.getFilename();
if (!fn.startsWith("/org")) {
fn = "/org/geogebra/desktop/geogebra3D" + fn;
}
URL url = ResourceAvailability.class.getResource(fn);
Assert.assertNotNull("" + res, url);
}
}
@Test
public void checkFlagIcons() {
ImageManagerD man = new ImageManagerD(new JPanel());
for (Country country : Country.values()) {
if (!hasFlag(country)) {
continue;
}
ImageIcon res = man.getFlagIcon(country.getISO().toLowerCase()
+ ".png");
Assert.assertNotNull("" + country, res);
}
}
@Test
public void checkToolIcons() {
StringUtil.setPrototypeIfNull(new StringUtilD());
ImageManagerD man = new ImageManagerD(new JPanel());
StringBuilder missing = new StringBuilder();
for (int i = 0; i < 1000; i++) {
String modeText = EuclidianConstants.getModeTextSimple(i);
if (modeText.isEmpty()) {
continue;
}
switch (i) {
case EuclidianConstants.MODE_SELECTION_LISTENER:
case EuclidianConstants.MODE_PEN_PANEL:
case EuclidianConstants.MODE_TOOLS_PANEL:
case EuclidianConstants.MODE_MEDIA_PANEL:
case EuclidianConstants.MODE_VIDEO:
case EuclidianConstants.MODE_AUDIO:
case EuclidianConstants.MODE_GEOGEBRA:
continue;
default:
ImageResourceD res = man.getToolImageResource(modeText);
URL url = ResourceAvailability.class.getResource(res
.getFilename());
if (url == null) {
missing.append(modeText + ",");
}
}
}
Assert.assertEquals(missing.toString(), missing.length(), 0);
}
private static boolean hasFlag(Country country) {
switch (country) {
case EastTimor:
case Yugoslavia:
case SouthSudan:
return false;
}
return true;
}
}