Skip to content

Commit 171fdc9

Browse files
testing: improving CRCAlgorithmTest (#6403)
* testing: improving CRCAlgorithmTest * style: fix formatting --------- Co-authored-by: Deniz Altunkapan <93663085+DenizAltunkapan@users.noreply.github.com>
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy