diff --git a/test/src/schule/ngb/zm/ColorTest.java b/test/src/schule/ngb/zm/ColorTest.java index 6b02683..58f2ec3 100644 --- a/test/src/schule/ngb/zm/ColorTest.java +++ b/test/src/schule/ngb/zm/ColorTest.java @@ -6,6 +6,84 @@ import static org.junit.jupiter.api.Assertions.*; class ColorTest { + @Test + public void init() { + Color c; + + c = new Color(); + assertEquals(0, c.getRed()); + assertEquals(0, c.getGreen()); + assertEquals(0, c.getBlue()); + assertEquals(255, c.getAlpha()); + + c = Color.BLUE; + assertEquals(0, c.getRed()); + assertEquals(0, c.getGreen()); + assertEquals(255, c.getBlue()); + assertEquals(255, c.getAlpha()); + + c = new Color(50, 133, 64, 33); + assertEquals(50, c.getRed()); + assertEquals(133, c.getGreen()); + assertEquals(64, c.getBlue()); + assertEquals(33, c.getAlpha()); + + c = new Color(255, 0, 0); + assertEquals(Color.RED, c); + + c = new Color(33, 50); + assertEquals(33, c.getRed()); + assertEquals(33, c.getGreen()); + assertEquals(33, c.getBlue()); + assertEquals(50, c.getAlpha()); + } + + @Test + public void parse() { + Color c; + + c = Color.getRGBColor(0x00FF00FF); + assertEquals(0x00FF00FF, c.getRGBA()); + assertEquals(255, c.getRed()); + assertEquals(0, c.getGreen()); + assertEquals(255, c.getBlue()); + assertEquals(0, c.getAlpha()); + + c = Color.getRGBColor(0x33FF3333); + assertEquals(0x33FF3333, c.getRGBA()); + assertEquals(255, c.getRed()); + assertEquals(51, c.getGreen()); + assertEquals(51, c.getBlue()); + assertEquals(51, c.getAlpha()); + + c = Color.parseHexcode("FF00FF"); + assertEquals(0xFFFF00FF, c.getRGBA()); + assertEquals(255, c.getRed()); + assertEquals(0, c.getGreen()); + assertEquals(255, c.getBlue()); + assertEquals(255, c.getAlpha()); + + c = Color.parseHexcode("#FF00FF00"); + assertEquals(0x00FF00FF, c.getRGBA()); + assertEquals(255, c.getRed()); + assertEquals(0, c.getGreen()); + assertEquals(255, c.getBlue()); + assertEquals(0, c.getAlpha()); + + c = Color.parseHexcode("#333"); + assertEquals(0xFF333333, c.getRGBA()); + assertEquals(51, c.getRed()); + assertEquals(51, c.getGreen()); + assertEquals(51, c.getBlue()); + assertEquals(255, c.getAlpha()); + + c = Color.parseHexcode("#33FF0033"); + assertEquals(0x3333FF00, c.getRGBA()); + assertEquals(51, c.getRed()); + assertEquals(255, c.getGreen()); + assertEquals(0, c.getBlue()); + assertEquals(51, c.getAlpha()); + } @Test void testEquals() { @@ -18,7 +96,8 @@ class ColorTest { assertNotSame(c1, c2); assertEquals(c1, c2); - assertEquals(Color.YELLOW, java.awt.Color.YELLOW); + Color yellow = new Color(255, 255, 0); + assertEquals(java.awt.Color.YELLOW, yellow); assertNotEquals(java.awt.Color.YELLOW, Color.YELLOW); } @@ -27,28 +106,28 @@ class ColorTest { Color c; // Empty color is white c = new Color(); - assertEquals(c, Color.BLACK); + assertEquals(Color.BLACK, c); // One arg is shade of gray c = new Color(255); - assertEquals(c, Color.WHITE); + assertEquals(Color.WHITE, c); c = new Color(0); - assertEquals(c, Color.BLACK); + assertEquals(Color.BLACK, c); c = new Color(64); - assertEquals(c, Color.DARKGRAY); + assertEquals(Color.DARKGRAY, c); c = new Color(192); - assertEquals(c, Color.LIGHTGRAY); + assertEquals(Color.LIGHTGRAY, c); // RGB colors c = new Color(0,0,0); - assertEquals(c, Color.BLACK); + assertEquals(Color.BLACK, c); c = new Color(255,0,0); - assertEquals(c, Color.RED); + assertEquals(java.awt.Color.RED, c.getJavaColor()); c = new Color(0,255,0); - assertEquals(c, Color.GREEN); + assertEquals(java.awt.Color.GREEN, c.getJavaColor()); c = new Color(0,0,255); - assertEquals(c, Color.BLUE); + assertEquals(java.awt.Color.BLUE, c.getJavaColor()); // From java.awt.Color c = new Color(java.awt.Color.YELLOW); - assertEquals(c, Color.YELLOW); + assertEquals(java.awt.Color.YELLOW, c.getJavaColor()); } @Test @@ -75,6 +154,18 @@ class ColorTest { @Test void RGBtoHSL() { + Color c; + float[] hsl; + + c = Color.RED; + hsl = Color.RGBtoHSL(c.getRGBA(), null); + assertArrayEquals(new float[]{0f,1f,.5f}, hsl, 0.0001f); + + c = new Color(255, 33, 64); + hsl = Color.RGBtoHSL(c.getRGBA(), null); + assertEquals(352, hsl[0], 1.0f); + assertEquals(1.0f, hsl[1], .0001f); + assertEquals(.5647f, hsl[2], .0001f); } @Test @@ -91,6 +182,7 @@ class ColorTest { @Test void getRGBA() { + Color yellow = new Color(255, 255, 0); assertEquals(java.awt.Color.YELLOW.getRGB(), Color.YELLOW.getRGBA()); } @@ -111,7 +203,7 @@ class ColorTest { } @Test - void getColor() { + void getJavaColor() { assertEquals(java.awt.Color.YELLOW, Color.YELLOW.getJavaColor()); assertEquals(new java.awt.Color(255, 31, 124), new Color(255, 31, 124).getJavaColor()); } diff --git a/test/src/schule/ngb/zm/TestColor.java b/test/src/schule/ngb/zm/TestColor.java deleted file mode 100644 index a27ca89..0000000 --- a/test/src/schule/ngb/zm/TestColor.java +++ /dev/null @@ -1,145 +0,0 @@ -package schule.ngb.zm; - -import org.junit.Test; - -import static org.junit.Assert.*; - -public class TestColor { - - @Test - public void colors() { - Color c; - - c = new Color(); - assertEquals(0, c.getRed()); - assertEquals(0, c.getGreen()); - assertEquals(0, c.getBlue()); - assertEquals(255, c.getAlpha()); - - c = Color.BLUE; - assertEquals(0, c.getRed()); - assertEquals(0, c.getGreen()); - assertEquals(255, c.getBlue()); - assertEquals(255, c.getAlpha()); - - c = new Color(50, 133, 64, 33); - assertEquals(50, c.getRed()); - assertEquals(133, c.getGreen()); - assertEquals(64, c.getBlue()); - assertEquals(33, c.getAlpha()); - - c = new Color(255, 0, 0); - assertEquals(Color.RED, c); - - c = new Color(33, 50); - assertEquals(33, c.getRed()); - assertEquals(33, c.getGreen()); - assertEquals(33, c.getBlue()); - assertEquals(50, c.getAlpha()); - } - - @Test - public void parseColors() { - Color c; - - c = Color.getRGBColor(0x00FF00FF); - assertEquals(0x00FF00FF, c.getRGBA()); - assertEquals(255, c.getRed()); - assertEquals(0, c.getGreen()); - assertEquals(255, c.getBlue()); - assertEquals(0, c.getAlpha()); - - c = Color.getRGBColor(0x33FF3333); - assertEquals(0x33FF3333, c.getRGBA()); - assertEquals(255, c.getRed()); - assertEquals(51, c.getGreen()); - assertEquals(51, c.getBlue()); - assertEquals(51, c.getAlpha()); - - c = Color.parseHexcode("FF00FF"); - assertEquals(0xFFFF00FF, c.getRGBA()); - assertEquals(255, c.getRed()); - assertEquals(0, c.getGreen()); - assertEquals(255, c.getBlue()); - assertEquals(255, c.getAlpha()); - - c = Color.parseHexcode("#FF00FF00"); - assertEquals(0x00FF00FF, c.getRGBA()); - assertEquals(255, c.getRed()); - assertEquals(0, c.getGreen()); - assertEquals(255, c.getBlue()); - assertEquals(0, c.getAlpha()); - - c = Color.parseHexcode("#333"); - assertEquals(0xFF333333, c.getRGBA()); - assertEquals(51, c.getRed()); - assertEquals(51, c.getGreen()); - assertEquals(51, c.getBlue()); - assertEquals(255, c.getAlpha()); - - c = Color.parseHexcode("#33FF0033"); - assertEquals(0x3333FF00, c.getRGBA()); - assertEquals(51, c.getRed()); - assertEquals(255, c.getGreen()); - assertEquals(0, c.getBlue()); - assertEquals(51, c.getAlpha()); - } - - @Test - public void hsl() { - Color c; - float[] hsl; - - c = Color.RED; - hsl = Color.RGBtoHSL(c.getRGBA(), null); - assertArrayEquals(new float[]{0f,1f,.5f}, hsl, 0.0001f); - - c = new Color(255, 33, 64); - hsl = Color.RGBtoHSL(c.getRGBA(), null); - assertEquals(352, hsl[0], 1.0f); - assertEquals(1.0f, hsl[1], .0001f); - assertEquals(.5647f, hsl[2], .0001f); - } - - public static void main( String[] args ) { - new ColorPalette(); - } - - static class ColorPalette extends Zeichenmaschine { - public static final int SIZE = 10, COLORS = 16; - - public void setup() { - setSize(SIZE*COLORS, SIZE*COLORS); - setTitle("Colors"); - - drawing.noStroke(); - drawing.setAnchor(NORTHWEST); - - int steps = (int) (255.0/COLORS); - Color c; - for( int i = 0; i < COLORS; i++ ) { - for( int j = 0; j < COLORS; j++ ) { - c = new Color(i * steps, j * steps, (i+j)/2 * steps); - drawing.setFillColor(c); - drawing.rect(i*SIZE, j*SIZE, SIZE, SIZE); - } - } - } - - public void draw() { - Color c = Color.HGGREEN; - drawing.setFillColor(c); - drawing.rect(0, 0, width/2, height); - - for( int p = 10; p < 100; p += 10 ) { - drawing.setFillColor(c.brighter(p)); - drawing.rect(width / 2, 0, width / 2, height / 2); - drawing.setFillColor(c.darker(p)); - drawing.rect(width / 2, height / 2, width / 2, height / 2); - - delay(1000); - } - } - } - -} diff --git a/test/src/schule/ngb/zm/TestVector.java b/test/src/schule/ngb/zm/TestVector.java deleted file mode 100644 index ae2db3d..0000000 --- a/test/src/schule/ngb/zm/TestVector.java +++ /dev/null @@ -1,112 +0,0 @@ -package schule.ngb.zm; - -import org.junit.Test; - -import java.awt.geom.Point2D; - -import static org.junit.Assert.*; - -public class TestVector { - - @Test - public void testInit() { - Vector vec; - - vec = new Vector(); - assertEquals(0.0, vec.x, 0.0); - assertEquals(0.0, vec.y, 0.0); - - vec = new Vector(4.5, 5.1); - assertEquals(4.5, vec.x, 0.0); - assertEquals(5.1, vec.y, 0.0); - - vec = new Vector(vec); - assertEquals(4.5, vec.x, 0.0); - assertEquals(5.1, vec.y, 0.0); - - vec = new Vector(Double.MAX_VALUE, Double.MIN_VALUE); - assertEquals(Double.MAX_VALUE, vec.x, 0.0); - assertEquals(Double.MIN_VALUE, vec.y, 0.0); - - vec = new Vector(new Point2D.Double(7.2, 3.5677)); - assertEquals(7.2, vec.x, 0.0); - assertEquals(3.5677, vec.y, 0.0); - - vec = new Vector(new Point2D.Float(7.2f, 3.5677f)); - assertEquals(7.2, vec.x, 0.0001); - assertEquals(3.5677, vec.y, 0.0001); - - vec.set(new Vector(5.1, 8.9)); - assertEquals(5.1, vec.x, 0.0001); - assertEquals(8.9, vec.y, 0.0001); - - Vector vec2 = vec.copy(); - assertNotSame(vec, vec2); - assertEquals(vec, vec2); - assertEquals(5.1, vec2.x, 0.0001); - assertEquals(8.9, vec2.y, 0.0001); - - assertEquals(vec, vec.set(100, 100)); - assertEquals(200, vec.set(200, 200).x, 0.0001); - assertEquals(8.9, vec.set(vec2).y, 0.0001); - - for( int i = 0; i < 50; i++ ) { - vec = Vector.random(); - assertTrue(vec.x >= 0); - assertTrue(vec.y >= 0); - assertTrue(vec.x < 100); - assertTrue(vec.y < 100); - } - - for( int i = 1; i < 50; i++ ) { - vec = Vector.random(0, i*10); - assertTrue(vec.x >= 0); - assertTrue(vec.y >= 0); - assertTrue(vec.x < i*10); - assertTrue(vec.y < i*10); - } - - for( int i = 1; i < 50; i++ ) { - vec = Vector.random(0, i*10, (i+1)*10, (i+2)*10); - assertTrue(vec.x >= 0); - assertTrue(vec.y >= (i+1)*10); - assertTrue(vec.x < i*10); - assertTrue(vec.y < (i+2)*10); - } - } - - @Test - public void testMath() { - Vector vec1, vec2; - - vec1 = new Vector(100, 0); - vec1.scale(0.0); - vec2 = new Vector(0, 0); - assertEquals(vec2, vec1); - - vec1.add(100, 50); - assertEquals(100, vec1.x, 0.0); - assertEquals(50, vec1.y, 0.0); - - vec2.sub(50, 100); - assertEquals(-50, vec2.x, 0.0); - assertEquals(-100, vec2.y, 0.0); - - vec2.scale(1.5); - assertEquals(-75, vec2.x, 0.0001); - assertEquals(-150, vec2.y, 0.0001); - - assertEquals(100, vec1.set(100,0).length(), 0.0001); - assertEquals(10000, vec1.lengthSq(), 0.0001); - assertEquals(Math.sqrt(50*50 + 60*60), vec1.set(50,60).length(), 0.0001); - assertEquals(1.0, vec1.set(100,0).normalize().length(), 0.0001); - assertEquals(1.0, Vector.random().normalize().length(), 0.0001); - } - - - @Test - public void testStaticMath() { - - } - -} diff --git a/test/src/schule/ngb/zm/VectorTest.java b/test/src/schule/ngb/zm/VectorTest.java index d8ec662..d8608db 100644 --- a/test/src/schule/ngb/zm/VectorTest.java +++ b/test/src/schule/ngb/zm/VectorTest.java @@ -2,10 +2,79 @@ package schule.ngb.zm; import org.junit.jupiter.api.Test; +import java.awt.geom.Point2D; + import static org.junit.jupiter.api.Assertions.*; class VectorTest { + @Test + public void init() { + Vector vec; + + vec = new Vector(); + assertEquals(0.0, vec.x, 0.0); + assertEquals(0.0, vec.y, 0.0); + + vec = new Vector(4.5, 5.1); + assertEquals(4.5, vec.x, 0.0); + assertEquals(5.1, vec.y, 0.0); + + vec = new Vector(vec); + assertEquals(4.5, vec.x, 0.0); + assertEquals(5.1, vec.y, 0.0); + + vec = new Vector(Double.MAX_VALUE, Double.MIN_VALUE); + assertEquals(Double.MAX_VALUE, vec.x, 0.0); + assertEquals(Double.MIN_VALUE, vec.y, 0.0); + + vec = new Vector(new Point2D.Double(7.2, 3.5677)); + assertEquals(7.2, vec.x, 0.0); + assertEquals(3.5677, vec.y, 0.0); + + vec = new Vector(new Point2D.Float(7.2f, 3.5677f)); + assertEquals(7.2, vec.x, 0.0001); + assertEquals(3.5677, vec.y, 0.0001); + + vec.set(new Vector(5.1, 8.9)); + assertEquals(5.1, vec.x, 0.0001); + assertEquals(8.9, vec.y, 0.0001); + + Vector vec2 = vec.copy(); + assertNotSame(vec, vec2); + assertEquals(vec, vec2); + assertEquals(5.1, vec2.x, 0.0001); + assertEquals(8.9, vec2.y, 0.0001); + + assertEquals(vec, vec.set(100, 100)); + assertEquals(200, vec.set(200, 200).x, 0.0001); + assertEquals(8.9, vec.set(vec2).y, 0.0001); + + for( int i = 0; i < 50; i++ ) { + vec = Vector.random(); + assertTrue(vec.x >= 0); + assertTrue(vec.y >= 0); + assertTrue(vec.x < 100); + assertTrue(vec.y < 100); + } + + for( int i = 1; i < 50; i++ ) { + vec = Vector.random(0, i*10); + assertTrue(vec.x >= 0); + assertTrue(vec.y >= 0); + assertTrue(vec.x < i*10); + assertTrue(vec.y < i*10); + } + + for( int i = 1; i < 50; i++ ) { + vec = Vector.random(0, i*10, (i+1)*10, (i+2)*10); + assertTrue(vec.x >= 0); + assertTrue(vec.y >= (i+1)*10); + assertTrue(vec.x < i*10); + assertTrue(vec.y < (i+2)*10); + } + } + @Test void setLength() { Vector vec = new Vector(2.0, 5.4);