From b27da2a93cc42afcf16ab539dc7aa1a84d12ee8c Mon Sep 17 00:00:00 2001 From: Patrick Spek
= (1,2,3,4);
+ %y = (5,4,6,7);
+
+ %z.merge(%y);
+
+ is %z, {y => {p => [1, 2, 3, 4, 5, 4, 6, 7]}}, "appends arrays";
+}
+
+{
+ my (%z, %y);
+
+ %z = (1,2,3,4);
+ %y = (5,4,6,7);
+
+ %z.merge(%y, :!positional-append);
+
+ is-deeply %z, ${:y(${:p($(5, 4, 6, 7))})}, ":!positional-append makes lists overwrite";
+}
+
+done-testing;
+
+# vim: ft=raku ts=4 sw=4 et
diff --git a/t/01-thing.t b/t/01-thing.t
deleted file mode 100644
index 44d7495..0000000
--- a/t/01-thing.t
+++ /dev/null
@@ -1,54 +0,0 @@
-#! /usr/bin/env perl6
-
-use v6;
-use lib 'lib';
-use Test;
-
-use Hash::Merge::Augment;
-
-my %a;
-my %b;
-
-%a = 1;
-%b = 2;
-%a = (1,2,3,4);
- %y = (5,4,6,7);
-
- %z.merge(%y);
-
- is %z, {y => {p => [1, 2, 3, 4, 5, 4, 6, 7]}}, "appends arrays";
-}
-
-{
- my (%z, %y);
-
- %z = (1,2,3,4);
- %y = (5,4,6,7);
-
- %z.merge(%y, :!positional-append);
-
- is-deeply %z, ${:y(${:p($(5, 4, 6, 7))})}, ":!positional-append makes lists overwrite";
-}
-
-done-testing;
diff --git a/t/02-empty-source.rakutest b/t/02-empty-source.rakutest
new file mode 100644
index 0000000..2e6b609
--- /dev/null
+++ b/t/02-empty-source.rakutest
@@ -0,0 +1,24 @@
+#! /usr/bin/env raku
+
+use v6.d;
+
+use Test;
+
+use Hash::Merge::Augment;
+
+plan 1;
+
+my %hash =
+ a => "a",
+ b => {
+ c => "c"
+ },
+;
+
+my %empty;
+
+%empty.merge(%hash);
+
+is-deeply %empty, %hash, "Merge into empty hash";
+
+# vim: ft=raku ts=4 sw=4 et
diff --git a/t/02-empty-source.t b/t/02-empty-source.t
deleted file mode 100644
index 55403e1..0000000
--- a/t/02-empty-source.t
+++ /dev/null
@@ -1,22 +0,0 @@
-#! /usr/bin/env perl6
-
-use v6.d;
-
-use Test;
-
-use Hash::Merge::Augment;
-
-plan 1;
-
-my %hash =
- a => "a",
- b => {
- c => "c"
- },
-;
-
-my %empty;
-
-%empty.merge(%hash);
-
-is-deeply %empty, %hash, "Merge into empty hash";
diff --git a/t/03-unit.rakutest b/t/03-unit.rakutest
new file mode 100644
index 0000000..75d763f
--- /dev/null
+++ b/t/03-unit.rakutest
@@ -0,0 +1,59 @@
+#! /usr/bin/env raku
+
+use v6.c;
+
+use Hash::Merge;
+use Test;
+
+plan 2;
+
+subtest "merge-hash" => {
+ plan 2;
+
+ my %original =
+ a => "a",
+ b => {
+ c => "c"
+ }
+ ;
+
+ my %result =
+ a => "a",
+ b => {
+ c => "c",
+ d => "d",
+ },
+ ;
+
+ is-deeply merge-hash(%original, %(b => %(d => "d"))), %result, "Hash merges correctly";
+ is-deeply merge-hash(%original, %()), %original, "Empty Hash doesn't affect original";
+}
+
+subtest "merge-hashes" => {
+ plan 4;
+
+ my %original =
+ a => "a",
+ b => {
+ c => "c"
+ }
+ ;
+
+ my %result =
+ a => "a",
+ b => {
+ c => "c",
+ d => "d",
+ },
+ ;
+
+ is-deeply merge-hashes(%original), %original, "Single argument returns original";
+ is-deeply merge-hashes(%original, %(b => %(d => "d"))), %result, "Hash merges correctly";
+ is-deeply merge-hashes(%original, %()), %original, "Empty Hash doesn't affect original";
+
+ %result