Ejemplo n.º 1
0
        public void ConstructorWithByteArraySegment()
        {
            ArraySegment<byte> segment = new ArraySegment<byte>(new byte[] { 1, 2, 3 }, 1, 1);
            ASByteArray byteArray = new ASByteArray(segment);

            Assert.AreEqual(segment, byteArray.Bytes);
            Assert.AreEqual(1, byteArray.Count);
        }
Ejemplo n.º 2
0
        public void IndexerGetAndSet()
        {
            ArraySegment<byte> segment = new ArraySegment<byte>(new byte[] { 1, 2, 3, 4, 5 }, 1, 3);
            ASByteArray byteArray = new ASByteArray(segment);

            Assert.AreEqual(3, byteArray[1]);
            byteArray[1] = 42;
            Assert.AreEqual(42, byteArray[1]);
        }
Ejemplo n.º 3
0
        public void ConstructorWithByteArray(byte[] bytes)
        {
            ASByteArray byteArray = new ASByteArray(bytes);

            Assert.AreSame(bytes, byteArray.Bytes.Array);
            Assert.AreEqual(0, byteArray.Bytes.Offset);
            Assert.AreEqual(3, byteArray.Bytes.Count);
            Assert.AreEqual(3, byteArray.Count);
        }
Ejemplo n.º 4
0
 public void IndexerSetThrowsWhenIndexOutOfRange(int index)
 {
     ASByteArray byteArray = new ASByteArray(new byte[] { 1, 2, 3 });
     byteArray[index] = 42;
 }
Ejemplo n.º 5
0
 public void IndexerGetThrowsWhenIndexOutOfRange(int index)
 {
     ASByteArray byteArray = new ASByteArray(new byte[] { 1, 2, 3 });
     GC.KeepAlive(byteArray[index]);
 }
Ejemplo n.º 6
0
        public void WriteObject_Objects_ReferenceCaching(AMFObjectEncoding objectEncoding, byte[] expected)
        {
            // Create an array with multiple copies of each kind of object and including a self-reference
            ASObject obj = new ASObject();
            ASByteArray byteArray = new ASByteArray(new byte[0]);
            ASDate date = new ASDate(1, 0);
            ASArray array = new ASArray(6);

            array.IndexedValues[0] = obj;
            array.IndexedValues[1] = byteArray;
            array.IndexedValues[2] = date;
            array.IndexedValues[3] = obj;
            array.IndexedValues[4] = byteArray;
            array.IndexedValues[5] = date;
            array.DynamicProperties["a"] = array;

            output.ObjectEncoding = objectEncoding;
            output.BeginObjectStream();
            output.WriteObject(array);
            output.EndObjectStream();

            CollectionAssert.AreElementsEqual(expected, stream.ToArray());
        }
Ejemplo n.º 7
0
        public void WriteObject_ByteArrays(AMFObjectEncoding objectEncoding, byte[] expected, byte[] bytes)
        {
            ASByteArray byteArray = new ASByteArray(bytes);

            output.ObjectEncoding = objectEncoding;
            output.BeginObjectStream();
            output.WriteObject(byteArray);
            output.EndObjectStream();

            CollectionAssert.AreElementsEqual(expected, stream.ToArray());
        }
Ejemplo n.º 8
0
        private IASValue ReadByteArray()
        {
            int bits = input.ReadVWInt29();
            int lengthOrReferenceId = bits >> 1;

            // Handle cached objects.
            if ((bits & 1) == 0)
            {
                return GetObjectFromCache(AMF3ObjectTypeCode.ByteArray, lengthOrReferenceId);
            }

            // Read out the whole byte array.
            if (lengthOrReferenceId < 0)
                throw new AMFException(String.Format(CultureInfo.CurrentCulture,
                    ExceptionPrefix + "Encountered ByteArray token with invalid length '{0}'.", lengthOrReferenceId));

            byte[] bytes;

            if (lengthOrReferenceId != 0)
            {
                bytes = new byte[lengthOrReferenceId];
                input.ReadBytes(bytes, 0, lengthOrReferenceId);
            }
            else
            {
                bytes = EmptyArray<byte>.Instance;
            }

            ASByteArray result = new ASByteArray(bytes);
            AddObjectToCache(AMF3ObjectTypeCode.ByteArray, result);
            return result;
        }