summaryrefslogtreecommitdiff
path: root/lib/tests/misc.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tests/misc.nix')
-rw-r--r--lib/tests/misc.nix95
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'";