From 8e7a339c33e24ba8c301c3dad05db4dfeba9508c Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Mon, 24 Apr 2017 14:20:01 -0700 Subject: Add tests and get order right --- lib/mergehash.pm6 | 18 ++++++++++++++++++ mergehash.p6 | 28 ---------------------------- t/01-thing.t | 18 ++++++++++++++++++ 3 files changed, 36 insertions(+), 28 deletions(-) create mode 100644 lib/mergehash.pm6 delete mode 100644 mergehash.p6 create mode 100644 t/01-thing.t diff --git a/lib/mergehash.pm6 b/lib/mergehash.pm6 new file mode 100644 index 0000000..206c881 --- /dev/null +++ b/lib/mergehash.pm6 @@ -0,0 +1,18 @@ +use MONKEY; +augment class Hash { + method merge (%b) { + hashmerge self, %b; + self; + } + sub hashmerge (%merge-into, %merge-source) { + for %merge-source.keys { + if %merge-into{$_}:exists { + hashmerge %merge-into{$_}, %merge-source{$_}; + } + else { + %merge-into{$_} = %merge-source{$_}; + } + } + %merge-into; + } +} diff --git a/mergehash.p6 b/mergehash.p6 deleted file mode 100644 index 84ef007..0000000 --- a/mergehash.p6 +++ /dev/null @@ -1,28 +0,0 @@ -use MONKEY; -my %a; -my %b; -#%a = "orig"; -#%b = "new"; -%a = 1; -%b = 2; -%a = 2; -%b = 1; -%a.merge(%b).say; -say %b; -augment class Hash { - method merge (%b) { - hashmerge self, %b; - self; - } - sub hashmerge (%merge-source, %merge-into) { - for %merge-source.keys { - if %merge-into{$_}:exists { - hashmerge %merge-source{$_}, %merge-into{$_}; - } - else { - %merge-into{$_} = %merge-source{$_}; - } - } - %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 = "orig"; +#%b = "new"; +%a = 1; +%b = 2; +%a = 2; +%b = 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)})}; -- cgit v1.1