aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamantha McVey <samantham@posteo.net>2017-04-24 14:20:01 -0700
committerSamantha McVey <samantham@posteo.net>2017-04-24 14:20:01 -0700
commit8e7a339c33e24ba8c301c3dad05db4dfeba9508c (patch)
treed78c102ea478c619294c7b6417b8d9733ac99a87
parentf516e377ac7f48fa2e836a2f5382cbd7459ea6de (diff)
Add tests and get order right
-rw-r--r--lib/mergehash.pm6 (renamed from mergehash.p6)16
-rw-r--r--t/01-thing.t18
2 files changed, 21 insertions, 13 deletions
diff --git a/mergehash.p6 b/lib/mergehash.pm6
index 84ef007..206c881 100644
--- a/mergehash.p6
+++ b/lib/mergehash.pm6
@@ -1,23 +1,13 @@
use MONKEY;
-my %a;
-my %b;
-#%a<Z> = "orig";
-#%b<Z> = "new";
-%a<b> = 1;
-%b<a> = 2;
-%a<y><z> = 2;
-%b<y><a> = 1;
-%a.merge(%b).say;
-say %b;
augment class Hash {
method merge (%b) {
hashmerge self, %b;
self;
}
- sub hashmerge (%merge-source, %merge-into) {
+ sub hashmerge (%merge-into, %merge-source) {
for %merge-source.keys {
if %merge-into{$_}:exists {
- hashmerge %merge-source{$_}, %merge-into{$_};
+ hashmerge %merge-into{$_}, %merge-source{$_};
}
else {
%merge-into{$_} = %merge-source{$_};
@@ -25,4 +15,4 @@ augment class Hash {
}
%merge-into;
}
-} \ No newline at end of file
+}
diff --git a/t/01-thing.t b/t/01-thing.t
new file mode 100644
index 0000000..6960a7a
--- /dev/null
+++ b/t/01-thing.t
@@ -0,0 +1,18 @@
+#!/usr/bin/env perl6
+use v6;
+use lib 'lib';
+use mergehash;
+use Test;
+my %a;
+my %b;
+#%a<Z> = "orig";
+#%b<Z> = "new";
+%a<b> = 1;
+%b<a> = 2;
+%a<y><z> = 2;
+%b<y><a> = 1;
+my %b-orig = %b;
+my %a-orig = %a;
+%a.merge(%b);
+is-deeply %b, %b-orig;
+is-deeply %a, {:a(2), :b(1), :y(${:a(1), :z(2)})};