From 6de15986b3695cf03381dccddae27a0e60892f18 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hallvard=20Tr=C3=A6tteberg?= <hal@ntnu.no>
Date: Fri, 27 Aug 2021 09:29:07 +0000
Subject: [PATCH] Fikset feil i kode og test

---
 javafx-template/.gitignore                    |   5 +
 javafx-template/src/main/java/app/Calc.java   |   4 +-
 .../src/test/java/app/CalcTest.java           |   3 +-
 modules-template/.gitignore                   |   5 +
 .../core/src/main/java/core/Calc.java         |   2 +-
 .../core/src/test/java/core/CalcTest.java     |   3 +-
 modules-template/src/main/java/core/Calc.java | 108 ------------------
 .../src/test/java/core/CalcTest.java          |  39 -------
 packages-template/.gitignore                  |   5 +
 .../src/main/java/core/Calc.java              |   2 +-
 .../src/test/java/core/CalcTest.java          |   3 +-
 11 files changed, 25 insertions(+), 154 deletions(-)
 delete mode 100644 modules-template/src/main/java/core/Calc.java
 delete mode 100644 modules-template/src/test/java/core/CalcTest.java

diff --git a/javafx-template/.gitignore b/javafx-template/.gitignore
index 2131639..f06b466 100644
--- a/javafx-template/.gitignore
+++ b/javafx-template/.gitignore
@@ -1,2 +1,7 @@
 # ignore maven build folder
 target/
