mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-28 06:55:02 +08:00
refactor: simplify HammingDistance
(#4218)
* refactor: make HammingDistance an utility class * tests: add some tests, simplify logic of some * refator: simplify logic in HammingDistance * style: remove logging messages
This commit is contained in:
@ -6,18 +6,9 @@ import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class HammingDistanceTest {
|
||||
|
||||
HammingDistance hd;
|
||||
|
||||
@BeforeEach
|
||||
void initialize() {
|
||||
hd = new HammingDistance();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkForDifferentBits() {
|
||||
String senderBits = "000", receiverBits = "011";
|
||||
int answer = hd.getHammingDistanceBetweenBits(senderBits, receiverBits);
|
||||
int answer = HammingDistance.compute("000", "011");
|
||||
Assertions.assertThat(answer).isEqualTo(2);
|
||||
}
|
||||
|
||||
@ -32,38 +23,62 @@ public class HammingDistanceTest {
|
||||
*/
|
||||
@Test
|
||||
public void checkForDifferentBitsLength() {
|
||||
String senderBits = "10101", receiverBits = "11110";
|
||||
int answer = hd.getHammingDistanceBetweenBits(senderBits, receiverBits);
|
||||
int answer = HammingDistance.compute("10101", "11110");
|
||||
Assertions.assertThat(answer).isEqualTo(3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkForSameBits() {
|
||||
String senderBits = "111", receiverBits = "111";
|
||||
int answer = hd.getHammingDistanceBetweenBits(senderBits, receiverBits);
|
||||
String someBits = "111";
|
||||
int answer = HammingDistance.compute(someBits, someBits);
|
||||
Assertions.assertThat(answer).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkForLongDataBits() {
|
||||
String senderBits = "10010101101010000100110100", receiverBits = "00110100001011001100110101";
|
||||
int answer = hd.getHammingDistanceBetweenBits(senderBits, receiverBits);
|
||||
int answer = HammingDistance.compute("10010101101010000100110100", "00110100001011001100110101");
|
||||
Assertions.assertThat(answer).isEqualTo(7);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void mismatchDataBits() {
|
||||
String senderBits = "100010", receiverBits = "00011";
|
||||
Exception ex = org.junit.jupiter.api.Assertions.assertThrows(IllegalArgumentException.class, () -> { int answer = HammingDistance.compute("100010", "00011"); });
|
||||
|
||||
Exception ex = org.junit.jupiter.api.Assertions.assertThrows(IllegalArgumentException.class, () -> { int answer = hd.getHammingDistanceBetweenBits(senderBits, receiverBits); });
|
||||
Assertions.assertThat(ex.getMessage()).contains("must have the same length");
|
||||
}
|
||||
|
||||
Assertions.assertThat(ex.getMessage()).contains("bits should be same");
|
||||
@Test
|
||||
public void mismatchDataBits2() {
|
||||
Exception ex = org.junit.jupiter.api.Assertions.assertThrows(IllegalArgumentException.class, () -> { int answer = HammingDistance.compute("1", "11"); });
|
||||
|
||||
Assertions.assertThat(ex.getMessage()).contains("must have the same length");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkForLongDataBitsSame() {
|
||||
String senderBits = "10010101101010000100110100", receiverBits = "10010101101010000100110100";
|
||||
int answer = hd.getHammingDistanceBetweenBits(senderBits, receiverBits);
|
||||
String someBits = "10010101101010000100110100";
|
||||
int answer = HammingDistance.compute(someBits, someBits);
|
||||
Assertions.assertThat(answer).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkForEmptyInput() {
|
||||
String someBits = "";
|
||||
int answer = HammingDistance.compute(someBits, someBits);
|
||||
Assertions.assertThat(answer).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkForInputOfLength1() {
|
||||
String someBits = "0";
|
||||
int answer = HammingDistance.compute(someBits, someBits);
|
||||
Assertions.assertThat(answer).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void computeThrowsExceptionWhenInputsAreNotBitStrs() {
|
||||
Exception ex = org.junit.jupiter.api.Assertions.assertThrows(IllegalArgumentException.class, () -> { int answer = HammingDistance.compute("1A", "11"); });
|
||||
|
||||
Assertions.assertThat(ex.getMessage()).contains("must be a binary string");
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user