diff --git a/src/test/java/org/bukkit/map/MapTest.java b/src/test/java/org/bukkit/map/MapTest.java new file mode 100644 index 0000000000..4cb2cf9448 --- /dev/null +++ b/src/test/java/org/bukkit/map/MapTest.java @@ -0,0 +1,62 @@ + +package org.bukkit.map; + +import java.awt.Color; +import java.util.logging.Level; +import java.util.logging.Logger; +import net.minecraft.server.MaterialMapColor; +import org.junit.Assert; +import org.junit.Test; + +public class MapTest { + + private static final Logger logger = Logger.getLogger("MapTest"); + + private static final int[] modifiers = {180, 220, 255, 135}; + + @Test + public void testColors() { + MaterialMapColor[] nmsColors = MaterialMapColor.a; + Color[] bukkitColors = MapPalette.colors; + + boolean fail = false; + for (int i = 0; i < nmsColors.length; i++) { + if (nmsColors[i] == null) { + break; + } + int rgb = nmsColors[i].L; + + int r = (rgb >> 16) & 0xFF; + int g = (rgb >> 8) & 0xFF; + int b = rgb & 0xFF; + + if (i > bukkitColors.length/4) { + for (int modi : modifiers) { + int mr = (r * modi) / 255; + int mg = (g * modi) / 255; + int mb = (b * modi) / 255; + logger.log(Level.WARNING, "Missing color: c({0}, {1}, {2})", new Object[]{mr, mg, mb}); + } + fail = true; + } else { + for (int j = 0; j < modifiers.length; j++) { + int modi = modifiers[j]; + Color bukkit = bukkitColors[i * 4 + j]; + int mr = (r * modi) / 255; + int mg = (g * modi) / 255; + int mb = (b * modi) / 255; + + if (bukkit.getRed() != mr || bukkit.getGreen() != mg || bukkit.getBlue() != mb) { + logger.log(Level.WARNING, "Incorrect color: {6} {7} c({0}, {1}, {2}) != c({3}, {4}, {5})", new Object[]{ + bukkit.getRed(), bukkit.getGreen(), bukkit.getBlue(), + mr, mg, mb, + i, j + }); + fail = true; + } + } + } + } + Assert.assertFalse(fail); + } +}