예제 #1
0
        public void ToBytes_ThreeLetterValue_ReturnsNullTerminatedAscii()
        {
            var sut           = new OscString("OSC");
            var expectedBytes = new byte[] { 79, 83, 67, 0 };

            Assert.Equal(expectedBytes, sut.ToBytes());
        }
예제 #2
0
 public void IsArgumentTest()
 {
     var target = new OscString();
     bool actual;
     actual = target.IsArgument;
     Assert.AreEqual(actual, true);
 }
예제 #3
0
        public void ToBytes_EmptyString_ReturnsFourNulls()
        {
            var sut           = new OscString(string.Empty);
            var expectedBytes = new byte[4];

            Assert.Equal(expectedBytes, sut.ToBytes());
        }
예제 #4
0
        public void ToBytes_UnicodeValue_SubstitutesQuestionMarks()
        {
            var sut           = new OscString("ØSC");
            var expectedBytes = new byte[] { 63, 83, 67, 0 };

            Assert.Equal(expectedBytes, sut.ToBytes());
        }
예제 #5
0
 public void ElementTypeTest()
 {
     var target = new OscString();
     OscElementType actual;
     actual = target.ElementType;
     Assert.AreEqual(actual, OscElementType.String);
 }
예제 #6
0
        public void FromBytes_ReturnsValue(string s)
        {
            var value = new OscString(s);
            var bytes = value.ToBytes();

            Assert.Equal(value, OscString.FromBytes(ref bytes));
            Assert.Empty(bytes);
        }
예제 #7
0
 public void ToOscPacketArrayTest()
 {
     var target = new OscString("/test");
     var expected = new byte[] { 0x2f, 0x74, 0x65, 0x73, 0x74, 0, 0, 0 };
     byte[] actual;
     actual = target.ToOscPacketArray();
     Assert.IsTrue(actual.Length == expected.Length, "Array size not equal");
     for (int i = 0; i < expected.Length; i++)
     {
         Assert.IsTrue(expected[i] == actual[i], String.Format("expected[{0}] != actual[{0}]", i));
     }
 }
예제 #8
0
        private byte[] GetBytes()
        {
            byte[]       bytes  = new byte[GetByteLength()];
            MemoryStream stream = new MemoryStream(bytes);

            stream.Write(Address.Bytes, 0, Address.Bytes.Length);
            OscString typeTag = GetTypeTagString();

            stream.Write(typeTag.Bytes, 0, typeTag.Bytes.Length);
            foreach (IOscValue value in Arguments)
            {
                stream.Write(value.Bytes, 0, value.Bytes.Length);
            }
            return(bytes);
        }
예제 #9
0
        public static new OscBundle Parse(BinaryReader reader)
        {
            OscString  bundleString = OscString.Parse(reader);
            OscTimeTag timeTag      = OscTimeTag.Parse(reader);

            List <OscPacket> contents = new List <OscPacket>();

            while (reader.BaseStream.Position < reader.BaseStream.Length)
            {
                OscInt    size   = OscInt.Parse(reader);
                OscPacket packet = OscPacket.Parse(reader);
                contents.Add(packet);
            }

            return(new OscBundle(timeTag.Contents, contents));
        }
예제 #10
0
        public void FromBytes_MessageBytes_MessageObject()
        {
            var addressPattern = new OscAddressPattern("/abc");
            var intArgument    = new OscInt(32);
            var floatArgument  = new OscFloat(3.21f);
            var stringArgument = new OscString("abc");
            var blobArgument   = new OscBlob(new byte[] { 1, 2, 3 });

            var message          = new OscMessage(addressPattern, new OscValue[] { intArgument, floatArgument, stringArgument, blobArgument });
            var bytes            = message.ToBytes();
            var messageFromBytes = OscMessage.FromBytes(bytes);

            Assert.Equal(message.AddressPattern, messageFromBytes.AddressPattern);
            Assert.Equal(message.Arguments.Length, messageFromBytes.Arguments.Length);
            Assert.Equal(message.Arguments, messageFromBytes.Arguments);
        }
예제 #11
0
 public OscMessage(string address, params object[] values)
 {
     Address   = new OscString(address);
     Arguments = new List <IOscValue>();
     foreach (object obj in values)
     {
         if (obj is IOscValue)
         {
             Arguments.Add(obj as IOscValue);
         }
         else
         {
             Arguments.Add(OscValue.Wrap(obj));
         }
     }
     Bytes = GetBytes();
 }
예제 #12
0
        public static new OscMessage Parse(BinaryReader reader)
        {
            OscString address  = OscString.Parse(reader);
            OscString typeTags = OscString.Parse(reader);

            int valueCount          = typeTags.Contents.Length - 1;
            List <IOscValue> values = new List <IOscValue>();

            foreach (char current in typeTags.Contents.Substring(1))
            {
                IOscValue value = OscValue.Parse(current, reader);

                values.Add(value);
            }

            return(new OscMessage(address.Contents, values));
        }
예제 #13
0
        public OscBundle(DateTime time, IEnumerable <OscPacket> contents)
        {
            Contents = new List <OscPacket>(contents);

            Bytes = new byte[GetByteLength()];
            MemoryStream stream       = new MemoryStream(Bytes);
            OscString    bundleString = new OscString("#bundle");

            stream.Write(bundleString.Bytes, 0, bundleString.Bytes.Length);
            TimeTag = new OscTimeTag(time);
            stream.Write(TimeTag.Bytes, 0, TimeTag.Bytes.Length);

            foreach (OscPacket message in contents)
            {
                stream.Write(OscInt.GetBigEndianIntBytes(message.Bytes.Length), 0, sizeof(int));
                stream.Write(message.Bytes, 0, message.Bytes.Length);
            }
        }
예제 #14
0
 private int GetTypeTagLength()
 {
     return(OscString.GetPaddedLength(Arguments.Count + 2));
 }
예제 #15
0
 public void OscStringConstructorTest()
 {
     string value = "/servo/0/position";
     var target = new OscString(value);
     Assert.AreEqual(target.Value, value);
 }
예제 #16
0
 public OscMessage(string address, IEnumerable <IOscValue> values)
 {
     Address   = new OscString(address);
     Arguments = new List <IOscValue>(values);
     Bytes     = GetBytes();
 }
예제 #17
0
 /// <summary>
 ///   Creates an address from the input string.
 /// </summary>
 /// <param name = "value"></param>
 public OscAddress(string value)
 {
     Value = new OscString(value);
 }
예제 #18
0
 /// <summary>
 ///   Creates an empty address
 /// </summary>
 public OscAddress()
 {
     Value = new OscString();
 }
예제 #19
0
 public void OscStringConstructorTest1()
 {
     var target = new OscString();
     Assert.AreEqual(target.Value, String.Empty);
 }
예제 #20
0
 public void ToStringTest()
 {
     var target = new OscString("/servo/0/position");
     string expected = "/servo/1/position";
     target.Value = expected;
     string actual;
     actual = target.ToString();
     Assert.AreEqual(expected, actual);
 }