Skip to content

Commit 171fdc9

Browse files
testing: improving CRCAlgorithmTest (#6403)
* testing: improving CRCAlgorithmTest * style: fix formatting --------- Co-authored-by: Deniz Altunkapan <[email protected]>
1 parent c7af421 commit 171fdc9

File tree

1 file changed

+62
-9
lines changed

1 file changed

+62
-9
lines changed
Lines changed: 62 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,82 @@
1-
21
package com.thealgorithms.others;
32

43
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertTrue;
55

66
import org.junit.jupiter.api.Test;
77

88
public class CRCAlgorithmTest {
99

1010
@Test
11-
void test1() {
11+
void testNoErrorsWithZeroBER() {
1212
CRCAlgorithm c = new CRCAlgorithm("10010101010100101010010000001010010101010", 10, 0.0);
13-
14-
// A bit-error rate of 0.0 should not provide any wrong messages
15-
c.changeMess();
13+
c.generateRandomMess();
1614
c.divideMessageWithP(false);
17-
assertEquals(c.getWrongMess(), 0);
15+
c.changeMess();
16+
c.divideMessageWithP(true);
17+
assertEquals(0, c.getWrongMess(), "BER=0 should produce no wrong messages");
18+
assertEquals(0, c.getWrongMessCaught(), "No errors, so no caught wrong messages");
19+
assertEquals(0, c.getWrongMessNotCaught(), "No errors, so no uncaught wrong messages");
20+
assertTrue(c.getCorrectMess() > 0, "Should have some correct messages");
1821
}
1922

2023
@Test
21-
void test2() {
24+
void testAllErrorsWithBEROne() {
2225
CRCAlgorithm c = new CRCAlgorithm("10010101010100101010010000001010010101010", 10, 1.0);
26+
c.generateRandomMess();
27+
c.divideMessageWithP(false);
28+
c.changeMess();
29+
c.divideMessageWithP(true);
30+
assertTrue(c.getWrongMess() > 0, "BER=1 should produce wrong messages");
31+
assertEquals(0, c.getCorrectMess(), "BER=1 should produce no correct messages");
32+
}
2333

24-
// A bit error rate of 1.0 should not provide any correct messages
34+
@Test
35+
void testIntermediateBER() {
36+
CRCAlgorithm c = new CRCAlgorithm("1101", 4, 0.5);
37+
c.generateRandomMess();
38+
for (int i = 0; i < 1000; i++) {
39+
c.refactor();
40+
c.generateRandomMess();
41+
c.divideMessageWithP(false);
42+
c.changeMess();
43+
c.divideMessageWithP(true);
44+
}
45+
assertTrue(c.getWrongMess() > 0, "Some wrong messages expected with BER=0.5");
46+
assertTrue(c.getWrongMessCaught() >= 0, "Wrong messages caught counter >= 0");
47+
assertTrue(c.getWrongMessNotCaught() >= 0, "Wrong messages not caught counter >= 0");
48+
assertTrue(c.getCorrectMess() >= 0, "Correct messages counter >= 0");
49+
assertEquals(c.getWrongMess(), c.getWrongMessCaught() + c.getWrongMessNotCaught(), "Sum of caught and not caught wrong messages should equal total wrong messages");
50+
}
51+
52+
@Test
53+
void testMessageChangedFlag() {
54+
CRCAlgorithm c = new CRCAlgorithm("1010", 4, 1.0);
55+
c.generateRandomMess();
56+
c.divideMessageWithP(false);
57+
c.changeMess();
58+
assertTrue(c.getWrongMess() > 0, "Message should be marked as changed with BER=1");
59+
}
60+
61+
@Test
62+
void testSmallMessageSize() {
63+
CRCAlgorithm c = new CRCAlgorithm("11", 2, 0.0);
64+
c.generateRandomMess();
65+
c.divideMessageWithP(false);
2566
c.changeMess();
67+
c.divideMessageWithP(true);
68+
assertEquals(0, c.getWrongMess(), "No errors expected for BER=0 with small message");
69+
}
70+
71+
@Test
72+
void testLargeMessageSize() {
73+
CRCAlgorithm c = new CRCAlgorithm("1101", 1000, 0.01);
74+
c.generateRandomMess();
2675
c.divideMessageWithP(false);
27-
assertEquals(c.getCorrectMess(), 0);
76+
c.changeMess();
77+
c.divideMessageWithP(true);
78+
// Just ensure counters are updated, no exceptions
79+
assertTrue(c.getWrongMess() >= 0);
80+
assertTrue(c.getCorrectMess() >= 0);
2881
}
2982
}

0 commit comments

Comments
 (0)