@@ -0,0 +1,54 @@
1+{ lib, haskellLib }:
2+
3+let
4+ emptyConfig = {
5+ components = {
6+ benchmarks = { };
7+ exes = { };
8+ foreignlibs = { };
9+ library = "library";
10+ sublibs = { };
11+ tests = { };
12+ all = "all";
13+ };
14+ package.identifier.name = "empty";
15+ };
16+
17+ componentsConfig = {
18+ components = {
19+ benchmarks = { bbb = "bbb"; };
20+ exes = { eee = "eee"; };
21+ foreignlibs = { fff = "fff"; };
22+ library = "library";
23+ sublibs = { };
24+ tests = { ttt = "ttt"; };
25+ all = "all";
26+ };
27+ package.identifier.name = "nnn";
28+ };
29+
30+in
31+lib.runTests {
32+ # identity function for applyComponents
33+ test-applyComponents-id = {
34+ expr = haskellLib.applyComponents (componentId: component: component) emptyConfig;
35+ expected = emptyConfig.components;
36+ };
37+
38+ # map a component to its component name and check these are correct
39+ test-applyComponents-library = {
40+ expr = haskellLib.applyComponents (componentId: component: componentId.cname) emptyConfig;
41+ expected = emptyConfig.components // { library = "empty"; all = "empty"; };
42+ };
43+
44+ test-applyComponents-components = {
45+ expr = haskellLib.applyComponents (componentId: component: component) componentsConfig;
46+ expected = componentsConfig.components;
47+ };
48+
49+ # testing that the tests work
50+ testId = {
51+ expr = lib.id 1;
52+ expected = 1;
53+ };
54+}