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); }
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]); }
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); }
public void IndexerSetThrowsWhenIndexOutOfRange(int index) { ASByteArray byteArray = new ASByteArray(new byte[] { 1, 2, 3 }); byteArray[index] = 42; }
public void IndexerGetThrowsWhenIndexOutOfRange(int index) { ASByteArray byteArray = new ASByteArray(new byte[] { 1, 2, 3 }); GC.KeepAlive(byteArray[index]); }
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()); }
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()); }
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; }