public void TestSingleCombining () { var stream = new CombiningStream (" bar "); stream.Add (GetStream ("foo")); stream.Add (GetStream ("baz")); Assert.AreEqual (11, stream.Length); var buf = new byte[100]; var read = stream.Read (buf, 0, buf.Length); Assert.AreEqual (stream.Length, read); var data = Encoding.UTF8.GetString (buf, 0, read); Assert.AreEqual ("foo bar baz", data); }
public void TestMultipleCombining () { var subStream = new CombiningStream (", "); subStream.Add (GetStream ("{\"id\": 1}")); subStream.Add (GetStream ("{\"id\": 2}")); subStream.Add (GetStream ("{\"id\": 3}")); subStream.Add (GetStream ("{\"id\": 4}")); var stream = new CombiningStream (); stream.Add (GetStream ("{\"events\":[")); stream.Add (subStream); stream.Add (GetStream ("]}")); Assert.AreEqual (13 + 4 * 9 + 3 * 2, stream.Length); var buf = new byte[stream.Length + 100]; var read = stream.Read (buf, 0, buf.Length); Assert.AreEqual (stream.Length, read); var data = Encoding.UTF8.GetString (buf, 0, read); Assert.AreEqual ("{\"events\":[{\"id\": 1}, {\"id\": 2}, {\"id\": 3}, {\"id\": 4}]}", data); }
public void TestNoCombining () { var stream = new CombiningStream (" & "); stream.Add (GetStream ("test")); Assert.AreEqual (4, stream.Length); var buf = new byte[100]; var read = stream.Read (buf, 0, buf.Length); Assert.AreEqual (stream.Length, read); var data = Encoding.UTF8.GetString (buf, 0, read); Assert.AreEqual ("test", data); }
private Stream MakeNotification (Stream[] jsonEventStreams) { if (notifPrepend == null || notifAppend == null) { var json = JsonConvert.SerializeObject (new Notification () { ApiKey = ApiKey, Notifier = Notifier, Events = new List<Event> (0), }); // Find empty events array: var idx = json.IndexOf ("[]"); notifPrepend = json.Substring (0, idx + 1); notifAppend = json.Substring (idx + 1); } var stream = new CombiningStream (); stream.Add (notifPrepend); if (jsonEventStreams.Length > 1) { var eventsStream = new CombiningStream (", "); foreach (var eventStream in jsonEventStreams) { eventsStream.Add (eventStream); } stream.Add (eventsStream); } else if (jsonEventStreams.Length == 1) { stream.Add (jsonEventStreams [0]); } stream.Add (notifAppend); return stream; }