Four-way diff comparison

source: results/word_diff_align_algorithm_examples_bitindex_worddiff_movedcolor_a4.txt | generated: 2026-05-27T02:39:37.012696+00:00 | examples: 2

[060] fixture | security_define_collision_move

need=move align moved remote
old: fixtures/security_define_collision_move/old.h
new: fixtures/security_define_collision_move/new.h
note: moved permission constants hide a dangerous value collision

histogram

git diff --no-index --histogram --color=always --unified=8 fixtures/security_define_collision_move/old.h fixtures/security_define_collision_move/new.h
diff --git a/fixtures/security_define_collision_move/old.h b/fixtures/security_define_collision_move/new.h
index de1981e..442697a 100644
--- a/fixtures/security_define_collision_move/old.h
+++ b/fixtures/security_define_collision_move/new.h
@@ -3,23 +3,23 @@
 #define ROLE_VIEWER                10
 #define ROLE_EDITOR                20
 #define ROLE_AUDITOR               30
 
 #define LIMIT_PUBLIC_DOWNLOADS     100
 #define LIMIT_PUBLIC_UPLOADS       25
 #define LIMIT_PUBLIC_INVITES       8
 
-/* Public resource permissions. */
-#define PERM_RESOURCE_READ         0x0001
-#define PERM_RESOURCE_LIST         0x0002
-#define PERM_RESOURCE_COMMENT      0x0004
-#define PERM_RESOURCE_EXPORT       0x0008
-#define PERM_RESOURCE_SHARE        0x0010
-#define PERM_RESOURCE_ARCHIVE      0x0020
-#define PERM_RESOURCE_DELETE       0x0040
-#define PERM_RESOURCE_ADMIN        0x0080
-
 #define PERM_INTERNAL_DEBUG        0x0100
 #define PERM_INTERNAL_IMPERSONATE  0x0200
 
 #define AUDIT_POLICY_STRICT        1
 #define AUDIT_POLICY_VERBOSE       2
+
+/* Public resource permissions. */
+#define PERM_RESOURCE_READ         0x0001
+#define PERM_RESOURCE_LIST         0x0002
+#define PERM_RESOURCE_COMMENT      0x0004
+#define PERM_RESOURCE_EXPORT       0x0001
+#define PERM_RESOURCE_SHARE        0x0010
+#define PERM_RESOURCE_ARCHIVE      0x0020
+#define PERM_RESOURCE_DELETE       0x0040
+#define PERM_RESOURCE_ADMIN        0x0080

word-diff

git diff --no-index --histogram --color=always --unified=8 --word-diff=plain fixtures/security_define_collision_move/old.h fixtures/security_define_collision_move/new.h
diff --git a/fixtures/security_define_collision_move/old.h b/fixtures/security_define_collision_move/new.h
index de1981e..442697a 100644
--- a/fixtures/security_define_collision_move/old.h
+++ b/fixtures/security_define_collision_move/new.h
@@ -3,23 +3,23 @@
#define ROLE_VIEWER                10
#define ROLE_EDITOR                20
#define ROLE_AUDITOR               30

#define LIMIT_PUBLIC_DOWNLOADS     100
#define LIMIT_PUBLIC_UPLOADS       25
#define LIMIT_PUBLIC_INVITES       8

