Files
Java/src/test/java/com/thealgorithms/graph/TravelingSalesmanTest.java
2025-03-31 22:18:19 +00:00

128 lines
4.8 KiB
Java

package com.thealgorithms.graph;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class TravelingSalesmanTest {
// Test Case 1: A simple distance matrix with 4 cities
@Test
public void testBruteForceSimple() {
int[][] distanceMatrix = {{0, 10, 15, 20}, {10, 0, 35, 25}, {15, 35, 0, 30}, {20, 25, 30, 0}};
int expectedMinDistance = 80;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingSimple() {
int[][] distanceMatrix = {{0, 10, 15, 20}, {10, 0, 35, 25}, {15, 35, 0, 30}, {20, 25, 30, 0}};
int expectedMinDistance = 80;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
// Test Case 2: A distance matrix with 3 cities
@Test
public void testBruteForceThreeCities() {
int[][] distanceMatrix = {{0, 10, 15}, {10, 0, 35}, {15, 35, 0}};
int expectedMinDistance = 60;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingThreeCities() {
int[][] distanceMatrix = {{0, 10, 15}, {10, 0, 35}, {15, 35, 0}};
int expectedMinDistance = 60;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
// Test Case 3: A distance matrix with 5 cities (larger input)
@Test
public void testBruteForceFiveCities() {
int[][] distanceMatrix = {{0, 2, 9, 10, 1}, {2, 0, 6, 5, 8}, {9, 6, 0, 4, 3}, {10, 5, 4, 0, 7}, {1, 8, 3, 7, 0}};
int expectedMinDistance = 15;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingFiveCities() {
int[][] distanceMatrix = {{0, 2, 9, 10, 1}, {2, 0, 6, 5, 8}, {9, 6, 0, 4, 3}, {10, 5, 4, 0, 7}, {1, 8, 3, 7, 0}};
int expectedMinDistance = 15;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
// Test Case 4: A distance matrix with 2 cities (simple case)
@Test
public void testBruteForceTwoCities() {
int[][] distanceMatrix = {{0, 1}, {1, 0}};
int expectedMinDistance = 2;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingTwoCities() {
int[][] distanceMatrix = {{0, 1}, {1, 0}};
int expectedMinDistance = 2;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
// Test Case 5: A distance matrix with identical distances
@Test
public void testBruteForceEqualDistances() {
int[][] distanceMatrix = {{0, 10, 10, 10}, {10, 0, 10, 10}, {10, 10, 0, 10}, {10, 10, 10, 0}};
int expectedMinDistance = 40;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingEqualDistances() {
int[][] distanceMatrix = {{0, 10, 10, 10}, {10, 0, 10, 10}, {10, 10, 0, 10}, {10, 10, 10, 0}};
int expectedMinDistance = 40;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
// Test Case 6: A distance matrix with only one city
@Test
public void testBruteForceOneCity() {
int[][] distanceMatrix = {{0}};
int expectedMinDistance = 0;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingOneCity() {
int[][] distanceMatrix = {{0}};
int expectedMinDistance = 0;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
// Test Case 7: Distance matrix with large numbers
@Test
public void testBruteForceLargeNumbers() {
int[][] distanceMatrix = {{0, 1000000, 2000000}, {1000000, 0, 1500000}, {2000000, 1500000, 0}};
int expectedMinDistance = 4500000;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingLargeNumbers() {
int[][] distanceMatrix = {{0, 1000000, 2000000}, {1000000, 0, 1500000}, {2000000, 1500000, 0}};
int expectedMinDistance = 4500000;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
}