function makeModule(caption, scenarios) {

		QUnit.module(`Theme-Dependent CSS Classes for "${Theming.getTheme()}" (${caption})`);

		scenarios.forEach(([sClassName, sCSSProperty, sThemeParameter]) => {
			QUnit.test(`Should set the theme base class "${sClassName}" correctly"`, async function(assert) {
				const expectedValue = await getThemeParameter(sThemeParameter);
				const normalizedExpectedValue = normalizeValue(canonicalize(expectedValue, sCSSProperty));

				// Arrange
				const domElement = document.createElement("div");
				document.getElementById("qunit-fixture").appendChild(domElement);

				// Act
				domElement.className = sClassName;

				// Assert
				const actualValue = window.getComputedStyle(domElement)[sCSSProperty];
				const normalizedActualValue = normalizeValue(actualValue);
				assert.ok(actualValue,
					`The class "${sClassName}" should result in a non-empty value for CSS property "${sCSSProperty}"`);
				assert.strictEqual(normalizedActualValue, normalizedExpectedValue,
					`The class "${sClassName}" should set the CSS property "${sCSSProperty}" to "@${sThemeParameter}"`
					+ ` (= ${expectedValue}) - normalized results: ${normalizedActualValue} vs ${normalizedExpectedValue}`);

				// cleanup
				domElement.remove();
			});
		});
	}
Creates a QUnit.module with one QUnit.test for each given scenario.
Each test applies the given CSS class and compares the CSS property value with the value of the theme parameter.
@param {string} caption Common topic of the scenarios
@param {Array<Array<string>>} scenarios Scenarios to test
@param {string} scenarios[].0 CSS class to apply
@param {string} scenarios[].1 Style property to check
@param {string} scenarios[].2 Theme parameter defining the expected value