[-/* Public resource permissions. */-]
[-#define PERM_RESOURCE_READ         0x0001-]
[-#define PERM_RESOURCE_LIST         0x0002-]
[-#define PERM_RESOURCE_COMMENT      0x0004-]
[-#define PERM_RESOURCE_EXPORT       0x0008-]
[-#define PERM_RESOURCE_SHARE        0x0010-]
[-#define PERM_RESOURCE_ARCHIVE      0x0020-]
[-#define PERM_RESOURCE_DELETE       0x0040-]
[-#define PERM_RESOURCE_ADMIN        0x0080-]

#define PERM_INTERNAL_DEBUG        0x0100
#define PERM_INTERNAL_IMPERSONATE  0x0200

#define AUDIT_POLICY_STRICT        1
#define AUDIT_POLICY_VERBOSE       2

{+/* Public resource permissions. */+}
{+#define PERM_RESOURCE_READ         0x0001+}
{+#define PERM_RESOURCE_LIST         0x0002+}
{+#define PERM_RESOURCE_COMMENT      0x0004+}
{+#define PERM_RESOURCE_EXPORT       0x0001+}
{+#define PERM_RESOURCE_SHARE        0x0010+}
{+#define PERM_RESOURCE_ARCHIVE      0x0020+}
{+#define PERM_RESOURCE_DELETE       0x0040+}
{+#define PERM_RESOURCE_ADMIN        0x0080+}

color-moved

git diff --no-index --histogram --color=always --unified=8 --color-moved=blocks fixtures/security_define_collision_move/old.h fixtures/security_define_collision_move/new.h
diff --git a/fixtures/security_define_collision_move/old.h b/fixtures/security_define_collision_move/new.h
index de1981e..442697a 100644
--- a/fixtures/security_define_collision_move/old.h
+++ b/fixtures/security_define_collision_move/new.h
@@ -3,23 +3,23 @@
 #define ROLE_VIEWER                10
 #define ROLE_EDITOR                20
 #define ROLE_AUDITOR               30
 
 #define LIMIT_PUBLIC_DOWNLOADS     100
 #define LIMIT_PUBLIC_UPLOADS       25
 #define LIMIT_PUBLIC_INVITES       8
 
-/* Public resource permissions. */
-#define PERM_RESOURCE_READ         0x0001
-#define PERM_RESOURCE_LIST         0x0002
-#define PERM_RESOURCE_COMMENT      0x0004
-#define PERM_RESOURCE_EXPORT       0x0008
-#define PERM_RESOURCE_SHARE        0x0010
-#define PERM_RESOURCE_ARCHIVE      0x0020
-#define PERM_RESOURCE_DELETE       0x0040
-#define PERM_RESOURCE_ADMIN        0x0080
-
 #define PERM_INTERNAL_DEBUG        0x0100
 #define PERM_INTERNAL_IMPERSONATE  0x0200
 
 #define AUDIT_POLICY_STRICT        1
 #define AUDIT_POLICY_VERBOSE       2
+
+/* Public resource permissions. */
+#define PERM_RESOURCE_READ         0x0001
+#define PERM_RESOURCE_LIST         0x0002
+#define PERM_RESOURCE_COMMENT      0x0004
+#define PERM_RESOURCE_EXPORT       0x0001
+#define PERM_RESOURCE_SHARE        0x0010
+#define PERM_RESOURCE_ARCHIVE      0x0020
+#define PERM_RESOURCE_DELETE       0x0040
+#define PERM_RESOURCE_ADMIN        0x0080

word-diff-align

git diff --no-index --histogram --color=always --unified=8 --word-diff-align fixtures/security_define_collision_move/old.h fixtures/security_define_collision_move/new.h
diff --git a/fixtures/security_define_collision_move/old.h b/fixtures/security_define_collision_move/new.h
index de1981e..442697a 100644
--- a/fixtures/security_define_collision_move/old.h
+++ b/fixtures/security_define_collision_move/new.h
@@ -3,23 +3,23 @@
 #define ROLE_VIEWER                10
 #define ROLE_EDITOR                20
 #define ROLE_AUDITOR               30
 
 #define LIMIT_PUBLIC_DOWNLOADS     100
 #define LIMIT_PUBLIC_UPLOADS       25
 #define LIMIT_PUBLIC_INVITES       8
 
-/* Public resource permissions. */        # aligned 8->14 unchanged
-#define PERM_RESOURCE_READ         0x0001        # aligned 9->15 unchanged
-#define PERM_RESOURCE_LIST         0x0002        # aligned 10->16 unchanged
-#define PERM_RESOURCE_COMMENT      0x0004        # aligned 11->17 unchanged
-#define PERM_RESOURCE_EXPORT[-       0x0008-]        # aligned 12->18 edited
-#define PERM_RESOURCE_SHARE        0x0010        # aligned 13->19 unchanged
-#define PERM_RESOURCE_ARCHIVE      0x0020        # aligned 14->20 unchanged
-#define PERM_RESOURCE_DELETE       0x0040        # aligned 15->21 unchanged
-#define PERM_RESOURCE_ADMIN        0x0080        # aligned 16->22 unchanged
-
 #define PERM_INTERNAL_DEBUG        0x0100
 #define PERM_INTERNAL_IMPERSONATE  0x0200
 
 #define AUDIT_POLICY_STRICT        1
 #define AUDIT_POLICY_VERBOSE       2
+
+/* Public resource permissions. */        # aligned 8->14 unchanged
+#define PERM_RESOURCE_READ         0x0001        # aligned 9->15 unchanged
+#define PERM_RESOURCE_LIST         0x0002        # aligned 10->16 unchanged
+#define PERM_RESOURCE_COMMENT      0x0004        # aligned 11->17 unchanged
+#define PERM_RESOURCE_EXPORT{+       0x0001+}        # aligned 12->18 edited
+#define PERM_RESOURCE_SHARE        0x0010        # aligned 13->19 unchanged
+#define PERM_RESOURCE_ARCHIVE      0x0020        # aligned 14->20 unchanged
+#define PERM_RESOURCE_DELETE       0x0040        # aligned 15->21 unchanged
+#define PERM_RESOURCE_ADMIN        0x0080        # aligned 16->22 unchanged

[073] cpython | b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py

need=near-match align remote word
old: data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py
new: data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
note: nonweak unmatched drops by 50

histogram

git diff --no-index --histogram --color=always --unified=8 data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
index 3c856a8..5449f04 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
@@ -312,38 +312,36 @@ class OffSysPathTests(fixtures.DistInfoPkgOffPath, unittest.TestCase):
 
 class InvalidateCache(unittest.TestCase):
     def test_invalidate_cache(self):
         # No externally observable behavior, but ensures test coverage...
         importlib.invalidate_caches()
 
 
 class PreparedTests(unittest.TestCase):
-    def test_normalize(self):
-        tests = [
-            # Simple
-            ("sample", "sample"),
-            # Mixed case
-            ("Sample", "sample"),
-            ("SAMPLE", "sample"),
-            ("SaMpLe", "sample"),
-            # Separator conversions
-            ("sample-pkg", "sample_pkg"),
-            ("sample.pkg", "sample_pkg"),
-            ("sample_pkg", "sample_pkg"),
-            # Multiple separators
-            ("sample---pkg", "sample_pkg"),
-            ("sample___pkg", "sample_pkg"),
-            ("sample...pkg", "sample_pkg"),
-            # Mixed separators
-            ("sample-._pkg", "sample_pkg"),
-            ("sample_.-pkg", "sample_pkg"),
-            # Complex
-            ("Sample__Pkg-name.foo", "sample_pkg_name_foo"),
-            ("Sample__Pkg.name__foo", "sample_pkg_name_foo"),
-            # Uppercase with separators
-            ("SAMPLE-PKG", "sample_pkg"),
-            ("Sample.Pkg", "sample_pkg"),
-            ("SAMPLE_PKG", "sample_pkg"),
-        ]
-        for name, expected in tests:
-            with self.subTest(name=name):
-                self.assertEqual(Prepared.normalize(name), expected)
+    @fixtures.parameterize(
+        # Simple
+        dict(input='sample', expected='sample'),
+        # Mixed case
+        dict(input='Sample', expected='sample'),
+        dict(input='SAMPLE', expected='sample'),
+        dict(input='SaMpLe', expected='sample'),
+        # Separator conversions
+        dict(input='sample-pkg', expected='sample_pkg'),
+        dict(input='sample.pkg', expected='sample_pkg'),
+        dict(input='sample_pkg', expected='sample_pkg'),
+        # Multiple separators
+        dict(input='sample---pkg', expected='sample_pkg'),
+        dict(input='sample___pkg', expected='sample_pkg'),
+        dict(input='sample...pkg', expected='sample_pkg'),
+        # Mixed separators
+        dict(input='sample-._pkg', expected='sample_pkg'),
+        dict(input='sample_.-pkg', expected='sample_pkg'),
+        # Complex
+        dict(input='Sample__Pkg-name.foo', expected='sample_pkg_name_foo'),
+        dict(input='Sample__Pkg.name__foo', expected='sample_pkg_name_foo'),
+        # Uppercase with separators
+        dict(input='SAMPLE-PKG', expected='sample_pkg'),
+        dict(input='Sample.Pkg', expected='sample_pkg'),
+        dict(input='SAMPLE_PKG', expected='sample_pkg'),
+    )
+    def test_normalize(self, input, expected):
+        self.assertEqual(Prepared.normalize(input), expected)

word-diff

git diff --no-index --histogram --color=always --unified=8 --word-diff=plain data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
index 3c856a8..5449f04 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
@@ -312,38 +312,36 @@ class OffSysPathTests(fixtures.DistInfoPkgOffPath, unittest.TestCase):

class InvalidateCache(unittest.TestCase):
    def test_invalidate_cache(self):
        # No externally observable behavior, but ensures test coverage...
        importlib.invalidate_caches()


class PreparedTests(unittest.TestCase):
    [-def test_normalize(self):-]
[-        tests = [-]{+@fixtures.parameterize(+}
        # Simple
        [-("sample", "sample"),-]{+dict(input='sample', expected='sample'),+}
        # Mixed case
        [-("Sample", "sample"),-]
[-            ("SAMPLE", "sample"),-]
[-            ("SaMpLe", "sample"),-]{+dict(input='Sample', expected='sample'),+}
{+        dict(input='SAMPLE', expected='sample'),+}
{+        dict(input='SaMpLe', expected='sample'),+}
        # Separator conversions
        [-("sample-pkg", "sample_pkg"),-]
[-            ("sample.pkg", "sample_pkg"),-]
[-            ("sample_pkg", "sample_pkg"),-]{+dict(input='sample-pkg', expected='sample_pkg'),+}
{+        dict(input='sample.pkg', expected='sample_pkg'),+}
{+        dict(input='sample_pkg', expected='sample_pkg'),+}
        # Multiple separators
        [-("sample---pkg", "sample_pkg"),-]
[-            ("sample___pkg", "sample_pkg"),-]
[-            ("sample...pkg", "sample_pkg"),-]{+dict(input='sample---pkg', expected='sample_pkg'),+}
{+        dict(input='sample___pkg', expected='sample_pkg'),+}
{+        dict(input='sample...pkg', expected='sample_pkg'),+}
        # Mixed separators
        [-("sample-._pkg", "sample_pkg"),-]
[-            ("sample_.-pkg", "sample_pkg"),-]{+dict(input='sample-._pkg', expected='sample_pkg'),+}
{+        dict(input='sample_.-pkg', expected='sample_pkg'),+}
        # Complex
        [-("Sample__Pkg-name.foo", "sample_pkg_name_foo"),-]
[-            ("Sample__Pkg.name__foo", "sample_pkg_name_foo"),-]{+dict(input='Sample__Pkg-name.foo', expected='sample_pkg_name_foo'),+}
{+        dict(input='Sample__Pkg.name__foo', expected='sample_pkg_name_foo'),+}
        # Uppercase with separators
        [-("SAMPLE-PKG", "sample_pkg"),-]
[-            ("Sample.Pkg", "sample_pkg"),-]
[-            ("SAMPLE_PKG", "sample_pkg"),-]
[-        ]-]
[-        for name, expected in tests:-]
[-            with self.subTest(name=name):-]
[-                self.assertEqual(Prepared.normalize(name),-]{+dict(input='SAMPLE-PKG', expected='sample_pkg'),+}
{+        dict(input='Sample.Pkg', expected='sample_pkg'),+}
{+        dict(input='SAMPLE_PKG', expected='sample_pkg'),+}
{+    )+}
{+    def test_normalize(self, input, expected):+}
{+        self.assertEqual(Prepared.normalize(input),+} expected)

color-moved

git diff --no-index --histogram --color=always --unified=8 --color-moved=blocks data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
index 3c856a8..5449f04 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
@@ -312,38 +312,36 @@ class OffSysPathTests(fixtures.DistInfoPkgOffPath, unittest.TestCase):
 
 class InvalidateCache(unittest.TestCase):
     def test_invalidate_cache(self):
         # No externally observable behavior, but ensures test coverage...
         importlib.invalidate_caches()
 
 
 class PreparedTests(unittest.TestCase):
-    def test_normalize(self):
-        tests = [
-            # Simple
-            ("sample", "sample"),
-            # Mixed case
-            ("Sample", "sample"),
-            ("SAMPLE", "sample"),
-            ("SaMpLe", "sample"),
-            # Separator conversions
-            ("sample-pkg", "sample_pkg"),
-            ("sample.pkg", "sample_pkg"),
-            ("sample_pkg", "sample_pkg"),
-            # Multiple separators
-            ("sample---pkg", "sample_pkg"),
-            ("sample___pkg", "sample_pkg"),
-            ("sample...pkg", "sample_pkg"),
-            # Mixed separators
-            ("sample-._pkg", "sample_pkg"),
-            ("sample_.-pkg", "sample_pkg"),
-            # Complex
-            ("Sample__Pkg-name.foo", "sample_pkg_name_foo"),
-            ("Sample__Pkg.name__foo", "sample_pkg_name_foo"),
-            # Uppercase with separators
-            ("SAMPLE-PKG", "sample_pkg"),
-            ("Sample.Pkg", "sample_pkg"),
-            ("SAMPLE_PKG", "sample_pkg"),
-        ]
-        for name, expected in tests:
-            with self.subTest(name=name):
-                self.assertEqual(Prepared.normalize(name), expected)
+    @fixtures.parameterize(
+        # Simple
+        dict(input='sample', expected='sample'),
+        # Mixed case
+        dict(input='Sample', expected='sample'),
+        dict(input='SAMPLE', expected='sample'),
+        dict(input='SaMpLe', expected='sample'),
+        # Separator conversions
+        dict(input='sample-pkg', expected='sample_pkg'),
+        dict(input='sample.pkg', expected='sample_pkg'),
+        dict(input='sample_pkg', expected='sample_pkg'),
+        # Multiple separators
+        dict(input='sample---pkg', expected='sample_pkg'),
+        dict(input='sample___pkg', expected='sample_pkg'),
+        dict(input='sample...pkg', expected='sample_pkg'),
+        # Mixed separators
+        dict(input='sample-._pkg', expected='sample_pkg'),
+        dict(input='sample_.-pkg', expected='sample_pkg'),
+        # Complex
+        dict(input='Sample__Pkg-name.foo', expected='sample_pkg_name_foo'),
+        dict(input='Sample__Pkg.name__foo', expected='sample_pkg_name_foo'),
+        # Uppercase with separators
+        dict(input='SAMPLE-PKG', expected='sample_pkg'),
+        dict(input='Sample.Pkg', expected='sample_pkg'),
+        dict(input='SAMPLE_PKG', expected='sample_pkg'),
+    )
+    def test_normalize(self, input, expected):
+        self.assertEqual(Prepared.normalize(input), expected)

word-diff-align

git diff --no-index --histogram --color=always --unified=8 --word-diff-align data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
index 3c856a8..5449f04 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
@@ -312,38 +312,36 @@ class OffSysPathTests(fixtures.DistInfoPkgOffPath, unittest.TestCase):
 
 class InvalidateCache(unittest.TestCase):
     def test_invalidate_cache(self):
         # No externally observable behavior, but ensures test coverage...
         importlib.invalidate_caches()
 
 
 class PreparedTests(unittest.TestCase):
-    def test_normalize(self):
-        tests = [
-[-            -]# Simple        # aligned 10->9 edited
-[-            -]([-"-]sample[-"-],[- "-]sample[-"-]),        # aligned 11->10 edited
-[-            -]# Mixed case        # aligned 12->11 edited
-[-            -]([-"-]Sample[-"-],[- "-]sample[-"-]),        # aligned 13->12 edited
-[-            -]([-"-]SAMPLE[-"-],[- "-]sample[-"-]),        # aligned 14->13 edited
-[-            -]([-"-]SaMpLe[-"-],[- "-]sample[-"-]),        # aligned 15->14 edited
-[-            -]# Separator conversions        # aligned 16->15 edited
-[-            -]([-"-]sample-pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 17->16 edited
-[-            -]([-"-]sample.pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 18->17 edited
-[-            -]([-"-]sample_pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 19->18 edited
-[-            -]# Multiple separators        # aligned 20->19 edited
-[-            -]([-"-]sample---pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 21->20 edited
-[-            -]([-"-]sample___pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 22->21 edited
-[-            -]([-"-]sample...pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 23->22 edited
-[-            -]# Mixed separators        # aligned 24->23 edited
-[-            -]([-"-]sample-._pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 25->24 edited
-[-            -]([-"-]sample_.-pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 26->25 edited
-[-            -]# Complex        # aligned 27->26 edited
-[-            -]([-"-]Sample__Pkg-name.foo[-"-],[- "-]sample_pkg_name_foo[-"-]),        # aligned 28->27 edited
-[-            -]([-"-]Sample__Pkg.name__foo[-"-],[- "-]sample_pkg_name_foo[-"-]),        # aligned 29->28 edited
-[-            -]# Uppercase with separators        # aligned 30->29 edited
-[-            -]([-"-]SAMPLE-PKG[-"-],[- "-]sample_pkg[-"-]),        # aligned 31->30 edited
-[-            -]([-"-]Sample.Pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 32->31 edited
-[-            -]([-"-]SAMPLE_PKG[-"-],[- "-]sample_pkg[-"-]),        # aligned 33->32 edited
-        ]
-[-        for name-],[- -]expected[- in tests-]:        # aligned 35->34 edited
-            with self.subTest(name=name):
-[-                -]self.assertEqual(Prepared.normalize([-name-]), expected)        # aligned 37->35 edited
+    @fixtures.parameterize(
+{+        +}# Simple        # aligned 10->9 edited
+{+        dict+}({+input='+}sample{+'+},{+ expected='+}sample{+'+}),        # aligned 11->10 edited
+{+        +}# Mixed case        # aligned 12->11 edited
+{+        dict+}({+input='+}Sample{+'+},{+ expected='+}sample{+'+}),        # aligned 13->12 edited
+{+        dict+}({+input='+}SAMPLE{+'+},{+ expected='+}sample{+'+}),        # aligned 14->13 edited
+{+        dict+}({+input='+}SaMpLe{+'+},{+ expected='+}sample{+'+}),        # aligned 15->14 edited
+{+        +}# Separator conversions        # aligned 16->15 edited
+{+        dict+}({+input='+}sample-pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 17->16 edited
+{+        dict+}({+input='+}sample.pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 18->17 edited
+{+        dict+}({+input='+}sample_pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 19->18 edited
+{+        +}# Multiple separators        # aligned 20->19 edited
+{+        dict+}({+input='+}sample---pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 21->20 edited
+{+        dict+}({+input='+}sample___pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 22->21 edited
+{+        dict+}({+input='+}sample...pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 23->22 edited
+{+        +}# Mixed separators        # aligned 24->23 edited
+{+        dict+}({+input='+}sample-._pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 25->24 edited
+{+        dict+}({+input='+}sample_.-pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 26->25 edited
+{+        +}# Complex        # aligned 27->26 edited
+{+        dict+}({+input='+}Sample__Pkg-name.foo{+'+},{+ expected='+}sample_pkg_name_foo{+'+}),        # aligned 28->27 edited
+{+        dict+}({+input='+}Sample__Pkg.name__foo{+'+},{+ expected='+}sample_pkg_name_foo{+'+}),        # aligned 29->28 edited
+{+        +}# Uppercase with separators        # aligned 30->29 edited
+{+        dict+}({+input='+}SAMPLE-PKG{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 31->30 edited
+{+        dict+}({+input='+}Sample.Pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 32->31 edited
+{+        dict+}({+input='+}SAMPLE_PKG{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 33->32 edited
+    )
+{+    def test_normalize(self+},{+ input, +}expected{+)+}:        # aligned 35->34 edited
+{+        +}self.assertEqual(Prepared.normalize({+input+}), expected)        # aligned 37->35 edited