Skip to content

Commit 087367f

Browse files
committedDec 17, 2011
Initial Commit
0 parents  commit 087367f

35 files changed

+13106
-0
lines changed
 

‎.gitignore

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
Thumbs.db
2+
*.obj
3+
*.exe
4+
*.pdb
5+
*.user
6+
*.aps
7+
*.pch
8+
*.vspscc
9+
*_i.c
10+
*_p.c
11+
*.ncb
12+
*.suo
13+
*.sln.docstates
14+
*.tlb
15+
*.tlh
16+
*.bak
17+
*.cache
18+
*.ilk
19+
*.log
20+
[Bb]in
21+
[Dd]ebug*/
22+
*.lib
23+
*.sbr
24+
obj/
25+
[Rr]elease*/
26+
_ReSharper*/
27+
[Tt]est[Rr]esult*

‎SharpOSC.Tests/CallbackTest.cs

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using NUnit.Framework;
6+
using System.Threading;
7+
8+
namespace SharpOSC.Tests
9+
{
10+
[TestFixture]
11+
class CallbackTest
12+
{
13+
14+
[TestCase]
15+
public void TestCallback()
16+
{
17+
bool cbCalled = false;
18+
// The cabllback function
19+
HandleOscPacket cb = delegate(OscPacket packet)
20+
{
21+
var msg = (OscMessage)packet;
22+
Assert.AreEqual(2, msg.Arguments.Count);
23+
Assert.AreEqual(23, msg.Arguments[0]);
24+
Assert.AreEqual("hello world", msg.Arguments[1]);
25+
cbCalled = true;
26+
};
27+
28+
var l1 = new UDPListener(55555, cb);
29+
30+
var sender = new SharpOSC.UDPSender("localhost", 55555);
31+
var msg1 = new SharpOSC.OscMessage("/test/address", 23, "hello world");
32+
sender.Send(msg1);
33+
34+
// Wait until callback processes its message
35+
var start = DateTime.Now;
36+
while(cbCalled == false && start.AddSeconds(2) > DateTime.Now)
37+
Thread.Sleep(1);
38+
39+
Assert.IsTrue(cbCalled);
40+
41+
l1.Close();
42+
}
43+
44+
[TestCase]
45+
public void TestByteCallback()
46+
{
47+
bool cbCalled = false;
48+
// The cabllback function
49+
HandleBytePacket cb = delegate(byte[] packet)
50+
{
51+
var msg = (OscMessage)OscPacket.GetPacket(packet);
52+
Assert.AreEqual(2, msg.Arguments.Count);
53+
Assert.AreEqual(23, msg.Arguments[0]);
54+
Assert.AreEqual("hello world", msg.Arguments[1]);
55+
cbCalled = true;
56+
};
57+
58+
var l1 = new UDPListener(55555, cb);
59+
60+
var sender = new SharpOSC.UDPSender("localhost", 55555);
61+
var msg1 = new SharpOSC.OscMessage("/test/address", 23, "hello world");
62+
sender.Send(msg1);
63+
64+
// Wait until callback processes its message
65+
var start = DateTime.Now;
66+
while (cbCalled == false && start.AddSeconds(2) > DateTime.Now)
67+
Thread.Sleep(1);
68+
69+
Assert.IsTrue(cbCalled);
70+
71+
l1.Close();
72+
}
73+
}
74+
}

‎SharpOSC.Tests/IntegrationTest.cs

