Added Unity project files
This commit is contained in:
@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace VRC.SDKBase.Editor.VTP
|
||||
{
|
||||
// A mock for testing VTP code that expects a network stream.
|
||||
public class MockNetworkStream : Stream
|
||||
{
|
||||
// Since with a network stream you can write to the stream and you won't read back what you wrote, we have to use two memory streams to implement that.
|
||||
public MemoryStream incomingStream;
|
||||
public MemoryStream outgoingStream;
|
||||
|
||||
public MockNetworkStream(MemoryStream incomingStream, MemoryStream outgoingStream)
|
||||
{
|
||||
this.incomingStream = incomingStream;
|
||||
this.outgoingStream = outgoingStream;
|
||||
}
|
||||
|
||||
public override bool CanRead => true;
|
||||
|
||||
public override bool CanSeek => false;
|
||||
|
||||
public override bool CanWrite => true;
|
||||
public override long Length => incomingStream.Length;
|
||||
public override long Position { get; set; }
|
||||
|
||||
public override void Flush()
|
||||
{
|
||||
outgoingStream.Flush();
|
||||
}
|
||||
|
||||
public override int Read(byte[] buffer, int offset, int count)
|
||||
{
|
||||
if (Position < 0 || Position > incomingStream.Length)
|
||||
throw new ArgumentOutOfRangeException(nameof(Position), "Position is out of bounds");
|
||||
incomingStream.Position = Position;
|
||||
int read = incomingStream.Read(buffer, offset, count);
|
||||
Position += read;
|
||||
return read;
|
||||
}
|
||||
|
||||
public override long Seek(long offset, SeekOrigin origin)
|
||||
{
|
||||
throw new NotSupportedException($"Seek operation is not supported for {nameof(MockNetworkStream)}");
|
||||
}
|
||||
|
||||
public override void SetLength(long value)
|
||||
{
|
||||
incomingStream.SetLength(value);
|
||||
}
|
||||
|
||||
public override void Write(byte[] buffer, int offset, int count)
|
||||
{
|
||||
outgoingStream.Write(buffer, offset, count);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user