diff --git a/src/fr/iut/uca/Operations.java b/src/fr/iut/uca/Operations.java index f12cd15..9246c19 100644 --- a/src/fr/iut/uca/Operations.java +++ b/src/fr/iut/uca/Operations.java @@ -4,19 +4,26 @@ public class Operations { public long Add(long a, long b, long... others) { long res = a + b; - for(long num : others) { - res += num; + + if (others != null) { + for(long num : others) { + res += num; + } } + return res; } public long Multiply(long a, long b, long... others) { long res = a * b; - for(long num : others) { - - res *= num; + + if (others != null) { + for(long num : others) { + res *= num; + } } + return res; } @@ -24,13 +31,18 @@ public class Operations { if(b == 0) { throw new ArithmeticException("attempted to divide by zero"); } + long res = a / b; - for(long num : others) { - if(num == 0) { - throw new ArithmeticException("attempted to divide by zero"); - } - res *= num; + + if(others != null) { + for(long num : others) { + if(num == 0) { + throw new ArithmeticException("attempted to divide by zero"); + } + res *= num; + } } + return res; } diff --git a/src/fr/iut/uca/OperationsTest.java b/src/fr/iut/uca/OperationsTest.java deleted file mode 100644 index a971610..0000000 --- a/src/fr/iut/uca/OperationsTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package fr.iut.uca; - -import static org.junit.jupiter.api.Assertions.*; - -import org.junit.jupiter.api.Test; - -class OperationsTest { - - @Test - void nominalTest() { - // Arrange - - Operations operations = new Operations(); - int x = 1; - int y = 2; - int expected = 3; - - // Act - - - - // Assert - - - } - -} diff --git a/src/test/OperationsTests.java b/src/test/OperationsTests.java new file mode 100644 index 0000000..fd435f3 --- /dev/null +++ b/src/test/OperationsTests.java @@ -0,0 +1,207 @@ +package test; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.Random; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import fr.iut.uca.Operations; + +class OperationsTests { + + private Operations op; + + @BeforeEach + void init() { + op = new Operations(); + } + + @Test + void basicAdd() { + // Arrange + + long x = 1; + long y = 2; + long expected = 3; + + // Act + + long actual = op.Add(x, y, null); + + // Assert + + assertEquals(expected, actual); + } + + @Test + void beyondMax() { + // Arrange + + long x = Long.MAX_VALUE; + long y = 1; + long expected = Long.MIN_VALUE; + + // Act + + long actual = op.Add(x, y, null); + + // Assert + + assertEquals(expected, actual); + } + + @Test + void belowMin() { + // Arrange + + long x = Long.MIN_VALUE; + long y = -1; + long expected = Long.MAX_VALUE; + + // Act + + long actual = op.Add(x, y, null); + + // Assert + + assertEquals(expected, actual); + } + + @Test + void allZeros() { + // Arrange + + long x = 0; + long y = 0; + long expected = 0; + + // Act + + long actual = op.Add(x, y, null); + + // Assert + + assertEquals(expected, actual); + } + + @Test + void withZeroLeft() { + // Arrange + + long x = 0; + long y = 2; + long expected = 2; + + // Act + + long actual = op.Add(x, y, null); + + // Assert + + assertEquals(expected, actual); + } + + @Test + void withZeroRight() { + // Arrange + + long x = 4; + long y = 0; + long expected = 4; + + // Act + + long actual = op.Add(x, y, null); + + // Assert + + assertEquals(expected, actual); + } + + @Test + void allNegatives() { + // Arrange + + long x = -3; + long y = -4; + long expected = -7; + + // Act + + long actual = op.Add(x, y, null); + + // Assert + + assertEquals(expected, actual); + } + + @Test + void oppositesCancelOut() { + // Arrange + + long x = -4; + long y = 4; + long expected = 0; + + // Act + + long actual = op.Add(x, y, null); + + // Assert + + assertEquals(expected, actual); + } + + @Test + void manyNumbers() { + // Arrange + + long x = 1; + long y = 2; + long z1 = 3; + long z2 = 4; + long z3 = 5; + long expected = 15; + + // Act + + long actual = op.Add(x, y, z1, z2, z3); + + // Assert + + assertEquals(expected, actual); + } + + @Test + void rdm() { + for(int i = 0 ; i <10; i++) { + // Arrange + + Random rdm = new Random(); + long rdmX =rdm.nextLong(); + long rdmY = rdm.nextLong(); + + long expected; + + if(rdmX == 0) { + expected = rdmY; + } else if(rdmY == 0) { + expected = rdmX; + } else if(rdmX == rdmY * (-1)) { + expected = 0; + } else { + expected = rdmX + rdmY; + } + + // Act + + long actual = op.Add(rdmX, rdmY, null); + + // Assert + + assertEquals(expected, actual); + } + } +}