From e810dca07d347f642e8307cf4f887aec33814b49 Mon Sep 17 00:00:00 2001 From: alxkm Date: Thu, 17 Jul 2025 22:06:38 +0200 Subject: [PATCH 1/2] testing: improving CRCAlgorithmTest --- .../others/CRCAlgorithmTest.java | 72 ++++++++++++++++--- 1 file changed, 63 insertions(+), 9 deletions(-) diff --git a/src/test/java/com/thealgorithms/others/CRCAlgorithmTest.java b/src/test/java/com/thealgorithms/others/CRCAlgorithmTest.java index a581a35bf963..d5333749b742 100644 --- a/src/test/java/com/thealgorithms/others/CRCAlgorithmTest.java +++ b/src/test/java/com/thealgorithms/others/CRCAlgorithmTest.java @@ -1,29 +1,83 @@ - package com.thealgorithms.others; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; public class CRCAlgorithmTest { @Test - void test1() { + void testNoErrorsWithZeroBER() { CRCAlgorithm c = new CRCAlgorithm("10010101010100101010010000001010010101010", 10, 0.0); - - // A bit-error rate of 0.0 should not provide any wrong messages - c.changeMess(); + c.generateRandomMess(); c.divideMessageWithP(false); - assertEquals(c.getWrongMess(), 0); + c.changeMess(); + c.divideMessageWithP(true); + assertEquals(0, c.getWrongMess(), "BER=0 should produce no wrong messages"); + assertEquals(0, c.getWrongMessCaught(), "No errors, so no caught wrong messages"); + assertEquals(0, c.getWrongMessNotCaught(), "No errors, so no uncaught wrong messages"); + assertTrue(c.getCorrectMess() > 0, "Should have some correct messages"); } @Test - void test2() { + void testAllErrorsWithBEROne() { CRCAlgorithm c = new CRCAlgorithm("10010101010100101010010000001010010101010", 10, 1.0); + c.generateRandomMess(); + c.divideMessageWithP(false); + c.changeMess(); + c.divideMessageWithP(true); + assertTrue(c.getWrongMess() > 0, "BER=1 should produce wrong messages"); + assertEquals(0, c.getCorrectMess(), "BER=1 should produce no correct messages"); + } - // A bit error rate of 1.0 should not provide any correct messages + @Test + void testIntermediateBER() { + CRCAlgorithm c = new CRCAlgorithm("1101", 4, 0.5); + c.generateRandomMess(); + for (int i = 0; i < 1000; i++) { + c.refactor(); + c.generateRandomMess(); + c.divideMessageWithP(false); + c.changeMess(); + c.divideMessageWithP(true); + } + assertTrue(c.getWrongMess() > 0, "Some wrong messages expected with BER=0.5"); + assertTrue(c.getWrongMessCaught() >= 0, "Wrong messages caught counter >= 0"); + assertTrue(c.getWrongMessNotCaught() >= 0, "Wrong messages not caught counter >= 0"); + assertTrue(c.getCorrectMess() >= 0, "Correct messages counter >= 0"); + assertEquals(c.getWrongMess(), c.getWrongMessCaught() + c.getWrongMessNotCaught(), + "Sum of caught and not caught wrong messages should equal total wrong messages"); + } + + @Test + void testMessageChangedFlag() { + CRCAlgorithm c = new CRCAlgorithm("1010", 4, 1.0); + c.generateRandomMess(); + c.divideMessageWithP(false); + c.changeMess(); + assertTrue(c.getWrongMess() > 0, "Message should be marked as changed with BER=1"); + } + + @Test + void testSmallMessageSize() { + CRCAlgorithm c = new CRCAlgorithm("11", 2, 0.0); + c.generateRandomMess(); + c.divideMessageWithP(false); c.changeMess(); + c.divideMessageWithP(true); + assertEquals(0, c.getWrongMess(), "No errors expected for BER=0 with small message"); + } + + @Test + void testLargeMessageSize() { + CRCAlgorithm c = new CRCAlgorithm("1101", 1000, 0.01); + c.generateRandomMess(); c.divideMessageWithP(false); - assertEquals(c.getCorrectMess(), 0); + c.changeMess(); + c.divideMessageWithP(true); + // Just ensure counters are updated, no exceptions + assertTrue(c.getWrongMess() >= 0); + assertTrue(c.getCorrectMess() >= 0); } } From acf6c5f2de14166da328db1c200e8f882e97fe6a Mon Sep 17 00:00:00 2001 From: alxkm Date: Thu, 17 Jul 2025 22:10:21 +0200 Subject: [PATCH 2/2] style: fix formatting --- src/test/java/com/thealgorithms/others/CRCAlgorithmTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/com/thealgorithms/others/CRCAlgorithmTest.java b/src/test/java/com/thealgorithms/others/CRCAlgorithmTest.java index d5333749b742..542c256a3e88 100644 --- a/src/test/java/com/thealgorithms/others/CRCAlgorithmTest.java +++ b/src/test/java/com/thealgorithms/others/CRCAlgorithmTest.java @@ -46,8 +46,7 @@ void testIntermediateBER() { assertTrue(c.getWrongMessCaught() >= 0, "Wrong messages caught counter >= 0"); assertTrue(c.getWrongMessNotCaught() >= 0, "Wrong messages not caught counter >= 0"); assertTrue(c.getCorrectMess() >= 0, "Correct messages counter >= 0"); - assertEquals(c.getWrongMess(), c.getWrongMessCaught() + c.getWrongMessNotCaught(), - "Sum of caught and not caught wrong messages should equal total wrong messages"); + assertEquals(c.getWrongMess(), c.getWrongMessCaught() + c.getWrongMessNotCaught(), "Sum of caught and not caught wrong messages should equal total wrong messages"); } @Test