+
+# pom-derived eclipse jdt files
+.project
+.classpath
+org.eclipse.*.prefs
diff --git a/javafx-template/src/main/java/app/Calc.java b/javafx-template/src/main/java/app/Calc.java
index 1f0c5c8..231878c 100644
--- a/javafx-template/src/main/java/app/Calc.java
+++ b/javafx-template/src/main/java/app/Calc.java
@@ -38,7 +38,7 @@ public class Calc {
      * @throws IllegalArgumentException if n is larger than the operand count
      */
     public double peekOperand(int n) {
-        if (n > getOperandCount()) {
+        if (n >= getOperandCount()) {
             throw new IllegalArgumentException("Cannot peek at position " + n + " when the operand count is " + getOperandCount());
         }
         return operandStack.get(getOperandCount() - n - 1);
@@ -102,7 +102,7 @@ public class Calc {
      * @throws IllegalStateException if the operand count is less than two
      */
     public void swap() {
-        // TODO
+        
     }
 
     /**
diff --git a/javafx-template/src/test/java/app/CalcTest.java b/javafx-template/src/test/java/app/CalcTest.java
index 28064cf..150778d 100644
--- a/javafx-template/src/test/java/app/CalcTest.java
+++ b/javafx-template/src/test/java/app/CalcTest.java
@@ -86,10 +86,11 @@ public class CalcTest {
     @Test
     public void testSwap() {
         Calc calc = new Calc(1.0, 3.14);
-        calc.swap();
         checkCalc(calc, 3.14, 1.0);
         calc.swap();
         checkCalc(calc, 1.0, 3.14);
+        calc.swap();
+        checkCalc(calc, 3.14, 1.0);
     }
 
     @Test
diff --git a/modules-template/.gitignore b/modules-template/.gitignore
index 2131639..f06b466 100644
--- a/modules-template/.gitignore
+++ b/modules-template/.gitignore
@@ -1,2 +1,7 @@
 # ignore maven build folder
 target/
+
+# pom-derived eclipse jdt files
+.project
+.classpath
+org.eclipse.*.prefs
diff --git a/modules-template/core/src/main/java/core/Calc.java b/modules-template/core/src/main/java/core/Calc.java
index f50679d..9b0f4c9 100644
--- a/modules-template/core/src/main/java/core/Calc.java
+++ b/modules-template/core/src/main/java/core/Calc.java
@@ -37,7 +37,7 @@ public class Calc {
      * @throws IllegalArgumentException if n is larger than the operand count
      */
     public double peekOperand(int n) {
-        if (n > getOperandCount()) {
+        if (n >= getOperandCount()) {
             throw new IllegalArgumentException("Cannot peek at position " + n + " when the operand count is " + getOperandCount());
         }
         return operandStack.get(getOperandCount() - n - 1);
diff --git a/modules-template/core/src/test/java/core/CalcTest.java b/modules-template/core/src/test/java/core/CalcTest.java
index 0207cd5..11df469 100644
--- a/modules-template/core/src/test/java/core/CalcTest.java
+++ b/modules-template/core/src/test/java/core/CalcTest.java
@@ -86,10 +86,11 @@ public class CalcTest {
     @Test
     public void testSwap() {
         Calc calc = new Calc(1.0, 3.14);
-        calc.swap();
         checkCalc(calc, 3.14, 1.0);
         calc.swap();
         checkCalc(calc, 1.0, 3.14);
+        calc.swap();
+        checkCalc(calc, 3.14, 1.0);
     }
 
     @Test
diff --git a/modules-template/src/main/java/core/Calc.java b/modules-template/src/main/java/core/Calc.java
deleted file mode 100644
index f50679d..0000000
--- a/modules-template/src/main/java/core/Calc.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package core;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.function.BinaryOperator;
-import java.util.function.UnaryOperator;
-
-public class Calc {
-    
-    private final List<Double> operandStack;
-
-    public Calc(double... operands) {
-        operandStack = new ArrayList<>(operands.length + 2);
-        for (var d : operands) {
-            operandStack.add(d);
-        }
-    }
-
-    /**
-     * @return the number of operands on the stack
-     */
-    public int getOperandCount() {
-        return operandStack.size();
-    }
-
-    /**
-     * Pushes a new operand onto top of the stack.
-     * @param d the new operand
-     */
-    public void pushOperand(double d) {
-        operandStack.add(d);
-    }
-
-    /**
-     * @param n the place (from the top) to peek
-     * @return the n'th operand from the top
-     * @throws IllegalArgumentException if n is larger than the operand count
-     */
-    public double peekOperand(int n) {
-        if (n > getOperandCount()) {
-            throw new IllegalArgumentException("Cannot peek at position " + n + " when the operand count is " + getOperandCount());
-        }
-        return operandStack.get(getOperandCount() - n - 1);
-    }
-
-    /**
-     * @return the top operand
-     */
-    public double peekOperand() {
-        return peekOperand(0);
-    }
-
-    /**
-     * Removes and returns the top operand.
-     * @return the top operand
-     * @throws IllegalStateException if the stack is empty
-     */
-    public double popOperand() {
-        if (getOperandCount() == 0) {
-            throw new IllegalStateException("Cannot pop from an empty stack");
-        }
-        return operandStack.remove(operandStack.size() - 1);
-    }
-    
-    /**
-     * Performs the provided operation in the top operand, and
-     * replaces it with the result.
-     * @param op the operation to perform
-     * @return the result of performing the operation
-     * @throws IllegalStateException if the operand stack is empty
-     */
-    public double performOperation(UnaryOperator<Double> op) throws IllegalStateException {
-        // TODO
-        return 0.0;
-    }
-
-    /**
-     * Performs the provided operation in the two topmost operands, and
-     * replaces them with the result.
-     * @param op the operation to perform
-     * @return the result of performing the operation
-     * @throws IllegalStateException if the operand count is less than two
-     */
-    public double performOperation(BinaryOperator<Double> op) throws IllegalStateException {
-        if (getOperandCount() < 2) {
-            throw new IllegalStateException("Too few operands (" + getOperandCount() + ") on the stack");
-        }
-        var op1 = popOperand();
-        var op2 = popOperand();
-        var result = op.apply(op1, op2);
-        pushOperand(result);
-        return result;
-    }
-
-    /**
-     * Swaps the two topmost operands.
-     */
-    public void swap() {
-        // TODO
-    }
-
-    /**
-     * Duplicates the top operand.
-     */
-    public void dup() {
-        // TODO
-    }
-}
\ No newline at end of file
diff --git a/modules-template/src/test/java/core/CalcTest.java b/modules-template/src/test/java/core/CalcTest.java
deleted file mode 100644
index dc95b0d..0000000
--- a/modules-template/src/test/java/core/CalcTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package core;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-public class CalcTest {
-
-    private static void checkCalc(Calc calc, double... operands) {
-        Assertions.assertEquals(operands.length, calc.getOperandCount(), "Wrong operand count");
-        for (int i = 0; i < operands.length; i++) {
-            Assertions.assertEquals(operands[i], calc.peekOperand(i), "Wrong value at #" + i + " of operand stack");
-        }
-    }
-
-    @Test
-    public void testCalc() {
-        checkCalc(new Calc());
-        checkCalc(new Calc(1.0), 1.0);
-        checkCalc(new Calc(3.14, 1.0), 1.0, 3.14);
-    }
-
-    @Test
-    public void testPushOperand() {
-        Calc calc = new Calc();
-        calc.pushOperand(1.0);
-        checkCalc(calc, 1.0);
-        calc.pushOperand(3.14);
-        checkCalc(calc, 3.14, 1.0);
-    }
-
-    @Test
-    public void testPopOperand() {
-        Calc calc = new Calc(1.0, 3.14);
-        Assertions.assertEquals(3.14, calc.popOperand());
-        checkCalc(calc, 1.0);
-        Assertions.assertEquals(1.0, calc.popOperand());
-        checkCalc(calc);
-    }
-}
diff --git a/packages-template/.gitignore b/packages-template/.gitignore
index 2131639..f06b466 100644
--- a/packages-template/.gitignore
+++ b/packages-template/.gitignore
@@ -1,2 +1,7 @@
 # ignore maven build folder
 target/
+
+# pom-derived eclipse jdt files
+.project
+.classpath
+org.eclipse.*.prefs
diff --git a/packages-template/src/main/java/core/Calc.java b/packages-template/src/main/java/core/Calc.java
index f50679d..9b0f4c9 100644
--- a/packages-template/src/main/java/core/Calc.java
+++ b/packages-template/src/main/java/core/Calc.java
@@ -37,7 +37,7 @@ public class Calc {
      * @throws IllegalArgumentException if n is larger than the operand count
      */
     public double peekOperand(int n) {
-        if (n > getOperandCount()) {
+        if (n >= getOperandCount()) {
             throw new IllegalArgumentException("Cannot peek at position " + n + " when the operand count is " + getOperandCount());
         }
         return operandStack.get(getOperandCount() - n - 1);
diff --git a/packages-template/src/test/java/core/CalcTest.java b/packages-template/src/test/java/core/CalcTest.java
index 0207cd5..11df469 100644
--- a/packages-template/src/test/java/core/CalcTest.java
+++ b/packages-template/src/test/java/core/CalcTest.java
@@ -86,10 +86,11 @@ public class CalcTest {
     @Test
     public void testSwap() {
         Calc calc = new Calc(1.0, 3.14);
-        calc.swap();
         checkCalc(calc, 3.14, 1.0);
         calc.swap();
         checkCalc(calc, 1.0, 3.14);
+        calc.swap();
+        checkCalc(calc, 3.14, 1.0);
     }
 
     @Test
-- 
GitLab