From 389ec305b3e984422b91eca112e4ce37728fba20 Mon Sep 17 00:00:00 2001
From: antirez <antirez@gmail.com>
Date: Fri, 3 Oct 2014 12:28:56 +0100
Subject: [PATCH] Test: check that INCR object sharing works as expected.

---
 tests/unit/basic.tcl | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/tests/unit/basic.tcl b/tests/unit/basic.tcl
index 11037608..90a5b4cc 100644
--- a/tests/unit/basic.tcl
+++ b/tests/unit/basic.tcl
@@ -150,6 +150,29 @@ start_server {tags {"basic"}} {
         r decrby novar 17179869185
     } {-1}
 
+    test {INCR uses shared objects in the 0-9999 range} {
+        r set foo -1
+        r incr foo
+        assert {[r object refcount foo] > 1}
+        r set foo 9998
+        r incr foo
+        assert {[r object refcount foo] > 1}
+        r incr foo
+        assert {[r object refcount foo] == 1}
+    }
+
+    test {INCR can modify objects in-place} {
+        r set foo 20000
+        r incr foo
+        assert {[r object refcount foo] == 1}
+        set old [lindex [split [r debug object foo]] 1]
+        r incr foo
+        set new [lindex [split [r debug object foo]] 1]
+        assert {[string range $old 0 2] eq "at:"}
+        assert {[string range $new 0 2] eq "at:"}
+        assert {$old eq $new}
+    }
+
     test {INCRBYFLOAT against non existing key} {
         r del novar
         list    [roundFloat [r incrbyfloat novar 1]] \