diff options
Diffstat (limited to 'lib/tests/misc.nix')
| -rw-r--r-- | lib/tests/misc.nix | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix index b072f058d727..aa587f52c4ac 100644 --- a/lib/tests/misc.nix +++ b/lib/tests/misc.nix @@ -631,6 +631,101 @@ runTests { ]; }; + testSplitStringBySimpleDelimiter = { + expr = strings.splitStringBy ( + prev: curr: + builtins.elem curr [ + "." + "-" + ] + ) false "foo.bar-baz"; + expected = [ + "foo" + "bar" + "baz" + ]; + }; + + testSplitStringByLeadingDelimiter = { + expr = strings.splitStringBy (prev: curr: builtins.elem curr [ "." ]) false ".foo.bar.baz"; + expected = [ + "" + "foo" + "bar" + "baz" + ]; + }; + + testSplitStringByTrailingDelimiter = { + expr = strings.splitStringBy (prev: curr: builtins.elem curr [ "." ]) false "foo.bar.baz."; + expected = [ + "foo" + "bar" + "baz" + "" + ]; + }; + + testSplitStringByMultipleConsecutiveDelimiters = { + expr = strings.splitStringBy (prev: curr: builtins.elem curr [ "." ]) false "foo...bar"; + expected = [ + "foo" + "" + "" + "bar" + ]; + }; + + testSplitStringByKeepingSplitChar = { + expr = strings.splitStringBy (prev: curr: builtins.elem curr [ "." ]) true "foo.bar.baz"; + expected = [ + "foo" + ".bar" + ".baz" + ]; + }; + + testSplitStringByCaseTransition = { + expr = strings.splitStringBy ( + prev: curr: builtins.match "[a-z]" prev != null && builtins.match "[A-Z]" curr != null + ) true "fooBarBaz"; + expected = [ + "foo" + "Bar" + "Baz" + ]; + }; + + testSplitStringByEmptyString = { + expr = strings.splitStringBy (prev: curr: builtins.elem curr [ "." ]) false ""; + expected = [ "" ]; + }; + + testSplitStringByComplexPredicate = { + expr = strings.splitStringBy ( + prev: curr: + prev != "" + && curr != "" + && builtins.match "[0-9]" prev != null + && builtins.match "[a-z]" curr != null + ) true "123abc456def"; + expected = [ + "123" + "abc456" + "def" + ]; + }; + + testSplitStringByUpperCaseStart = { + expr = strings.splitStringBy (prev: curr: builtins.match "[A-Z]" curr != null) true "FooBarBaz"; + expected = [ + "" + "Foo" + "Bar" + "Baz" + ]; + }; + testEscapeShellArg = { expr = strings.escapeShellArg "esc'ape\nme"; expected = "'esc'\\''ape\nme'"; |
