]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test-engine: ensure atom bits are properly packed
authorLennart Poettering <lennart@poettering.net>
Wed, 14 Apr 2021 20:43:15 +0000 (22:43 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 25 May 2021 14:06:27 +0000 (16:06 +0200)
Let's make sure all atoms are actually used, and no holes are left.

src/test/test-engine.c

index 8e196907eea5bcd85aeb95994cf922501e55b0f2..1039709b892ea8570ce284f823d345c895d716b3 100644 (file)
@@ -50,6 +50,23 @@ static void verify_dependency_atoms(void) {
                 multi_use_atoms |= combined & a;
                 combined |= a;
         }
+
+        /* Make sure all atoms are used, i.e. there's at least one dependency type that references it. */
+        assert_se(combined == _UNIT_DEPENDENCY_ATOM_MAX);
+
+        for (UnitDependencyAtom a = 1; a <= _UNIT_DEPENDENCY_ATOM_MAX; a <<= 1) {
+
+                if (multi_use_atoms & a) {
+                        /* If an atom is used by multiple dep types, then mapping the atom to a dependency is
+                         * not unique and *must* fail */
+                        assert_se(unit_dependency_from_unique_atom(a) == _UNIT_DEPENDENCY_INVALID);
+                        continue;
+                }
+
+                /* If only a single dep type uses specific atom, let's guarantee our mapping table is
+                complete, and thus the atom can be mapped to the single dep type that is used. */
+                assert_se(unit_dependency_from_unique_atom(a) >= 0);
+        }
 }
 
 int main(int argc, char *argv[]) {