Added a silly little unit test for mostly untested (but working) MergedStream class... to boost code coverage.

diff --git a/build-coverage.xml b/build-coverage.xml
index 479d49f..2d8305c 100644
--- a/build-coverage.xml
+++ b/build-coverage.xml
@@ -34,6 +34,7 @@
                 <fileset dir="${dir.test.classes}">
                     <!-- Need to exclude inner classes... -->
                     <exclude name="**/*$*.class"/>
+                    <!-- and one particularly slow test? -->
                     <exclude name="**/TestStringGeneration.class"/>
                     <include name="**/Test*.class"/>
                 </fileset>
@@ -54,12 +55,19 @@
                   -->
                 <pathelement path="${dir.build.classes.core}" />
                 <pathelement path="${dir.build.classes.mapper}" />
+                <pathelement path="${dir.build.classes.xc}" />
                 <path refid="test-libs"/>
             </classpath>     
         </junit>
         <!-- and then reporting -->
         <cobertura-report format="html" destdir="${cobertura.coverage.dir}" >
-          <fileset dir="${dir.src.java}">
+          <fileset dir="${dir.src.java.core}">
+            <include name="org/codehaus/**/*.java" />
+          </fileset>
+          <fileset dir="${dir.src.java.mapper}">
+            <include name="org/codehaus/**/*.java" />
+          </fileset>
+          <fileset dir="${dir.src.java.xc}">
             <include name="org/codehaus/**/*.java" />
           </fileset>
         </cobertura-report>
diff --git a/src/java/org/codehaus/jackson/io/MergedStream.java b/src/java/org/codehaus/jackson/io/MergedStream.java
index e0c8619..7ec3694 100644
--- a/src/java/org/codehaus/jackson/io/MergedStream.java
+++ b/src/java/org/codehaus/jackson/io/MergedStream.java
@@ -2,7 +2,6 @@
 
 import java.io.*;
 
-
 /**
  * Simple {@link InputStream} implementation that is used to "unwind" some
  * data previously read from an input stream; so that as long as some of
@@ -118,7 +117,7 @@
 
             if (amount > n) { // all in pushed back segment?
                 _ptr += (int) n;
-                return amount;
+                return n;
             }
             freeMergedBuffer();
             count += amount;
diff --git a/src/test/org/codehaus/jackson/io/TestMergedStream.java b/src/test/org/codehaus/jackson/io/TestMergedStream.java
new file mode 100644
index 0000000..466e490
--- /dev/null
+++ b/src/test/org/codehaus/jackson/io/TestMergedStream.java
@@ -0,0 +1,50 @@
+package org.codehaus.jackson.io;
+
+import java.io.*;
+
+import org.codehaus.jackson.JsonEncoding;
+import org.codehaus.jackson.util.BufferRecycler;
+
+public class TestMergedStream
+    extends main.BaseTest
+{
+    public void testSimple() throws Exception
+    {
+        BufferRecycler rec = new BufferRecycler();
+        IOContext ctxt = new IOContext(rec, null, false);
+        // bit complicated; must use recyclable buffer...
+        byte[] first = ctxt.allocReadIOBuffer();
+        System.arraycopy("ABCDE".getBytes("UTF-8"), 0, first, 99, 5);
+        byte[] second = "FGHIJ".getBytes("UTF-8");
+
+        assertNull(ctxt.getSourceReference());
+        assertFalse(ctxt.isResourceManaged());
+        ctxt.setEncoding(JsonEncoding.UTF8);
+        MergedStream ms = new MergedStream(ctxt, new ByteArrayInputStream(second),
+                                           first, 99, 99+5);
+        // Ok, first, should have 5 bytes from first buffer:
+        assertEquals(5, ms.available());
+        // not supported when there's buffered stuff...
+        assertFalse(ms.markSupported());
+        // so this won't work, but shouldn't throw exception
+        ms.mark(1);
+        assertEquals((byte) 'A', ms.read());
+        assertEquals(3, ms.skip(3));
+        byte[] buffer = new byte[5];
+        /* Ok, now, code is allowed to return anywhere between 1 and 3,
+         * but we now it will return 1...
+         */
+        assertEquals(1, ms.read(buffer, 1, 3));
+        assertEquals((byte) 'E', buffer[1]);
+        // So let's read bit more
+        assertEquals(3, ms.read(buffer, 0, 3));
+        assertEquals((byte) 'F', buffer[0]);
+        assertEquals((byte) 'G', buffer[1]);
+        assertEquals((byte) 'H', buffer[2]);
+        assertEquals(2, ms.available());
+        // And then skip the reset
+        assertEquals(2, ms.skip(200));
+
+        ms.close();
+    }
+}