Dados dos enteros a y b, que pueden ser positivos o negativos, encuentre la suma de todos los números entre incluirlos también y devolverlos.
Si los dos números son iguales, devuelva a o b.
Nota: a y b no están ordenados!
ObtenerSuma(1, 0) == 1 // 1 + 0 = 1
ObtenerSuma(1, 2) == 3 // 1 + 2 = 3
ObtenerSuma(0, 1) == 1 // 0 + 1 = 1
ObtenerSuma(1, 1) == 1 // 1 Since both are same
ObtenerSuma(-1, 0) == -1 // -1 + 0 = -1
ObtenerSuma(-1, 2) == 2 // -1 + 0 + 1 + 2 = 2
public class Suma
{
public int ObtenerSuma(int a, int b)
{
return (a + b) * (Math.abs(a - b) + 1) / 2;
}
}
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;
public class SumaTest {
Suma s = new Suma();
@Test
public void TestPositive()
{
assertEquals(14, s.ObtenerSuma(5, -1));
assertEquals(127759, s.ObtenerSuma(505, 4));
assertEquals(44178, s.ObtenerSuma(321, 123));
}
@Test
public void TestNegative()
{
assertEquals(-1275, s.ObtenerSuma(-50, 0));
assertEquals(-15, s.ObtenerSuma(-1, -5));
assertEquals(-5, s.ObtenerSuma(-5, -5));
assertEquals(-127755, s.ObtenerSuma(-505, 4));
assertEquals(-44055, s.ObtenerSuma(-321, 123));
}
@Test
public void TestZero()
{
assertEquals(0, s.ObtenerSuma(0, 0));
}
@Test
public void TestSwitchMinMax()
{
assertEquals(-15, s.ObtenerSuma(-5, -1));
assertEquals(15, s.ObtenerSuma(5, 1));
}
@Test
public void TestEqual()
{
assertEquals(-17, s.ObtenerSuma(-17, -17));
assertEquals(17, s.ObtenerSuma(17, 17));
}
}