Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
5493aa5
Add Sum of Squares algorithm implementation
BEASTSHRIRAM Oct 2, 2025
3e9f039
Format code and add Wikipedia URL for Lagrange's theorem
BEASTSHRIRAM Oct 2, 2025
e71008f
Fixed clang-format issues
BEASTSHRIRAM Oct 2, 2025
db58f80
Added Mo's Algorithm and DiceThrower recursive algorithms
BEASTSHRIRAM Oct 2, 2025
235e87a
Merge branch 'master' into added-mos-algorithm-dice-thrower
BEASTSHRIRAM Oct 2, 2025
4c421fa
Fixed checkstyle violation
BEASTSHRIRAM Oct 2, 2025
587bd7e
Merge branch 'added-mos-algorithm-dice-thrower' of https://github.com…
BEASTSHRIRAM Oct 2, 2025
857b074
Fixed SpotBugs issue
BEASTSHRIRAM Oct 2, 2025
f8f16e7
Added in PMD exclusions
BEASTSHRIRAM Oct 2, 2025
5ba8a8d
Merge branch 'master' into added-mos-algorithm-dice-thrower
BEASTSHRIRAM Oct 3, 2025
a3cf21b
Merge branch 'master' into added-mos-algorithm-dice-thrower
BEASTSHRIRAM Oct 4, 2025
fc65769
Merge branch 'master' into added-mos-algorithm-dice-thrower
BEASTSHRIRAM Oct 4, 2025
68775a1
Improved test coverage for better Codecov scores.
BEASTSHRIRAM Oct 5, 2025
04e711a
Merge branch 'added-mos-algorithm-dice-thrower' of https://github.com…
BEASTSHRIRAM Oct 5, 2025
df609d6
Fixed clang-format issues in test files
BEASTSHRIRAM Oct 5, 2025
c7a0406
Add Mo's Algorithm and DiceThrower algorithms with comprehensive tests
BEASTSHRIRAM Oct 5, 2025
b13cd3a
Merge branch 'master' into added-mos-algorithm-dice-thrower
BEASTSHRIRAM Oct 6, 2025
d9ad6a6
Merge branch 'master' into added-mos-algorithm-dice-thrower
DenizAltunkapan Oct 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Improved test coverage for better Codecov scores.
  • Loading branch information
BEASTSHRIRAM committed Oct 5, 2025
commit 68775a168d8993bf8396805a61e324b33850e10a
24 changes: 24 additions & 0 deletions src/test/java/com/thealgorithms/others/MosAlgorithmTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import org.junit.jupiter.api.Test;

/**
Expand Down Expand Up @@ -175,4 +178,25 @@ void testRangeFrequencyWithDuplicates() {

assertArrayEquals(expected, results);
}

@Test
void testMainMethod() {
// Capture System.out
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintStream originalOut = System.out;
System.setOut(new PrintStream(outputStream));

try {
// Test main method
MosAlgorithm.main(new String[]{});
String output = outputStream.toString();

// Verify expected output contains demonstration
assertTrue(output.contains("Range Sum Queries Results:"));
assertTrue(output.contains("Range Frequency Queries Results:"));
assertTrue(output.contains("Count of 2 in ranges:"));
} finally {
System.setOut(originalOut);
}
}
}
96 changes: 96 additions & 0 deletions src/test/java/com/thealgorithms/recursion/DiceThrowerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.List;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -124,4 +126,98 @@ void testAllCombinationsValid() {
assertEquals(5, sum, "Combination " + combination + " does not sum to 5");
}
}

@Test
void testPrintDiceCombinations() {
// Capture System.out
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintStream originalOut = System.out;
System.setOut(new PrintStream(outputStream));

try {
// Test printing combinations for target 3
DiceThrower.printDiceCombinations(3);
String output = outputStream.toString();

// Verify all expected combinations are printed
assertTrue(output.contains("111"));
assertTrue(output.contains("12"));
assertTrue(output.contains("21"));
assertTrue(output.contains("3"));

// Count number of lines (combinations)
String[] lines = output.trim().split("\n");
assertEquals(4, lines.length);
} finally {
// Restore System.out
System.setOut(originalOut);
}
}

@Test
void testPrintDiceCombinationsZero() {
// Capture System.out
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintStream originalOut = System.out;
System.setOut(new PrintStream(outputStream));

try {
DiceThrower.printDiceCombinations(0);
String output = outputStream.toString();

// Should print empty string (one line)
assertEquals("", output.trim());
} finally {
System.setOut(originalOut);
}
}

@Test
void testMainMethod() {
// Capture System.out
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintStream originalOut = System.out;
System.setOut(new PrintStream(outputStream));

try {
// Test main method
DiceThrower.main(new String[]{});
String output = outputStream.toString();

// Verify expected output contains header and combinations
assertTrue(output.contains("All dice combinations that sum to 4:"));
assertTrue(output.contains("Total combinations: 8"));
assertTrue(output.contains("1111"));
assertTrue(output.contains("22"));
assertTrue(output.contains("4"));
} finally {
System.setOut(originalOut);
}
}

@Test
void testEdgeCaseTargetFive() {
List<String> result = DiceThrower.getDiceCombinations(5);
assertEquals(16, result.size());

// Test specific combinations exist
assertTrue(result.contains("11111"));
assertTrue(result.contains("1112"));
assertTrue(result.contains("122"));
assertTrue(result.contains("14"));
assertTrue(result.contains("23"));
assertTrue(result.contains("5"));
}

@Test
void testTargetGreaterThanSix() {
List<String> result = DiceThrower.getDiceCombinations(8);
assertTrue(result.size() > 0);

// Verify some expected combinations
assertTrue(result.contains("62"));
assertTrue(result.contains("53"));
assertTrue(result.contains("44"));
assertTrue(result.contains("2222"));
}
}