From a1c6018f3084d39e76a79d6b093c815f638d8ea6 Mon Sep 17 00:00:00 2001
From: Markus Schirp <mbj@schirp-dso.com>
Date: Thu, 27 Nov 2014 22:01:53 +0000
Subject: [PATCH] Add mutation from `send` to `__send__`

* `__send__` is the canonical form.
---
 lib/mutant/mutator/node/send.rb |  3 ++-
 meta/send.rb                    | 14 ++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/lib/mutant/mutator/node/send.rb b/lib/mutant/mutator/node/send.rb
index f2c076dd..615dbcea 100644
--- a/lib/mutant/mutator/node/send.rb
+++ b/lib/mutant/mutator/node/send.rb
@@ -17,7 +17,8 @@ module Mutant
           reverse_each:  [:each],
           reverse_merge: [:merge],
           map:           [:each],
-          send:          [:public_send],
+          send:          [:public_send, :__send__],
+          __send__:      [:public_send],
           gsub:          [:sub],
           eql?:          [:equal?],
           to_s:          [:to_str],
diff --git a/meta/send.rb b/meta/send.rb
index 9f694cec..ddb452a6 100644
--- a/meta/send.rb
+++ b/meta/send.rb
@@ -189,12 +189,26 @@ Mutant::Meta::Example.add do
   mutation 'self.gsub(a, b)'
 end
 
+Mutant::Meta::Example.add do
+  source 'foo.__send__(bar)'
+
+  singleton_mutations
+  mutation 'foo.__send__'
+  mutation 'foo.public_send(bar)'
+  mutation 'bar'
+  mutation 'foo'
+  mutation 'self.__send__(bar)'
+  mutation 'foo.__send__(nil)'
+  mutation 'foo.__send__(self)'
+end
+
 Mutant::Meta::Example.add do
   source 'foo.send(bar)'
 
   singleton_mutations
   mutation 'foo.send'
   mutation 'foo.public_send(bar)'
+  mutation 'foo.__send__(bar)'
   mutation 'bar'
   mutation 'foo'
   mutation 'self.send(bar)'