+115
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using NUnit.Framework;
6+
7+
namespace SharpOSC.Tests
8+
{
9+
[TestFixture]
10+
class IntegrationTest
11+
{
12+
[TestCase]
13+
public void TestMessage()
14+
{
15+
var listener = new UDPListener(55555);
16+
17+
var sender = new SharpOSC.UDPSender("localhost", 55555);
18+
19+
// Test every message type (except Symbol)
20+
var msg1 = new SharpOSC.OscMessage(
21+
"/test/address",
22+
23+
23,
24+
42.42f,
25+
"hello world",
26+
new byte[3] { 2, 3, 4 },
27+
-123456789123,
28+
new Timetag(DateTime.Now.Date).Tag,
29+
new Timetag(DateTime.Now.Date.AddMonths(1)),
30+
(double)1234567.890,
31+
new Symbol("wut wut"),
32+
(char)'x',
33+
new RGBA(20, 40, 60, 255),
34+
new Midi(3, 110, 55, 66),
35+
true,
36+
false,
37+
null,
38+
Double.PositiveInfinity
39+
);
40+
41+
OscMessage msgRevc = null;
42+
43+
sender.Send(msg1);
44+
msgRevc = (OscMessage)listener.Receive();
45+
Assert.NotNull(msgRevc);
46+
47+
Assert.AreEqual("/test/address", msgRevc.Address);
48+
Assert.AreEqual(16, msgRevc.Arguments.Count);
49+
50+
Assert.AreEqual(23, msgRevc.Arguments[0]);
51+
Assert.AreEqual(42.42f, msgRevc.Arguments[1]);
52+
Assert.AreEqual("hello world", msgRevc.Arguments[2]);
53+
Assert.AreEqual(new byte[3] { 2, 3, 4 }, msgRevc.Arguments[3]);
54+
Assert.AreEqual(-123456789123, msgRevc.Arguments[4]);
55+
Assert.AreEqual(new Timetag(DateTime.Now.Date), msgRevc.Arguments[5]);
56+
Assert.AreEqual(new Timetag(DateTime.Now.Date.AddMonths(1)), msgRevc.Arguments[6]);
57+
Assert.AreEqual((double)1234567.890, msgRevc.Arguments[7]);
58+
Assert.AreEqual(new Symbol("wut wut"), msgRevc.Arguments[8]);
59+
Assert.AreEqual((char)'x', msgRevc.Arguments[9]);
60+
Assert.AreEqual(new RGBA(20, 40, 60, 255), msgRevc.Arguments[10]);
61+
Assert.AreEqual(new Midi(3, 110, 55, 66), msgRevc.Arguments[11]);
62+
Assert.AreEqual(true, msgRevc.Arguments[12]);
63+
Assert.AreEqual(false, msgRevc.Arguments[13]);
64+
Assert.AreEqual(null, msgRevc.Arguments[14]);
65+
Assert.AreEqual(Double.PositiveInfinity, msgRevc.Arguments[15]);
66+
67+
listener.Close();
68+
}
69+
70+
[TestCase]
71+
public void TestBundle()
72+
{
73+
var listener = new UDPListener(55555);
74+
75+
var sender1 = new SharpOSC.UDPSender("localhost", 55555);
76+
var msg1 = new SharpOSC.OscMessage("/test/address1", 23, 42.42f, "hello world", new byte[3] { 2, 3, 4 });
77+
var msg2 = new SharpOSC.OscMessage("/test/address2", 34, 24.24f, "hello again", new byte[5] { 5, 6, 7, 8, 9 });
78+
var dt = DateTime.Now;
79+
var bundle = new SharpOSC.OscBundle(Utils.DateTimeToTimetag(dt), msg1, msg2);
80+
81+
sender1.Send(bundle);
82+
sender1.Send(bundle);
83+
sender1.Send(bundle);
84+
85+
var recv = (OscBundle)listener.Receive();
86+
recv = (OscBundle)listener.Receive();
87+
recv = (OscBundle)listener.Receive();
88+
89+
90+
Assert.AreEqual(dt.Date, recv.Timestamp.Date);
91+
Assert.AreEqual(dt.Hour, recv.Timestamp.Hour);
92+
Assert.AreEqual(dt.Minute, recv.Timestamp.Minute);
93+
Assert.AreEqual(dt.Second, recv.Timestamp.Second);
94+
//Assert.AreEqual(dt.Millisecond, recv.DateTime.Millisecond); Ventus not accurate enough
95+
96+
Assert.AreEqual("/test/address1", recv.Messages[0].Address);
97+
Assert.AreEqual(4, recv.Messages[0].Arguments.Count);
98+
Assert.AreEqual(23, recv.Messages[0].Arguments[0]);
99+
Assert.AreEqual(42.42f, recv.Messages[0].Arguments[1]);
100+
Assert.AreEqual("hello world", recv.Messages[0].Arguments[2]);
101+
Assert.AreEqual(new byte[3] { 2, 3, 4 }, recv.Messages[0].Arguments[3]);
102+
103+
Assert.AreEqual("/test/address2", recv.Messages[1].Address);
104+
Assert.AreEqual(4, recv.Messages[1].Arguments.Count);
105+
Assert.AreEqual(34, recv.Messages[1].Arguments[0]);
106+
Assert.AreEqual(24.24f, recv.Messages[1].Arguments[1]);
107+
Assert.AreEqual("hello again", recv.Messages[1].Arguments[2]);
108+
Assert.AreEqual(new byte[5] { 5, 6, 7, 8, 9 }, recv.Messages[1].Arguments[3]);
109+
110+
listener.Close();
111+
}
112+
113+
114+
}
115+
}

