summary refs log tree commit diff
path: root/lib/tests/modules
diff options
context:
space:
mode:
authorlinsui <linsui555@gmail.com>2023-06-14 16:14:23 +0800
committerlinsui <linsui@inbox.lv>2023-08-15 19:20:39 +0800
commitda614d98e9540002bb1a1a9165177c3a6719f07f (patch)
treecfa9f6a302a58eab7f313f1ac4169a7d07430e43 /lib/tests/modules
parentf1aa0b91207fc009eccde2167f7be066002c776f (diff)
downloadnixpkgs-da614d98e9540002bb1a1a9165177c3a6719f07f.tar
nixpkgs-da614d98e9540002bb1a1a9165177c3a6719f07f.tar.gz
nixpkgs-da614d98e9540002bb1a1a9165177c3a6719f07f.tar.bz2
nixpkgs-da614d98e9540002bb1a1a9165177c3a6719f07f.tar.lz
nixpkgs-da614d98e9540002bb1a1a9165177c3a6719f07f.tar.xz
nixpkgs-da614d98e9540002bb1a1a9165177c3a6719f07f.tar.zst
nixpkgs-da614d98e9540002bb1a1a9165177c3a6719f07f.zip
lib/gvariant: init
Diffstat (limited to 'lib/tests/modules')
-rw-r--r--lib/tests/modules/gvariant.nix93
1 files changed, 93 insertions, 0 deletions
diff --git a/lib/tests/modules/gvariant.nix b/lib/tests/modules/gvariant.nix
new file mode 100644
index 00000000000..a792ebf85b7
--- /dev/null
+++ b/lib/tests/modules/gvariant.nix
@@ -0,0 +1,93 @@
+{ config, lib, ... }:
+
+let inherit (lib) concatStringsSep mapAttrsToList mkMerge mkOption types gvariant;
+in {
+  options.examples = mkOption { type = types.attrsOf gvariant; };
+
+  config = {
+    examples = with gvariant;
+      mkMerge [
+        { bool = true; }
+        { bool = true; }
+
+        { float = 3.14; }
+
+        { int32 = mkInt32 (- 42); }
+        { int32 = mkInt32 (- 42); }
+
+        { uint32 = mkUint32 42; }
+        { uint32 = mkUint32 42; }
+
+        { int16 = mkInt16 (-42); }
+        { int16 = mkInt16 (-42); }
+
+        { uint16 = mkUint16 42; }
+        { uint16 = mkUint16 42; }
+
+        { int64 = mkInt64 (-42); }
+        { int64 = mkInt64 (-42); }
+
+        { uint64 = mkUint64 42; }
+        { uint64 = mkUint64 42; }
+
+        { array1 = [ "one" ]; }
+        { array1 = mkArray [ "two" ]; }
+        { array2 = mkArray [ (mkInt32 1) ]; }
+        { array2 = mkArray [ (nkUint32 2) ]; }
+
+        { emptyArray1 = [ ]; }
+        { emptyArray2 = mkEmptyArray type.uint32; }
+
+        { string = "foo"; }
+        { string = "foo"; }
+        {
+          escapedString = ''
+            '\
+          '';
+        }
+
+        { tuple = mkTuple [ (mkInt32 1) [ "foo" ] ]; }
+
+        { maybe1 = mkNothing type.string; }
+        { maybe2 = mkJust (mkUint32 4); }
+
+        { variant1 = mkVariant "foo"; }
+        { variant2 = mkVariant 42; }
+
+        { dictionaryEntry = mkDictionaryEntry (mkInt32 1) [ "foo" ]; }
+      ];
+
+    assertions = [
+      {
+        assertion = (
+          let
+            mkLine = n: v: "${n} = ${toString (gvariant.mkValue v)}";
+            result = concatStringsSep "\n" (mapAttrsToList mkLine config.examples);
+          in
+          result + "\n"
+        ) == ''
+          array1 = @as ['one','two']
+          array2 = @au [1,2]
+          bool = true
+          dictionaryEntry = @{ias} {1,@as ['foo']}
+          emptyArray1 = @as []
+          emptyArray2 = @au []
+          escapedString = '\'\\\n'
+          float = 3.140000
+          int = -42
+          int16 = @n -42
+          int64 = @x -42
+          maybe1 = @ms nothing
+          maybe2 = just @u 4
+          string = 'foo'
+          tuple = @(ias) (1,@as ['foo'])
+          uint16 = @q 42
+          uint32 = @u 42
+          uint64 = @t 42
+          variant1 = @v <'foo'>
+          variant2 = @v <42>
+        '';
+      }
+    ];
+  };
+}