let lib = import ./../default.nix; in { "validate" = { "entry" = { "invalid value" = let expected = false; actual = lib.dag.validate.entry { }; in actual == expected; "a manually created value" = let expected = true; actual = lib.dag.validate.entry { value = null; before = [ ]; after = [ ]; }; in actual == expected; "entry.between" = let expected = true; actual = lib.dag.validate.entry (lib.dag.entry.between [ ] [ ] null); in actual == expected; "entry.anywhere" = let expected = true; actual = lib.dag.validate.entry (lib.dag.entry.anywhere null); in actual == expected; "entry.before" = let expected = true; actual = lib.dag.validate.entry (lib.dag.entry.before [ ] null); in actual == expected; "entry.after" = let expected = true; actual = lib.dag.validate.entry (lib.dag.entry.after [ ] null); in actual == expected; }; "graph" = { "invalid value" = let expected = false; actual = lib.dag.validate.graph { x = { }; }; in actual == expected; "a manually created value" = let expected = true; actual = lib.dag.validate.graph { x = { value = null; before = [ ]; after = [ ]; }; }; in actual == expected; "entries.between" = let expected = true; graph = lib.dag.entries.between "example" [ ] [ ] [ null null ]; actual = lib.dag.validate.graph graph; in actual == expected; "entries.anywhere" = let expected = true; graph = lib.dag.entries.anywhere "example" [ null null ]; actual = lib.dag.validate.graph graph; in actual == expected; "entries.before" = let expected = true; graph = lib.dag.entries.before "example" [ ] [ null null ]; actual = lib.dag.validate.graph graph; in actual == expected; "entries.after" = let expected = true; graph = lib.dag.entries.after "example" [ ] [ null null ]; actual = lib.dag.validate.graph graph; in actual == expected; }; }; "sort" = { "topological" = { "handles an empty graph" = let expected = [ ]; actual = lib.dag.sort.topological { }; in actual.result == expected; "sorts a graph" = let expected = [ { name = "a"; value = "a"; } { name = "b"; value = "b"; } { name = "c"; value = "c"; } { name = "d"; value = "d"; } ]; actual = lib.dag.sort.topological { a = lib.dag.entry.anywhere "a"; b = lib.dag.entry.between [ "a" ] [ "c" ] "b"; c = lib.dag.entry.before [ "c" ] "c"; d = lib.dag.entry.after [ "c" ] "d"; }; in actual.result == expected; }; }; }