First cut at new layout
diff --git a/src/ProtocolBuffers.Test/MessageStreamWriterTest.cs b/src/ProtocolBuffers.Test/MessageStreamWriterTest.cs
new file mode 100644
index 0000000..9cbe2b3
--- /dev/null
+++ b/src/ProtocolBuffers.Test/MessageStreamWriterTest.cs
@@ -0,0 +1,36 @@
+using System.IO;
+using NUnit.Framework;
+using NestedMessage = Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage;
+
+namespace Google.ProtocolBuffers {
+  [TestFixture]
+  public class MessageStreamWriterTest {
+
+    internal static readonly byte[] ThreeMessageData = new byte[] {
+        (1 << 3) | 2, 2, // Field 1, 2 bytes long (first message)
+        (1 << 3) | 0, 5, // Field 1, value 5
+        (1 << 3) | 2, 3, // Field 1, 3 bytes long (second message)
+        (1 << 3) | 0, (1500 & 0x7f) | 0x80, 1500 >> 7, // Field 1, value 1500
+        (1 << 3) | 2, 0, // Field 1, no data (third message)
+    };
+
+    [Test]
+    public void ThreeMessages() {
+      NestedMessage message1 = new NestedMessage.Builder { Bb = 5 }.Build();
+      NestedMessage message2 = new NestedMessage.Builder { Bb = 1500 }.Build();
+      NestedMessage message3 = new NestedMessage.Builder().Build();
+
+      byte[] data;
+      using (MemoryStream stream = new MemoryStream()) {
+        MessageStreamWriter<NestedMessage> writer = new MessageStreamWriter<NestedMessage>(stream);
+        writer.Write(message1);
+        writer.Write(message2);
+        writer.Write(message3);
+        writer.Flush();
+        data = stream.ToArray();
+      }
+
+      TestUtil.AssertEqualBytes(ThreeMessageData, data);
+    }
+  }
+}