From: Lennart Poettering Date: Wed, 14 Apr 2021 20:43:15 +0000 (+0200) Subject: test-engine: ensure atom bits are properly packed X-Git-Tag: v249-rc1~155^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ba471facb15feccc0acb2b2d818154b1e69e72e;p=thirdparty%2Fsystemd.git test-engine: ensure atom bits are properly packed Let's make sure all atoms are actually used, and no holes are left. --- diff --git a/src/test/test-engine.c b/src/test/test-engine.c index 8e196907eea..1039709b892 100644 --- a/src/test/test-engine.c +++ b/src/test/test-engine.c @@ -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[]) {