1 //
2 // Stream Test Helper Classes
3 //
4 // Author:
5 //	Sebastien Pouliot  <sebastien@ximian.com>
6 //
7 // Copyright (C) 2004 Novell (http://www.novell.com)
8 //
9 
10 using System;
11 using System.IO;
12 
13 namespace MonoTests.System.IO {
14 
15 	public class TestHelperStream : Stream {
16 
17 		private bool _read;
18 		private bool _write;
19 		private bool _seek;
20 		private long _pos;
21 		private long _length;
22 
TestHelperStream(bool read, bool write, bool seek)23 		public TestHelperStream (bool read, bool write, bool seek)
24 		{
25 			_read = read;
26 			_write = write;
27 			_seek = seek;
28 		}
29 
30 		public override bool CanRead {
31 			get { return _read; }
32 		}
33 
34 		public override bool CanSeek {
35                         get { return _seek; }
36                 }
37 
38                 public override bool CanWrite {
39                         get { return _write; }
40                 }
41 
42 		public override long Length {
43 			get { return _length; }
44 		}
45 
46 		public override long Position
47 		{
48 			get {
49 				if (!_seek)
50 					throw new NotSupportedException ("Not seekable");
51 				return _pos;
52 			}
53 			set {
54 				if (!_seek)
55 					throw new NotSupportedException ("Not seekable");
56 				_pos = value;
57 			}
58 		}
59 
Flush()60 		public override void Flush ()
61 		{
62 		}
63 
Read(byte[] buffer, int offset, int count)64 		public override int Read (byte[] buffer, int offset, int count)
65 		{
66 			if (!_read)
67 				throw new NotSupportedException ("Not readable");
68 			return count;
69 		}
70 
ReadByte()71 		public override int ReadByte ()
72 		{
73 			return -1;
74 		}
75 
Seek(long offset, SeekOrigin origin)76 		public override long Seek (long offset, SeekOrigin origin)
77 		{
78 			if (!_seek)
79 				throw new NotSupportedException ("Not seekable");
80 			return offset;
81 		}
82 
SetLength(long value)83 		public override void SetLength (long value)
84 		{
85 			if (!_write)
86 				throw new NotSupportedException ("Not writeable");
87 			_length = value;
88 		}
89 
Write(byte[] buffer, int offset, int count)90 		public override void Write (byte[] buffer, int offset, int count)
91 		{
92 			if (!_write)
93 				throw new NotSupportedException ("Not writeable");
94 		}
95 
WriteByte(byte value)96 		public override void WriteByte (byte value)
97 		{
98 			if (!_write)
99 				throw new NotSupportedException ("Not writeable");
100 		}
101 	}
102 
103 	public class ReadOnlyStream : TestHelperStream {
104 
ReadOnlyStream()105 		public ReadOnlyStream () : base (true, false, true)
106 		{
107 		}
108 	}
109 
110 	public class WriteOnlyStream : TestHelperStream {
111 
WriteOnlyStream()112 		public WriteOnlyStream () : base (false, true, true)
113 		{
114 		}
115 	}
116 
117 	public class NonSeekableStream : TestHelperStream {
118 
NonSeekableStream()119 		public NonSeekableStream () : base (true, true, false)
120 		{
121 		}
122 	}
123 }
124