‎SharpOSC.Tests/ListenerTest.cs

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using NUnit.Framework;
6+
using System.Threading;
7+
8+
namespace SharpOSC.Tests
9+
{
10+
[TestFixture]
11+
class ListenerTest
12+
{
13+
14+
/// <summary>
15+
/// Opens a listener on a specified port, then closes it and attempts to open another on the same port
16+
/// Opening the second listener will fail unless the first one has been properly closed.
17+
/// </summary>
18+
[TestCase]
19+
public void CloseListener()
20+
{
21+
var l1 = new UDPListener(55555);
22+
var isnull = l1.Receive();
23+
l1.Close();
24+
25+
var l2 = new UDPListener(55555);
26+
isnull = l2.Receive();
27+
l2.Close();
28+
}
29+
30+
/// <summary>
31+
/// Tries to open two listeners on the same port, results in an exception
32+
/// </summary>
33+
[TestCase]
34+
public void CloseListenerException()
35+
{
36+
UDPListener l1 = null;
37+
bool ex = false;
38+
try
39+
{
40+
l1 = new UDPListener(55555);
41+
var isnull = l1.Receive();
42+
var l2 = new UDPListener(55555);
43+
}
44+
catch (Exception e)
45+
{
46+
ex = true;
47+
}
48+
49+
Assert.IsTrue(ex);
50+
l1.Close();
51+
}
52+
}
53+
}

‎SharpOSC.Tests/ParseTest.cs

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using NUnit.Framework;
6+
7+
namespace SharpOSC.Tests
8+
{
9+
[TestFixture]
10+
class ParseTest
11+
{
12+
[TestCase]
13+
public void TestDouble()
14+
{
15+
double val = 1234567.2324521e36;
16+
17+
var msg = new OscMessage("/test/1", val);
18+
var bytes = msg.GetBytes();
19+
20+
var msg2 = (OscMessage)OscPacket.GetPacket(bytes);
21+
Assert.AreEqual(val, ((double)msg2.Arguments[0]));
22+
}
23+
24+
[TestCase]
25+
public void TestBlob()
26+
{
27+
var blob = new byte[5] { 23, 65, 255, 12, 6 };
28+
29+
var msg = new OscMessage("/test/1", blob);
30+
var bytes = msg.GetBytes();
31+
32+
var msg2 = (OscMessage)OscPacket.GetPacket(bytes);
33+
Assert.AreEqual(blob, ((byte[])msg2.Arguments[0]));
34+
}
35+
36+
[TestCase]
37+
public void TestTimetag()
38+
{
39+
var val = DateTime.Now;
40+
var tag = new Timetag(val);
41+
42+
var msg = new OscMessage("/test/1", tag);
43+
var bytes = msg.GetBytes();
44+
45+
var msg2 = (OscMessage)OscPacket.GetPacket(bytes);
46+
Assert.AreEqual(tag.Tag, ((Timetag)msg2.Arguments[0]).Tag);
47+
}
48+
49+
[TestCase]
50+
public void TestLong()
51+
{
52+
long num = 123456789012345;
53+
var msg = new OscMessage("/test/1", num);
54+
var bytes = msg.GetBytes();
55+
56+
var msg2 = (OscMessage)OscPacket.GetPacket(bytes);
57+
58+
Assert.AreEqual(num, msg2.Arguments[0]);
59+
}
60+
61+
[TestCase]
62+
public void TestArray()
63+
{
64+
var list = new List<object>() {23, true, "hello world" };
65+
var msg = new OscMessage("/test/1", 9999, list, 24.24f);
66+
var bytes = msg.GetBytes();
67+
68+
var msg2 = (OscMessage)OscPacket.GetPacket(bytes);
69+
70+
Assert.AreEqual(9999, msg2.Arguments[0]);
71+
Assert.AreEqual(list, msg2.Arguments[1]);
72+
Assert.AreEqual(list.Count, ((List<object>)(msg2.Arguments[1])).Count);
73+
Assert.AreEqual(24.24f, msg2.Arguments[2]);
74+
}
75+
76+
[TestCase]
77+
public void TestNoAddress()
78+
{
79+
var msg = new OscMessage("", 9999, 24.24f);
80+
var bytes = msg.GetBytes();
81+
82+
var msg2 = (OscMessage)OscPacket.GetPacket(bytes);
83+
84+
Assert.AreEqual("", msg2.Address);
85+
Assert.AreEqual(9999, msg2.Arguments[0]);
86+
Assert.AreEqual(24.24f, msg2.Arguments[1]);
87+
}
88+
}
89+
}

‎SharpOSC.Tests/Program.cs

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading;
6+
7+
namespace SharpOSC.Tests
8+
{
9+
class Program
10+
{
11+
static void Main(string[] args)
12+
{
13+
var message = new SharpOSC.OscMessage("/test/1", 23, 42.01f, "hello world");
14+
var sender = new SharpOSC.UDPSender("127.0.0.1", 55555);
15+
sender.Send(message);
16+
var listener = new UDPListener(55555);
17+
OscMessage messageReceived = null;
18+
while (messageReceived == null)
19+
{
20+
messageReceived = (OscMessage)listener.Receive();
21+
Thread.Sleep(1);
22+
}
23+
}
24+
25+
static void Main2()
26+
{
27+
var listener = new UDPListener(55555);
28+
var messageReceived = (OscMessage)listener.Receive();
29+
}
30+
}
31+
}

0 commit comments

Comments
 (0)
Please sign in to comment.