diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..020a164 --- /dev/null +++ b/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + com.mycompany.app + ST-5 + 1.0-SNAPSHOT + + + 17 + 17 + + + + + org.junit.jupiter + junit-jupiter + 5.10.2 + test + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.2.5 + + + + + diff --git a/src/main/java/com/mycompany/app/Sqrt.java b/src/main/java/com/mycompany/app/Sqrt.java new file mode 100644 index 0000000..3fc384a --- /dev/null +++ b/src/main/java/com/mycompany/app/Sqrt.java @@ -0,0 +1,40 @@ +package com.mycompany.app; + +public class Sqrt +{ + double delta = 0.00000001; + double arg; + + public Sqrt(double arg) + { + this.arg = arg; + } + + public double average(double x, double y) + { + return (x + y) / 2.0; + } + + public boolean good(double guess, double x) + { + return Math.abs(guess * guess - x) < delta; + } + + public double improve(double guess, double x) + { + return average(guess, x / guess); + } + + public double iter(double guess, double x) + { + if (good(guess, x)) + return guess; + else + return iter(improve(guess, x), x); + } + + public double calc() + { + return iter(1.0, arg); + } +} diff --git a/src/test/java/com/mycompany/app/AppTest.java b/src/test/java/com/mycompany/app/AppTest.java new file mode 100644 index 0000000..5a548ca --- /dev/null +++ b/src/test/java/com/mycompany/app/AppTest.java @@ -0,0 +1,91 @@ +package com.mycompany.app; + +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +public class AppTest +{ + @Test + void testAverage1() + { + Sqrt s = new Sqrt(4); + assertEquals(3.0, s.average(2, 4), 0.0001); + } + + @Test + void testAverage2() + { + Sqrt s = new Sqrt(9); + assertEquals(5.0, s.average(4, 6), 0.0001); + } + + @Test + void testGoodTrue() + { + Sqrt s = new Sqrt(4); + assertTrue(s.good(2.0, 4.0)); + } + + @Test + void testGoodFalse() + { + Sqrt s = new Sqrt(4); + assertFalse(s.good(1.0, 4.0)); + } + + @Test + void testImprove1() + { + Sqrt s = new Sqrt(4); + assertEquals(2.5, s.improve(1.0, 4.0), 0.0001); + } + + @Test + void testImprove2() + { + Sqrt s = new Sqrt(9); + assertEquals(5.0, s.improve(1.0, 9.0), 0.0001); + } + + @Test + void testIter4() + { + Sqrt s = new Sqrt(4); + assertEquals(2.0, s.iter(1.0, 4.0), 0.0001); + } + + @Test + void testIter9() + { + Sqrt s = new Sqrt(9); + assertEquals(3.0, s.iter(1.0, 9.0), 0.0001); + } + + @Test + void testCalc2() + { + Sqrt s = new Sqrt(2); + assertEquals(Math.sqrt(2), s.calc(), 0.0001); + } + + @Test + void testCalc4() + { + Sqrt s = new Sqrt(4); + assertEquals(2.0, s.calc(), 0.0001); + } + + @Test + void testCalc16() + { + Sqrt s = new Sqrt(16); + assertEquals(4.0, s.calc(), 0.0001); + } + + @Test + void testCalc25() + { + Sqrt s = new Sqrt(25); + assertEquals(5.0, s.calc(), 0.0001); + } +}