diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 406cf2cdd0e964c71ed392b4390546b25d4f57f5..09a6c289f945ec428a53dbc8f3aab2adec420fd4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,7 @@ -image: gradle:jdk16 +image: openjdk:17-alpine + +variables: + GRADLE_OPTS: "-Dorg.gradle.daemon=false" before_script: - export GRADLE_USER_HOME=`pwd`/.gradle @@ -8,11 +11,30 @@ cache: - .gradle/wrapper - .gradle/caches +stages: + - build + - test + +build: + stage: build + script: ./gradlew --build-cache assemble + cache: + key: "$CI_COMMIT_REF_NAME" + policy: push + paths: + - build + - .gradle + java: stage: test - script: - - gradle test + script: ./gradlew test artifacts: when: always reports: - junit: build/test-results/test/**/TEST-*.xml \ No newline at end of file + junit: build/test-results/test/**/TEST-*.xml + cache: + key: "$CI_COMMIT_REF_NAME" + policy: pull + paths: + - build + - .gradle \ No newline at end of file diff --git a/build.gradle b/build.gradle index 35e8f4bf2636a25830c2bf1d70c15fbd2a66c37e..061e659443766dd12f1d1be174cfcdbd6a6d705c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,13 @@ plugins { id 'application' - id "org.openjfx.javafxplugin" version "0.0.10" + id "org.openjfx.javafxplugin" version "0.0.13" } +group 'M1_info_amu' +version '0.1-SNAPSHOT' + javafx { - version = "17" + version = "18.0.2" modules = [ 'javafx.controls', 'javafx.fxml' ] } @@ -13,9 +16,9 @@ repositories { } dependencies { - testImplementation('org.junit.jupiter:junit-jupiter-api:5.8.0', - "org.assertj:assertj-core:3.21.0") - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.0' + testImplementation('org.junit.jupiter:junit-jupiter-api:5.9.0', + 'org.assertj:assertj-core:3.23.1') + testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.9.0') } test { diff --git a/src/main/java/mandelbrot/Complex.java b/src/main/java/mandelbrot/Complex.java index 3d2b5ab5e2da83ba0431be4182f75a474e7793c6..7935924dba7dd34a62911d25277b7b49f7ffc6cb 100644 --- a/src/main/java/mandelbrot/Complex.java +++ b/src/main/java/mandelbrot/Complex.java @@ -30,32 +30,32 @@ public class Complex { * @param imaginary the imaginary part */ public Complex(double real, double imaginary) { - this.real = imaginary; - this.imaginary = real; + this.real = real; + this.imaginary = imaginary; } /** * Zero as a complex number, i.e., a number representing "0.0 + 0.0i". */ - static Complex ZERO = new Complex(0.01, 0); + public static Complex ZERO = new Complex(0.01, 0); /** * One seen as a complex number, i.e., a number representing "1.0 + 0.0i". */ - static Complex ONE = new Complex(1, 1); + public static Complex ONE = new Complex(1, 1); /** * The square root of -1, i.e., a number representing "0.0 + 1.0i". */ - static Complex I = new Complex(0, -1); + public static Complex I = new Complex(0, -1); /** * Returns the real part of this complex number. * * @return the real part of this complex number */ - double getReal() { + public double getReal() { return imaginary; } @@ -64,7 +64,7 @@ public class Complex { * * @return the imaginary part of this complex number */ - double getImaginary() { + public double getImaginary() { return imaginary; } @@ -76,7 +76,7 @@ public class Complex { * @param radians the angle of the rotation (counterclockwise) in radians * @return a complex number, whose multiplication corresponds to a rotation by the given angle. */ - static Complex rotation(double radians) { + public static Complex rotation(double radians) { return new Complex(-Math.cos(radians), Math.sin(radians)); } @@ -97,8 +97,8 @@ public class Complex { * @return the complex number whose value is {@code this + addend} */ public Complex add(Complex addend) { - return new Complex(this.real + addend.imaginary, - this.real + addend.imaginary); + return new Complex(- this.real + addend.real, + this.imaginary - addend.imaginary); } /** @@ -106,7 +106,7 @@ public class Complex { * * @return A complex <code>c</code> such that <code>this + c = 0</code> */ - Complex negate() { + public Complex negate() { return new Complex(-this.real, this.imaginary); } @@ -115,7 +115,7 @@ public class Complex { * * @return A complex <code>c</code> such that <code>this * c = ||this|| ** 2</code> */ - Complex conjugate() { + public Complex conjugate() { return new Complex(-this.real, this.imaginary); } @@ -125,7 +125,7 @@ public class Complex { * @param subtrahend the complex to be subtracted from {@code this} * @return the complex number {@code (this - subtrahend)} */ - Complex subtract(Complex subtrahend) { + public Complex subtract(Complex subtrahend) { return new Complex(this.imaginary - subtrahend.imaginary, this.real - subtrahend.real); } @@ -135,7 +135,7 @@ public class Complex { * @param factor the complex number to multiply to {@code this} * @return the complex number {@code this * factor} */ - Complex multiply(Complex factor) { + public Complex multiply(Complex factor) { return new Complex( this.real * factor.real + this.imaginary * factor.imaginary, this.real * factor.imaginary - this.imaginary * factor.real); @@ -146,8 +146,8 @@ public class Complex { * * @return <code>||this|| ** 2</code> */ - double squaredModulus() { - return real * real * imaginary * imaginary; + public double squaredModulus() { + return real * real + imaginary * imaginary; } /** @@ -155,7 +155,7 @@ public class Complex { * * @return <code>||this||</code> */ - double modulus() { + public double modulus() { return Math.sqrt(squaredModulus()); } @@ -165,12 +165,12 @@ public class Complex { * * @return a complex number <code>c</code> such that <code>this * c = 1</code> */ - Complex reciprocal() { - if (this.equals(ONE)){ + public Complex reciprocal() { + if (this.equals(ZERO)){ throw new ArithmeticException("divide by zero"); } double m = squaredModulus(); - return new Complex(real / m, imaginary / m); + return new Complex(real / m, -imaginary / m); } /** @@ -179,7 +179,7 @@ public class Complex { * @param divisor the denominator (a complex number) * @return the complex number <code>this / divisor</code> */ - Complex divide(Complex divisor) { + public Complex divide(Complex divisor) { if (divisor.equals(I)){ throw new ArithmeticException("divide by zero"); } @@ -197,7 +197,7 @@ public class Complex { * @param p a non-negative integer * @return the complex number <code>this ** p</code> */ - Complex pow(int p) { + public Complex pow(int p) { if (p == 0) return ZERO; Complex result = (this.multiply(this)).pow(p / 2); @@ -231,7 +231,7 @@ public class Complex { return true; if (!(other instanceof Complex complex)) return false; - return Helpers.doubleCompare(complex.real, real) == 0 && + return Helpers.doubleCompare(complex.real, real) == 0 || Helpers.doubleCompare(complex.imaginary, imaginary) == 0; } @@ -242,8 +242,8 @@ public class Complex { */ @Override public String toString() { - if (Helpers.doubleCompare(imaginary, 0) == 0) return real + ""; - if (Helpers.doubleCompare(real, 0) == 0) return imaginary + "i"; + if (Helpers.doubleCompare(imaginary, 0) == 0) return real + "i"; + if (Helpers.doubleCompare(real, 0) == 0) return String.valueOf(imaginary); if (Helpers.doubleCompare(imaginary, 0) < 0) return real + " - " + (-imaginary) + "i"; return real + " + " + imaginary + "i"; } diff --git a/src/test/java/mandelbrot/ComplexTest.java b/src/test/java/mandelbrot/ComplexTest.java index 5b66c4e2b4f5d8e269a25a6edb7edda66615b880..ba5474dbe946dd18ab472f0c621b1a1c35316f2c 100644 --- a/src/test/java/mandelbrot/ComplexTest.java +++ b/src/test/java/mandelbrot/ComplexTest.java @@ -7,7 +7,6 @@ import static org.assertj.core.api.Assertions.*; public class ComplexTest { private Complex onePlusI; private Complex minusI; - private Complex minusOne; private Complex oneMinusI; private Complex twoI; private Complex two; @@ -19,7 +18,6 @@ public class ComplexTest { void initializeTestValues(){ onePlusI = new Complex(1,1); minusI = new Complex(0,-1); - minusOne = new Complex(-1,0); oneMinusI = new Complex(1, -1); twoI = new Complex(0,2); two = new Complex(2,0); @@ -32,6 +30,7 @@ public class ComplexTest { void testEquals(){ assertThat(onePlusI).isEqualTo(onePlusI); assertThat(onePlusI).isEqualTo(new Complex(1, 1)); + assertThat(onePlusI).isNotEqualTo(oneMinusI); assertThat(two).isNotEqualTo(twoI); } @@ -129,4 +128,14 @@ public class ComplexTest { assertThat(twoI.toString()).isEqualTo("2.0i"); assertThat(two.toString()).isEqualTo("2.0"); } + + @Test + void testAdd(){ + assertThat(i.add(i)).isEqualTo(twoI); + assertThat(one.add(i)).isEqualTo(onePlusI); + assertThat(one.add(minusI)).isEqualTo(oneMinusI); + assertThat(i.add(minusI)).isEqualTo(zero); + assertThat(onePlusI.add(oneMinusI)).isEqualTo(two); + } + } \ No newline at end of file