diff --git a/UnitTests/Net/Imap/ImapStreamTests.cs b/UnitTests/Net/Imap/ImapStreamTests.cs index fa08f551b3..940b9bc0ed 100644 --- a/UnitTests/Net/Imap/ImapStreamTests.cs +++ b/UnitTests/Net/Imap/ImapStreamTests.cs @@ -187,7 +187,7 @@ public async Task TestReadLineAsync () public void TestReadToken () { using (var stream = new ImapStream (new DummyNetworkStream (), new NullProtocolLogger ())) { - var data = Encoding.ASCII.GetBytes ("* atom (\\flag \"qstring\" NIL) [] \r\n"); + var data = Encoding.ASCII.GetBytes ("* atom (\\flag \"qstring\" NIL Nil nil) [] \r\n"); stream.Stream.Write (data, 0, data.Length); stream.Stream.Position = 0; @@ -218,6 +218,14 @@ public void TestReadToken () Assert.AreEqual (ImapTokenType.Nil, token.Type); Assert.AreEqual ("NIL", token.ToString ()); + token = stream.ReadToken (CancellationToken.None); + Assert.AreEqual (ImapTokenType.Nil, token.Type); + Assert.AreEqual ("Nil", token.ToString ()); + + token = stream.ReadToken (CancellationToken.None); + Assert.AreEqual (ImapTokenType.Nil, token.Type); + Assert.AreEqual ("nil", token.ToString ()); + token = stream.ReadToken (CancellationToken.None); Assert.AreEqual (ImapTokenType.CloseParen, token.Type); Assert.AreEqual ("')'", token.ToString ()); @@ -245,7 +253,7 @@ public void TestReadToken () public async Task TestReadTokenAsync () { using (var stream = new ImapStream (new DummyNetworkStream (), new NullProtocolLogger ())) { - var data = Encoding.ASCII.GetBytes ("* atom (\\flag \"qstring\" NIL) [] \r\n"); + var data = Encoding.ASCII.GetBytes ("* atom (\\flag \"qstring\" NIL Nil nil) [] \r\n"); stream.Stream.Write (data, 0, data.Length); stream.Stream.Position = 0; @@ -276,6 +284,14 @@ public async Task TestReadTokenAsync () Assert.AreEqual (ImapTokenType.Nil, token.Type); Assert.AreEqual ("NIL", token.ToString ()); + token = stream.ReadToken (CancellationToken.None); + Assert.AreEqual (ImapTokenType.Nil, token.Type); + Assert.AreEqual ("Nil", token.ToString ()); + + token = stream.ReadToken (CancellationToken.None); + Assert.AreEqual (ImapTokenType.Nil, token.Type); + Assert.AreEqual ("nil", token.ToString ()); + token = await stream.ReadTokenAsync (CancellationToken.None); Assert.AreEqual (ImapTokenType.CloseParen, token.Type); Assert.AreEqual ("')'", token.ToString ()); @@ -299,6 +315,36 @@ public async Task TestReadTokenAsync () } } + [Test] + public void TestReadContinuationToken () + { + using (var stream = new ImapStream (new DummyNetworkStream (), new NullProtocolLogger ())) { + var data = Encoding.ASCII.GetBytes ("+ Please continue...\r\n"); + + stream.Stream.Write (data, 0, data.Length); + stream.Stream.Position = 0; + + var token = stream.ReadToken (CancellationToken.None); + Assert.AreEqual (ImapTokenType.Plus, token.Type); + Assert.AreEqual ("'+'", token.ToString ()); + } + } + + [Test] + public async Task TestReadContinuationTokenAsync () + { + using (var stream = new ImapStream (new DummyNetworkStream (), new NullProtocolLogger ())) { + var data = Encoding.ASCII.GetBytes ("+ Please continue...\r\n"); + + stream.Stream.Write (data, 0, data.Length); + stream.Stream.Position = 0; + + var token = await stream.ReadTokenAsync (CancellationToken.None); + Assert.AreEqual (ImapTokenType.Plus, token.Type); + Assert.AreEqual ("'+'", token.ToString ()); + } + } + [Test] public void TestReadBrokenLiteralToken () {