parent
24389cbb20
commit
ef94fc92d7
|
@ -0,0 +1,157 @@
|
|||
package com.baeldung.math.swap;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class SwappingVariablesUnitTest {
|
||||
|
||||
@Test
|
||||
public void swapObjectsUsingMethod() {
|
||||
|
||||
String a = "a";
|
||||
String b = "b";
|
||||
|
||||
swap(a, b);
|
||||
|
||||
Assertions.assertFalse(a.equals("b"));
|
||||
Assertions.assertFalse(b.equals("a"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void swapObjectsInWrapperUsingMethod() {
|
||||
|
||||
Wrapper a = new Wrapper("a");
|
||||
Wrapper b = new Wrapper("b");
|
||||
|
||||
swap(a, b);
|
||||
|
||||
Assertions.assertTrue(a.string.equals("b"));
|
||||
Assertions.assertTrue(b.string.equals("a"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void swapIntegersUsingAdditionSubstraction() {
|
||||
|
||||
int a = 5;
|
||||
int b = 10;
|
||||
|
||||
a = a + b;
|
||||
b = a - b;
|
||||
a = a - b;
|
||||
|
||||
Assertions.assertTrue(a == 10);
|
||||
Assertions.assertTrue(b == 5);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void swapIntegersUsingMultiplicationDivision() {
|
||||
|
||||
int a = 5;
|
||||
int b = 10;
|
||||
|
||||
a = a * b;
|
||||
b = a / b;
|
||||
a = a / b;
|
||||
|
||||
Assertions.assertTrue(a == 10);
|
||||
Assertions.assertTrue(b == 5);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void swapIntegersWithOverflow() {
|
||||
|
||||
int a = Integer.MAX_VALUE;
|
||||
int b = 10;
|
||||
|
||||
a = a * b;
|
||||
b = a / b;
|
||||
a = a / b;
|
||||
|
||||
Assertions.assertTrue(a == 10);
|
||||
Assertions.assertFalse(b == Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void swapChars() {
|
||||
|
||||
char a = 'a';
|
||||
char b = 'b';
|
||||
|
||||
a = (char)(a * b);
|
||||
b = (char)(a / b);
|
||||
a = (char)(a / b);
|
||||
|
||||
Assertions.assertTrue(a == 'b');
|
||||
Assertions.assertTrue(b == 'a');
|
||||
}
|
||||
|
||||
@Test
|
||||
public void swapIntegersUsingXor() {
|
||||
|
||||
int a = 5;
|
||||
int b = 10;
|
||||
|
||||
a = a ^ b;
|
||||
b = a ^ b;
|
||||
a = a ^ b;
|
||||
|
||||
Assertions.assertTrue(a == 10);
|
||||
Assertions.assertTrue(b == 5);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void swapIntegersUsingXorSingleLine() {
|
||||
|
||||
int a = 5;
|
||||
int b = 10;
|
||||
|
||||
a = a ^ b ^ (b = a);
|
||||
|
||||
Assertions.assertTrue(a == 10);
|
||||
Assertions.assertTrue(b == 5);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void swapIntegersUsingAdditionSubstractionSingleLine() {
|
||||
|
||||
int a = 5;
|
||||
int b = 10;
|
||||
|
||||
b = (a + b) - (a = b);
|
||||
|
||||
Assertions.assertTrue(a == 10);
|
||||
Assertions.assertTrue(b == 5);
|
||||
}
|
||||
|
||||
/**
|
||||
* Illustrates that swapping in a method doesn't work
|
||||
*/
|
||||
private void swap(String a, String b) {
|
||||
|
||||
String temp = b;
|
||||
b = a;
|
||||
a = temp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Illustrates swapping in a method with Wrapper class
|
||||
*/
|
||||
private void swap(Wrapper a, Wrapper b) {
|
||||
|
||||
String temp = b.string;
|
||||
b.string = a.string;
|
||||
a.string = temp;
|
||||
}
|
||||
|
||||
class Wrapper {
|
||||
|
||||
public String string;
|
||||
|
||||
public Wrapper(String string) {
|
||||
|
||||
this.string = string;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue