ModelTranslator: UV 岛数/翻转/利用率纯逻辑(TDD)

This commit is contained in:
ud18010
2026-07-16 11:51:45 +08:00
parent c24d7b9999
commit 71416aa12a
2 changed files with 71 additions and 0 deletions
@@ -36,5 +36,44 @@ class TestWithinTolerance(unittest.TestCase):
self.assertFalse(bd.within_tolerance(0, 0))
class TestCountIslands(unittest.TestCase):
def test_no_faces(self):
self.assertEqual(bd.count_islands(0, []), 0)
def test_no_pairs_each_face_is_island(self):
self.assertEqual(bd.count_islands(3, []), 3)
def test_chain_merges_to_one(self):
self.assertEqual(bd.count_islands(4, [(0, 1), (1, 2), (2, 3)]), 1)
def test_two_groups(self):
self.assertEqual(bd.count_islands(5, [(0, 1), (3, 4)]), 3) # {0,1} {2} {3,4}
def test_duplicate_pairs_ok(self):
self.assertEqual(bd.count_islands(2, [(0, 1), (1, 0), (0, 1)]), 1)
class TestFlippedFraction(unittest.TestCase):
def test_empty_is_zero(self):
self.assertEqual(bd.flipped_fraction([]), 0.0)
def test_mixed(self):
self.assertAlmostEqual(bd.flipped_fraction([0.1, -0.2, 0.3, 0.4]), 0.25)
def test_all_positive(self):
self.assertEqual(bd.flipped_fraction([0.1, 0.2]), 0.0)
class TestFillRatio(unittest.TestCase):
def test_sum(self):
self.assertAlmostEqual(bd.fill_ratio([0.2, 0.3]), 0.5)
def test_clamped_to_one(self):
self.assertEqual(bd.fill_ratio([0.8, 0.9]), 1.0)
def test_empty_is_zero(self):
self.assertEqual(bd.fill_ratio([]), 0.0)
if __name__ == "__main__":
unittest.main()