public void TestBundle()
        {
            var listener = new UDPListener(55555);

            var sender1 = new SharpOSC.UDPSender("localhost", 55555);
            var msg1    = new SharpOSC.OscMessage("/test/address1", 23, 42.42f, "hello world", new byte[3] {
                2, 3, 4
            });
            var msg2 = new SharpOSC.OscMessage("/test/address2", 34, 24.24f, "hello again", new byte[5] {
                5, 6, 7, 8, 9
            });
            var dt     = DateTime.Now;
            var bundle = new SharpOSC.OscBundle(Utils.DateTimeToTimetag(dt), msg1, msg2);

            sender1.Send(bundle);
            sender1.Send(bundle);
            sender1.Send(bundle);

            var recv = (OscBundle)listener.Receive();

            recv = (OscBundle)listener.Receive();
            recv = (OscBundle)listener.Receive();


            Assert.AreEqual(dt.Date, recv.Timestamp.Date);
            Assert.AreEqual(dt.Hour, recv.Timestamp.Hour);
            Assert.AreEqual(dt.Minute, recv.Timestamp.Minute);
            Assert.AreEqual(dt.Second, recv.Timestamp.Second);
            //Assert.AreEqual(dt.Millisecond, recv.DateTime.Millisecond); Ventus not accurate enough

            Assert.AreEqual("/test/address1", recv.Messages[0].Address);
            Assert.AreEqual(4, recv.Messages[0].Arguments.Count);
            Assert.AreEqual(23, recv.Messages[0].Arguments[0]);
            Assert.AreEqual(42.42f, recv.Messages[0].Arguments[1]);
            Assert.AreEqual("hello world", recv.Messages[0].Arguments[2]);
            Assert.AreEqual(new byte[3] {
                2, 3, 4
            }, recv.Messages[0].Arguments[3]);

            Assert.AreEqual("/test/address2", recv.Messages[1].Address);
            Assert.AreEqual(4, recv.Messages[1].Arguments.Count);
            Assert.AreEqual(34, recv.Messages[1].Arguments[0]);
            Assert.AreEqual(24.24f, recv.Messages[1].Arguments[1]);
            Assert.AreEqual("hello again", recv.Messages[1].Arguments[2]);
            Assert.AreEqual(new byte[5] {
                5, 6, 7, 8, 9
            }, recv.Messages[1].Arguments[3]);

            listener.Close();
        }
        public void TestBundle()
        {
            var listener = new UDPListener(55555);

            var sender1 = new SharpOSC.UDPSender("localhost", 55555);
            var msg1 = new SharpOSC.OscMessage("/test/address1", 23, 42.42f, "hello world", new byte[3] { 2, 3, 4 });
            var msg2 = new SharpOSC.OscMessage("/test/address2", 34, 24.24f, "hello again", new byte[5] { 5, 6, 7, 8, 9 });
            var dt = DateTime.Now;
            var bundle = new SharpOSC.OscBundle(Utils.DateTimeToTimetag(dt), msg1, msg2);

            sender1.Send(bundle);
            sender1.Send(bundle);
            sender1.Send(bundle);

            var recv = (OscBundle)listener.Receive();
            recv = (OscBundle)listener.Receive();
            recv = (OscBundle)listener.Receive();

            Assert.AreEqual(dt.Date, recv.Timestamp.Date);
            Assert.AreEqual(dt.Hour, recv.Timestamp.Hour);
            Assert.AreEqual(dt.Minute, recv.Timestamp.Minute);
            Assert.AreEqual(dt.Second, recv.Timestamp.Second);
            //Assert.AreEqual(dt.Millisecond, recv.DateTime.Millisecond); Ventus not accurate enough

            Assert.AreEqual("/test/address1", recv.Messages[0].Address);
            Assert.AreEqual(4, recv.Messages[0].Arguments.Count);
            Assert.AreEqual(23, recv.Messages[0].Arguments[0]);
            Assert.AreEqual(42.42f, recv.Messages[0].Arguments[1]);
            Assert.AreEqual("hello world", recv.Messages[0].Arguments[2]);
            Assert.AreEqual(new byte[3] { 2, 3, 4 }, recv.Messages[0].Arguments[3]);

            Assert.AreEqual("/test/address2", recv.Messages[1].Address);
            Assert.AreEqual(4, recv.Messages[1].Arguments.Count);
            Assert.AreEqual(34, recv.Messages[1].Arguments[0]);
            Assert.AreEqual(24.24f, recv.Messages[1].Arguments[1]);
            Assert.AreEqual("hello again", recv.Messages[1].Arguments[2]);
            Assert.AreEqual(new byte[5] { 5, 6, 7, 8, 9 }, recv.Messages[1].Arguments[3]);

            listener.Close();
        }