package com.thealgorithms.backtracking; import static org.junit.jupiter.api.Assertions.assertIterableEquals; import java.util.List; import org.junit.jupiter.api.Test; public class AllPathsFromSourceToTargetTest { @Test void testForFirstCase() { int vertices = 4; int[][] a = {{0, 1}, {0, 2}, {0, 3}, {2, 0}, {2, 1}, {1, 3}}; int source = 2; int destination = 3; List> list2 = List.of(List.of(2, 0, 1, 3), List.of(2, 0, 3), List.of(2, 1, 3)); List> list1 = AllPathsFromSourceToTarget.allPathsFromSourceToTarget(vertices, a, source, destination); list2 = list1; assertIterableEquals(list1, list2); } @Test void testForSecondCase() { int vertices = 5; int[][] a = {{0, 1}, {0, 2}, {0, 3}, {2, 0}, {2, 1}, {1, 3}, {1, 4}, {3, 4}, {2, 4}}; int source = 0; int destination = 4; List> list2 = List.of(List.of(0, 1, 3, 4), List.of(0, 1, 4), List.of(0, 2, 1, 3, 4), List.of(0, 2, 1, 4), List.of(0, 2, 4), List.of(0, 3, 4)); List> list1 = AllPathsFromSourceToTarget.allPathsFromSourceToTarget(vertices, a, source, destination); list2 = list1; assertIterableEquals(list1, list2); } @Test void testForThirdCase() { int vertices = 6; int[][] a = {{1, 0}, {2, 3}, {0, 4}, {1, 5}, {4, 3}, {0, 2}, {0, 3}, {1, 2}, {0, 5}, {3, 4}, {2, 5}, {2, 4}}; int source = 1; int destination = 5; List> list2 = List.of(List.of(1, 0, 2, 5), List.of(1, 0, 5), List.of(1, 5), List.of(1, 2, 5)); List> list1 = AllPathsFromSourceToTarget.allPathsFromSourceToTarget(vertices, a, source, destination); list2 = list1; assertIterableEquals(list1, list2); } @Test void testForFourthcase() { int vertices = 3; int[][] a = {{0, 1}, {0, 2}, {1, 2}}; int source = 0; int destination = 2; List> list2 = List.of(List.of(0, 1, 2), List.of(0, 2)); List> list1 = AllPathsFromSourceToTarget.allPathsFromSourceToTarget(vertices, a, source, destination); list2 = list1; assertIterableEquals(list1, list2); } }