Skip to content
Open
Changes from all commits
Commits
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
159 changes: 159 additions & 0 deletions L2023111068_9_Test.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
import org.junit.Test;
import static org.junit.Assert.*;

/**
* 测试类设计总体原则:
* 1. 等价类划分:将输入数据划分为有效等价类和无效等价类。
* 2. 边界值分析:对输入空间的边界进行重点测试。
* 3. 覆盖主要逻辑路径:确保测试用例覆盖程序的所有关键判断和循环。
*/
public class L2024123456_9_Test { // 请将2024123456替换为你的真实学号

/**
* 测试目的:验证正常情况下的二分图分组功能。
* 测试用例:输入n=4, dislikes=[[1,2],[1,3],[2,4]],期望输出true。
* 等价类:有效输入,可以成功二分的情况。
*/
@Test
public void testNormalCaseCanPartition() {
Solution9 solver = new Solution9();
int n = 4;
int[][] dislikes = {{1,2}, {1,3}, {2,4}};
assertTrue("正常情况应该可以二分", solver.possibleBipartition(n, dislikes));
}

/**
* 测试目的:验证无法二分的情况。
* 测试用例:输入n=3, dislikes=[[1,2],[1,3],[2,3]],期望输出false。
* 等价类:有效输入,但存在奇数环无法二分的情况。
*/
@Test
public void testNormalCaseCannotPartition() {
Solution9 solver = new Solution9();
int n = 3;
int[][] dislikes = {{1,2}, {1,3}, {2,3}};
assertFalse("存在三角关系应该无法二分", solver.possibleBipartition(n, dislikes));
}

/**
* 测试目的:验证边界情况-只有1个人。
* 测试用例:输入n=1, dislikes=[],期望输出true。
* 边界值:最小人数边界。
*/
@Test
public void testBoundarySinglePerson() {
Solution9 solver = new Solution9();
int n = 1;
int[][] dislikes = {};
assertTrue("单个人应该可以任意分组", solver.possibleBipartition(n, dislikes));
}

/**
* 测试目的:验证边界情况-没有不喜欢关系。
* 测试用例:输入n=5, dislikes=[],期望输出true。
* 边界值:空关系边界。
*/
@Test
public void testBoundaryNoDislikes() {
import org.junit.Test;
import static org.junit.Assert.*;

/**
* 测试类设计总体原则:
* 1. 等价类划分:将输入数据划分为有效等价类和无效等价类。
* 2. 边界值分析:对输入空间的边界进行重点测试。
* 3. 覆盖主要逻辑路径:确保测试用例覆盖程序的所有关键判断和循环。
*/
public class L2024123456_9_Test { // 请将2024123456替换为你的真实学号

/**
* 测试目的:验证正常情况下的二分图分组功能。
* 测试用例:输入n=4, dislikes=[[1,2],[1,3],[2,4]],期望输出true。
* 等价类:有效输入,可以成功二分的情况。
*/
@Test
public void testNormalCaseCanPartition() {
Solution9 solver = new Solution9();
int n = 4;
int[][] dislikes = {{1,2}, {1,3}, {2,4}};
assertTrue("正常情况应该可以二分", solver.possibleBipartition(n, dislikes));
}

/**
* 测试目的:验证无法二分的情况。
* 测试用例:输入n=3, dislikes=[[1,2],[1,3],[2,3]],期望输出false。
* 等价类:有效输入,但存在奇数环无法二分的情况。
*/
@Test
public void testNormalCaseCannotPartition() {
Solution9 solver = new Solution9();
int n = 3;
int[][] dislikes = {{1,2}, {1,3}, {2,3}};
assertFalse("存在三角关系应该无法二分", solver.possibleBipartition(n, dislikes));
}

/**
* 测试目的:验证边界情况-只有1个人。
* 测试用例:输入n=1, dislikes=[],期望输出true。
* 边界值:最小人数边界。
*/
@Test
public void testBoundarySinglePerson() {
Solution9 solver = new Solution9();
int n = 1;
int[][] dislikes = {};
assertTrue("单个人应该可以任意分组", solver.possibleBipartition(n, dislikes));
}

/**
* 测试目的:验证边界情况-没有不喜欢关系。
* 测试用例:输入n=5, dislikes=[],期望输出true。
* 边界值:空关系边界。
*/
@Test
public void testBoundaryNoDislikes() {
Solution9 solver = new Solution9();
int n = 5;
int[][] dislikes = {};
assertTrue("没有不喜欢关系应该可以任意分组", solver.possibleBipartition(n, dislikes));
}

/**
* 测试目的:验证复杂情况-多个连通分量。
* 测试用例:输入n=6, dislikes=[[1,2],[2,3],[4,5],[5,6]],期望输出true。
* 等价类:多个独立连通分量的情况。
*/
@Test
public void testMultipleComponents() {
Solution9 solver = new Solution9();
int n = 6;
int[][] dislikes = {{1,2}, {2,3}, {4,5}, {5,6}};
assertTrue("多个独立组件应该可以二分", solver.possibleBipartition(n, dislikes));
}

/**
* 测试目的:验证复杂情况-存在奇数环。
* 测试用例:输入n=5, dislikes=[[1,2],[2,3],[3,4],[4,5],[1,5]],期望输出false。
* 等价类:五元环无法二分的情况。
*/
@Test
public void testOddCycle() {
Solution9 solver = new Solution9();
int n = 5;
int[][] dislikes = {{1,2}, {2,3}, {3,4}, {4,5}, {1,5}};
assertFalse("五元环应该无法二分", solver.possibleBipartition(n, dislikes));
}

/**
* 测试目的:验证边界情况-最大人数边界。
* 测试用例:输入n=2000, dislikes=[],期望输出true。
* 边界值:题目约束的最大人数边界。
*/
@Test
public void testBoundaryMaxPeople() {
Solution9 solver = new Solution9();
int n = 2000;
int[][] dislikes = {};
assertTrue("最大人数无关系应该可以分组", solver.possibleBipartition(n, dislikes));
}
}