Merge pull request #298967 from vbgl/ocaml-5.2.0
[NixPkgs.git] / lib / tests / modules / gvariant.nix
blobba452c0287acc455b4bcbd7498ae09af6169b32a
1 { config, lib, ... }:
4   options = {
5     examples = lib.mkOption { type = lib.types.attrs; };
6     assertion = lib.mkOption { type = lib.types.bool; };
7   };
9   config = {
10     examples = with lib.gvariant; {
11       bool = true;
12       float = 3.14;
13       int32 = mkInt32 (- 42);
14       uint32 = mkUint32 42;
15       int16 = mkInt16 (-42);
16       uint16 = mkUint16 42;
17       int64 = mkInt64 (-42);
18       uint64 = mkUint64 42;
19       array1 = [ "one" ];
20       array2 = mkArray [ (mkInt32 1) ];
21       array3 = mkArray [ (mkUint32 2) ];
22       emptyArray = mkEmptyArray type.uint32;
23       string = "foo";
24       escapedString = ''
25         '\
26       '';
27       tuple = mkTuple [ (mkInt32 1) [ "foo" ] ];
28       maybe1 = mkNothing type.string;
29       maybe2 = mkJust (mkUint32 4);
30       variant = mkVariant "foo";
31       dictionaryEntry = mkDictionaryEntry (mkInt32 1) [ "foo" ];
32     };
34     assertion =
35       let
36         mkLine = n: v: "${n} = ${toString (lib.gvariant.mkValue v)}";
37         result = lib.concatStringsSep "\n" (lib.mapAttrsToList mkLine config.examples);
38       in
39       (result + "\n") == ''
40         array1 = @as ['one']
41         array2 = @ai [1]
42         array3 = @au [@u 2]
43         bool = true
44         dictionaryEntry = @{ias} {1,@as ['foo']}
45         emptyArray = @au []
46         escapedString = '\'\\\n'
47         float = 3.140000
48         int16 = @n -42
49         int32 = -42
50         int64 = @x -42
51         maybe1 = @ms nothing
52         maybe2 = just @u 4
53         string = 'foo'
54         tuple = @(ias) (1,@as ['foo'])
55         uint16 = @q 42
56         uint32 = @u 42
57         uint64 = @t 42
58         variant = <'foo'>
59       '';
60   };