Author: alanmc
Date: 2008-02-02 20:33:50 -0500 (Sat, 02 Feb 2008)
New Revision: 94665
Modified:
trunk/bitsharp/src/MonoTorrent.Tests/PeerMessagesTest.cs
Log:
Added new tests
Modified: trunk/bitsharp/src/MonoTorrent.Tests/PeerMessagesTest.cs
===================================================================
--- trunk/bitsharp/src/MonoTorrent.Tests/PeerMessagesTest.cs 2008-02-03
01:33:29 UTC (rev 94664)
+++ trunk/bitsharp/src/MonoTorrent.Tests/PeerMessagesTest.cs 2008-02-03
01:33:50 UTC (rev 94665)
@@ -41,6 +41,7 @@
[TestFixture]
public class PeerMessagesTest
{
+ SampleClient.EngineTestRig testRig;
byte[] buffer = new byte[100000];
int offset = 2362;
@@ -50,137 +51,50 @@
buffer = new byte[100000];
for (int i = 0; i < buffer.Length; i++)
buffer[i] = 0xff;
+ testRig = new SampleClient.EngineTestRig("Downloads");
}
- [Test]
- [Ignore]
- public void IPeerMessageDecoding()
- {
- PeerMessage msg;
- PeerMessage result;
- TorrentManager manager = null;
- byte[] buffer = new byte[1000];
- /*
-
- BitField bf = new BitField(307);
- for (int i = 0; i < bf.Length; i++)
- if (i % 5 == 0 || i % 13 == 0)
- bf[i] = true;
- */
- //msg = new BitfieldMessage(bf);
- //msg.Encode(buffer, 0);
- //result = PeerMessage.DecodeMessage(buffer, 4, msg.ByteLength,
manager);
- //Assert.AreEqual(msg, result, msg.ToString() + " decoding failed.
1");
-
- msg = new CancelMessage();
- msg.Encode(buffer, 0);
- result = PeerMessage.DecodeMessage(buffer, 4, msg.ByteLength,
manager);
- Assert.AreEqual(msg, result, msg.ToString() + " decoding failed.
2");
-
-
- msg = new ChokeMessage();
- msg.Encode(buffer, 0);
- result = PeerMessage.DecodeMessage(buffer, 4, msg.ByteLength,
manager);
- Assert.AreEqual(msg, result, msg.ToString() + " decoding failed.
3");
-
-
- //msg = new HandshakeMessage();
- //msg.Encode(buffer, 0);
- //result = PeerMessage.DecodeMessage(buffer, 4, msg.ByteLength,
manager);
- //Assert.AreEqual(msg, result, msg.ToString() + " decoding
failed");
-
-
- msg = new HaveMessage();
- msg.Encode(buffer, 0);
- result = PeerMessage.DecodeMessage(buffer, 4, msg.ByteLength,
manager);
- Assert.AreEqual(msg, result, msg.ToString() + " decoding failed");
-
-
- msg = new InterestedMessage();
- msg.Encode(buffer, 0);
- result = PeerMessage.DecodeMessage(buffer, 4, msg.ByteLength,
manager);
- Assert.AreEqual(msg, result, msg.ToString() + " decoding failed");
-
-
- msg = new KeepAliveMessage();
- msg.Encode(buffer, 0);
- Assert.IsTrue(buffer[0] == 0
- && buffer[1] == 0
- && buffer[2] == 0
- && buffer[3] == 0);
-
-
- msg = new NotInterestedMessage();
- msg.Encode(buffer, 0);
- result = PeerMessage.DecodeMessage(buffer, 4, msg.ByteLength,
manager);
- Assert.AreEqual(msg, result, msg.ToString() + " decoding failed");
-
-
- //msg = new PieceMessage();
- //msg.Encode(buffer, 0);
- //result = PeerMessage.DecodeMessage(buffer, 4, msg.ByteLength,
manager);
- //Assert.AreEqual(msg, result, msg.ToString() + " decoding
failed");
-
-
- msg = new PortMessage();
- msg.Encode(buffer, 0);
- result = PeerMessage.DecodeMessage(buffer, 4, msg.ByteLength,
manager);
- Assert.AreEqual(msg, result, msg.ToString() + " decoding failed");
-
-
- msg = new RequestMessage();
- msg.Encode(buffer, 0);
- result = PeerMessage.DecodeMessage(buffer, 4, msg.ByteLength,
manager);
- Assert.AreEqual(msg, result, msg.ToString() + " decoding failed");
-
-
- msg = new UnchokeMessage();
- msg.Encode(buffer, 0);
- result = PeerMessage.DecodeMessage(buffer, 4, msg.ByteLength,
manager);
- Assert.AreEqual(msg, result, msg.ToString() + " decoding failed");
- }
-
[Test]
- [Ignore]
public void BitFieldEncoding()
- {/*
- byte[] buffer = new byte[0];
- BitField bf = new BitField(100);
- for (int i = 0; i < 100; i++)
- if (i % 5 == 0)
- bf[i] = true;
+ {
+ bool[] data = new bool[] { true, false, false, true, false, true,
false, true, false, true, false, true, false, false, false };
+ byte[] encoded = new BitfieldMessage(new BitField(data)).Encode();
- BitfieldMessage msg = new BitfieldMessage(bf);
- byte[] result = new byte[msg.ByteLength];
- msg.Encode(result, 0);
-
- Assert.AreEqual(System.Web.HttpUtility.UrlEncode(buffer),
System.Web.HttpUtility.UrlEncode(result), "Encoded bitfield incorrectly");
- throw new NotImplementedException();*/
+ BitfieldMessage m =
(BitfieldMessage)PeerMessage.DecodeMessage(encoded, 4, encoded.Length,
testRig.Manager);
}
[Test]
- [Ignore]
public void BitFieldDecoding()
- {/*
- BitField bf = new BitField(100);
- for (int i = 0; i < 100; i++)
- if (i % 5 == 0)
- bf[i] = true;
+ {
+ byte[] buffer = new byte[] { 0x00, 0x00, 0x00, 0x04, 0x05, 0xff,
0x08 };
+ Console.WriteLine("Pieces: " +
testRig.Manager.Torrent.Pieces.Count);
+ BitfieldMessage msg =
(BitfieldMessage)PeerMessage.DecodeMessage(buffer, 4, 4, this.testRig.Manager);
+ Console.WriteLine(msg.BitField.Length);
+ for (int i = 0; i < msg.BitField.Length; i++)
+ Console.WriteLine(msg.BitField[i] + " " + i);
- byte[] bfBytes = new byte[] { 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0,
0 };
- bf.FromArray(bfBytes, 0, bfBytes.Length);
+ for (int i = 0; i < 8; i++)
+ Assert.IsTrue(msg.BitField[i], i.ToString());
- for (int i = 0; i < bf.Length; i++)
- if (i % 5 == 0)
- Assert.AreEqual(true, bf[i], "Bitfield " + i.ToString() +
" is incorrect");
- else
- Assert.AreEqual(false, bf[i], "Bitfield " + i.ToString() +
" is incorrect");
+ for (int i = 8; i < 12; i++)
+ Assert.IsFalse(msg.BitField[i], i.ToString());
- throw new NotImplementedException();*/
+ Assert.IsTrue(msg.BitField[12], 12.ToString());
+ for (int i = 13; i < 15; i++)
+ Assert.IsFalse(msg.BitField[i], i.ToString());
}
+ [Test]
+ [ExpectedException(typeof(MessageException))]
+ public void BitfieldCorrupt()
+ {
+ bool[] data = new bool[] { true, false, false, true, false, true,
false, true, false, true, false, true, false, false, false, true };
+ byte[] encoded = new BitfieldMessage(new BitField(data)).Encode();
+ BitfieldMessage m =
(BitfieldMessage)PeerMessage.DecodeMessage(encoded, 4, encoded.Length,
testRig.Manager);
+ }
+
[Test]
public void CancelEncoding()
{
@@ -302,17 +216,14 @@
[Test]
- [Ignore]
public void PieceEncoding()
{
- int length = new PieceMessage(null, 15, 1024,
16384).Encode(buffer, offset);
- throw new NotImplementedException();
+ int length = new PieceMessage(testRig.Manager, 15, 1024,
16384).Encode(buffer, offset);
}
[Test]
- [Ignore]
public void PieceDecoding()
{
- EncodeDecode(new PieceMessage(null, 123, 456, 789));
+ EncodeDecode(new PieceMessage(testRig.Manager, 123, 456, 789));
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches