diff --git a/tests/test_helper.tcl b/tests/test_helper.tcl
index 41c867803..7def9a7f6 100644
--- a/tests/test_helper.tcl
+++ b/tests/test_helper.tcl
@@ -26,6 +26,7 @@ set ::all_tests {
     unit/type/set
     unit/type/zset
     unit/type/hash
+    unit/type/stream
     unit/sort
     unit/expire
     unit/other
diff --git a/tests/unit/type/stream.tcl b/tests/unit/type/stream.tcl
new file mode 100644
index 000000000..a668ddf42
--- /dev/null
+++ b/tests/unit/type/stream.tcl
@@ -0,0 +1,42 @@
+# return value is like strcmp() and similar.
+proc streamCompareID {a b} {
+    if {$a == $b} {return 0}
+    lassign [split $a .] a_ms a_seq
+    lassign [split $b .] b_ms b_seq
+    if {$a_ms > $b_ms} {return 1}
+    if {$a_ms < $b_ms} {return -1}
+    # Same ms case, compare seq.
+    if {$a_seq > $b_seq} {return 1}
+    if {$a_seq < $b_seq} {return -1}
+}
+
+start_server {
+    tags {"stream"}
+} {
+    test {XADD can add entries into a stream that XRANGE can fetch} {
+        r XADD mystream * item 1 value a
+        r XADD mystream * item 2 value b
+        assert_equal 2 [r XLEN mystream]
+        set items [r XRANGE mystream - +]
+        assert_equal [lindex $items 0 1] {item 1 value a}
+        assert_equal [lindex $items 1 1] {item 2 value b}
+    }
+
+    test {XADD IDs are incremental} {
+        set id1 [r XADD mystream * item 1 value a]
+        set id2 [r XADD mystream * item 2 value b]
+        set id3 [r XADD mystream * item 3 value c]
+        assert {[streamCompareID $id1 $id2] == -1}
+        assert {[streamCompareID $id2 $id3] == -1}
+    }
+
+    test {XADD IDs are incremental when ms is the same as well} {
+        r multi
+        r XADD mystream * item 1 value a
+        r XADD mystream * item 2 value b
+        r XADD mystream * item 3 value c
+        lassign [r exec] id1 id2 id3
+        assert {[streamCompareID $id1 $id2] == -1}
+        assert {[streamCompareID $id2 $id3] == -1}
+    }
+}