at master 1.6 kB view raw
1{ config, lib, ... }: 2 3{ 4 options = { 5 examples = lib.mkOption { type = lib.types.attrs; }; 6 assertion = lib.mkOption { type = lib.types.bool; }; 7 }; 8 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 [ 28 (mkInt32 1) 29 [ "foo" ] 30 ]; 31 maybe1 = mkNothing type.string; 32 maybe2 = mkJust (mkUint32 4); 33 variant = mkVariant "foo"; 34 dictionaryEntry = mkDictionaryEntry (mkInt32 1) [ "foo" ]; 35 }; 36 37 assertion = 38 let 39 mkLine = n: v: "${n} = ${toString (lib.gvariant.mkValue v)}"; 40 result = lib.concatStringsSep "\n" (lib.mapAttrsToList mkLine config.examples); 41 in 42 (result + "\n") == '' 43 array1 = @as ['one'] 44 array2 = @ai [1] 45 array3 = @au [@u 2] 46 bool = true 47 dictionaryEntry = @{ias} {1,@as ['foo']} 48 emptyArray = @au [] 49 escapedString = '\'\\\n' 50 float = 3.140000 51 int16 = @n -42 52 int32 = -42 53 int64 = @x -42 54 maybe1 = @ms nothing 55 maybe2 = just @u 4 56 string = 'foo' 57 tuple = @(ias) (1,@as ['foo']) 58 uint16 = @q 42 59 uint32 = @u 42 60 uint64 = @t 42 61 variant = <'foo'> 62 ''; 63 }; 64}