1
1
using System ;
2
2
using System . Collections . Generic ;
3
3
using System . Globalization ;
4
- using System . Linq ;
5
4
using System . Text ;
6
5
using Microsoft . VisualStudio . TestTools . UnitTesting ;
7
6
using Renci . SshNet . Common ;
8
7
using Renci . SshNet . Messages . Connection ;
9
- using Renci . SshNet . Tests . Common ;
10
8
11
9
namespace Renci . SshNet . Tests . Classes . Messages . Connection
12
10
{
13
11
/// <summary>
14
12
/// Represents "pty-req" type channel request information
15
13
/// </summary>
16
14
[ TestClass ]
17
- public class PseudoTerminalRequestInfoTest : TestBase
15
+ public class PseudoTerminalRequestInfoTest
18
16
{
19
- private string environmentVariable ;
20
- private uint columns ;
21
- private uint rows ;
22
- private uint width ;
23
- private uint height ;
24
- IDictionary < TerminalModes , uint > terminalModeValues ;
17
+ private string _environmentVariable ;
18
+ private uint _columns ;
19
+ private uint _rows ;
20
+ private uint _width ;
21
+ private uint _height ;
22
+ private IDictionary < TerminalModes , uint > _terminalModeValues ;
25
23
private byte [ ] _environmentVariableBytes ;
26
24
27
25
[ TestInitialize ]
28
26
public void Init ( )
29
27
{
30
28
var random = new Random ( ) ;
31
29
32
- environmentVariable = random . Next ( ) . ToString ( CultureInfo . InvariantCulture ) ;
33
- columns = ( uint ) random . Next ( 0 , int . MaxValue ) ;
34
- rows = ( uint ) random . Next ( 0 , int . MaxValue ) ;
35
- width = ( uint ) random . Next ( 0 , int . MaxValue ) ;
36
- height = ( uint ) random . Next ( 0 , int . MaxValue ) ;
37
- terminalModeValues = new Dictionary < TerminalModes , uint > ( ) ;
30
+ _environmentVariable = random . Next ( ) . ToString ( CultureInfo . InvariantCulture ) ;
31
+ _environmentVariableBytes = Encoding . UTF8 . GetBytes ( _environmentVariable ) ;
32
+ _columns = ( uint ) random . Next ( 0 , int . MaxValue ) ;
33
+ _rows = ( uint ) random . Next ( 0 , int . MaxValue ) ;
34
+ _width = ( uint ) random . Next ( 0 , int . MaxValue ) ;
35
+ _height = ( uint ) random . Next ( 0 , int . MaxValue ) ;
36
+ _terminalModeValues = new Dictionary < TerminalModes , uint >
37
+ {
38
+ { TerminalModes . CS8 , 433 } ,
39
+ { TerminalModes . ECHO , 566 }
40
+ } ;
41
+ }
42
+
43
+ [ TestMethod ]
44
+ public void GetBytes ( )
45
+ {
46
+ var target = new PseudoTerminalRequestInfo ( _environmentVariable , _columns , _rows , _width , _height , _terminalModeValues ) ;
38
47
48
+ var bytes = target . GetBytes ( ) ;
39
49
40
- _environmentVariableBytes = Encoding . UTF8 . GetBytes ( environmentVariable ) ;
50
+ var expectedBytesLength = 1 ; // WantReply
51
+ expectedBytesLength += 4 ; // EnvironmentVariable length
52
+ expectedBytesLength += _environmentVariableBytes . Length ; // EnvironmentVariable
53
+ expectedBytesLength += 4 ; // Columns
54
+ expectedBytesLength += 4 ; // Rows
55
+ expectedBytesLength += 4 ; // PixelWidth
56
+ expectedBytesLength += 4 ; // PixelHeight
57
+ expectedBytesLength += 4 ; // Length of "encoded terminal modes"
58
+ expectedBytesLength += _terminalModeValues . Count * ( 1 + 4 ) + 1 ; // encoded terminal modes
59
+
60
+ Assert . AreEqual ( expectedBytesLength , bytes . Length ) ;
61
+
62
+ var sshDataStream = new SshDataStream ( bytes ) ;
63
+
64
+ Assert . AreEqual ( 1 , sshDataStream . ReadByte ( ) ) ; // WantReply
65
+ Assert . AreEqual ( _environmentVariable , sshDataStream . ReadString ( Encoding . UTF8 ) ) ;
66
+ Assert . AreEqual ( _columns , sshDataStream . ReadUInt32 ( ) ) ;
67
+ Assert . AreEqual ( _rows , sshDataStream . ReadUInt32 ( ) ) ;
68
+ Assert . AreEqual ( _width , sshDataStream . ReadUInt32 ( ) ) ;
69
+ Assert . AreEqual ( _height , sshDataStream . ReadUInt32 ( ) ) ;
70
+ Assert . AreEqual ( ( uint ) ( _terminalModeValues . Count * ( 1 + 4 ) + 1 ) , sshDataStream . ReadUInt32 ( ) ) ;
71
+ Assert . AreEqual ( ( int ) TerminalModes . CS8 , sshDataStream . ReadByte ( ) ) ;
72
+ Assert . AreEqual ( _terminalModeValues [ TerminalModes . CS8 ] , sshDataStream . ReadUInt32 ( ) ) ;
73
+ Assert . AreEqual ( ( int ) TerminalModes . ECHO , sshDataStream . ReadByte ( ) ) ;
74
+ Assert . AreEqual ( _terminalModeValues [ TerminalModes . ECHO ] , sshDataStream . ReadUInt32 ( ) ) ;
75
+ Assert . AreEqual ( ( int ) TerminalModes . TTY_OP_END , sshDataStream . ReadByte ( ) ) ;
76
+
77
+ Assert . IsTrue ( sshDataStream . IsEndOfData ) ;
41
78
}
42
79
43
80
[ TestMethod ]
44
81
public void GetBytes_TerminalModeValues_Null ( )
45
82
{
46
- var target = new PseudoTerminalRequestInfo ( environmentVariable , columns , rows , width , height , null ) ;
83
+ var target = new PseudoTerminalRequestInfo ( _environmentVariable , _columns , _rows , _width , _height , null ) ;
84
+
85
+ var bytes = target . GetBytes ( ) ;
86
+
87
+ var expectedBytesLength = 1 ; // WantReply
88
+ expectedBytesLength += 4 ; // EnvironmentVariable length
89
+ expectedBytesLength += _environmentVariableBytes . Length ; // EnvironmentVariable
90
+ expectedBytesLength += 4 ; // Columns
91
+ expectedBytesLength += 4 ; // Rows
92
+ expectedBytesLength += 4 ; // PixelWidth
93
+ expectedBytesLength += 4 ; // PixelHeight
94
+ expectedBytesLength += 4 ; // Length of "encoded terminal modes"
95
+
96
+ Assert . AreEqual ( expectedBytesLength , bytes . Length ) ;
97
+
98
+ var sshDataStream = new SshDataStream ( bytes ) ;
99
+
100
+ Assert . AreEqual ( 1 , sshDataStream . ReadByte ( ) ) ; // WantReply
101
+ Assert . AreEqual ( _environmentVariable , sshDataStream . ReadString ( Encoding . UTF8 ) ) ;
102
+ Assert . AreEqual ( _columns , sshDataStream . ReadUInt32 ( ) ) ;
103
+ Assert . AreEqual ( _rows , sshDataStream . ReadUInt32 ( ) ) ;
104
+ Assert . AreEqual ( _width , sshDataStream . ReadUInt32 ( ) ) ;
105
+ Assert . AreEqual ( _height , sshDataStream . ReadUInt32 ( ) ) ;
106
+ Assert . AreEqual ( ( uint ) 0 , sshDataStream . ReadUInt32 ( ) ) ;
107
+
108
+ Assert . IsTrue ( sshDataStream . IsEndOfData ) ;
109
+ }
110
+
111
+ [ TestMethod ]
112
+ public void GetBytes_TerminalModeValues_Empty ( )
113
+ {
114
+ var target = new PseudoTerminalRequestInfo ( _environmentVariable ,
115
+ _columns ,
116
+ _rows ,
117
+ _width ,
118
+ _height ,
119
+ new Dictionary < TerminalModes , uint > ( ) ) ;
47
120
48
121
var bytes = target . GetBytes ( ) ;
49
122
@@ -61,14 +134,50 @@ public void GetBytes_TerminalModeValues_Null()
61
134
var sshDataStream = new SshDataStream ( bytes ) ;
62
135
63
136
Assert . AreEqual ( 1 , sshDataStream . ReadByte ( ) ) ; // WantReply
64
- Assert . AreEqual ( environmentVariable , sshDataStream . ReadString ( Encoding . UTF8 ) ) ;
65
- Assert . AreEqual ( columns , sshDataStream . ReadUInt32 ( ) ) ;
66
- Assert . AreEqual ( rows , sshDataStream . ReadUInt32 ( ) ) ;
67
- Assert . AreEqual ( width , sshDataStream . ReadUInt32 ( ) ) ;
68
- Assert . AreEqual ( height , sshDataStream . ReadUInt32 ( ) ) ;
69
- Assert . AreEqual ( 0 , sshDataStream . ReadUInt32 ( ) ) ;
137
+ Assert . AreEqual ( _environmentVariable , sshDataStream . ReadString ( Encoding . UTF8 ) ) ;
138
+ Assert . AreEqual ( _columns , sshDataStream . ReadUInt32 ( ) ) ;
139
+ Assert . AreEqual ( _rows , sshDataStream . ReadUInt32 ( ) ) ;
140
+ Assert . AreEqual ( _width , sshDataStream . ReadUInt32 ( ) ) ;
141
+ Assert . AreEqual ( _height , sshDataStream . ReadUInt32 ( ) ) ;
142
+ Assert . AreEqual ( ( uint ) 0 , sshDataStream . ReadUInt32 ( ) ) ;
70
143
71
144
Assert . IsTrue ( sshDataStream . IsEndOfData ) ;
72
145
}
146
+
147
+ [ TestMethod ]
148
+ public void DefaultCtor ( )
149
+ {
150
+ var ptyReq = new PseudoTerminalRequestInfo ( ) ;
151
+
152
+ Assert . IsTrue ( ptyReq . WantReply ) ;
153
+ Assert . AreEqual ( uint . MinValue , ptyReq . Columns ) ;
154
+ Assert . IsNull ( ptyReq . EnvironmentVariable ) ;
155
+ Assert . AreEqual ( "pty-req" , ptyReq . RequestName ) ;
156
+ Assert . AreEqual ( uint . MinValue , ptyReq . PixelHeight ) ;
157
+ Assert . AreEqual ( uint . MinValue , ptyReq . PixelWidth ) ;
158
+ Assert . AreEqual ( uint . MinValue , ptyReq . Rows ) ;
159
+ Assert . IsNull ( ptyReq . TerminalModeValues ) ;
160
+ }
161
+
162
+ [ TestMethod ]
163
+ public void FullCtor ( )
164
+ {
165
+ var ptyReq = new PseudoTerminalRequestInfo ( _environmentVariable , _columns , _rows , _width , _height , _terminalModeValues ) ;
166
+
167
+ Assert . IsTrue ( ptyReq . WantReply ) ;
168
+ Assert . AreEqual ( _columns , ptyReq . Columns ) ;
169
+ Assert . AreSame ( _environmentVariable , ptyReq . EnvironmentVariable ) ;
170
+ Assert . AreEqual ( "pty-req" , ptyReq . RequestName ) ;
171
+ Assert . AreEqual ( _height , ptyReq . PixelHeight ) ;
172
+ Assert . AreEqual ( _width , ptyReq . PixelWidth ) ;
173
+ Assert . AreEqual ( _rows , ptyReq . Rows ) ;
174
+ Assert . AreSame ( _terminalModeValues , ptyReq . TerminalModeValues ) ;
175
+ }
176
+
177
+ [ TestMethod ]
178
+ public void NameShouldReturnPtyReq ( )
179
+ {
180
+ Assert . AreEqual ( "pty-req" , PseudoTerminalRequestInfo . Name ) ;
181
+ }
73
182
}
74
183
}
0 commit comments