From 742dabaec7bd771c64080cd3a18f7d16e025dd2a Mon Sep 17 00:00:00 2001 From: zhangyaoyuan2023111068 <1148125249@qq.com> Date: Sat, 22 Nov 2025 22:07:48 +0800 Subject: [PATCH] =?UTF-8?q?fix(solution9):=20=E4=BF=AE=E5=A4=8D=E4=BA=86?= =?UTF-8?q?=E6=95=B0=E7=BB=84=E8=B6=8A=E7=95=8C=E5=BC=82=E5=B8=B8=E5=B9=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AD=89=E4=BB=B7=E7=B1=BB=E5=88=92=E5=88=86?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- L2023111068_9_Test.java | 159 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 L2023111068_9_Test.java diff --git a/L2023111068_9_Test.java b/L2023111068_9_Test.java new file mode 100644 index 00000000..1941287b --- /dev/null +++ b/L2023111068_9_Test.java @@ -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)); + } +}