From 50427a3a76057a595f22ec2b258f394f988e11f8 Mon Sep 17 00:00:00 2001 From: drieseng Date: Thu, 23 Jun 2016 06:48:06 +0200 Subject: [PATCH] Add test for PR #26. Add test for PR #26. --- .../ChannelRequest/PseudoTerminalInfoTest.cs | 86 ++++++++++++++++--- 1 file changed, 74 insertions(+), 12 deletions(-) diff --git a/src/Renci.SshNet.Tests/Classes/Messages/Connection/ChannelRequest/PseudoTerminalInfoTest.cs b/src/Renci.SshNet.Tests/Classes/Messages/Connection/ChannelRequest/PseudoTerminalInfoTest.cs index 0476e2ed..fa60b765 100644 --- a/src/Renci.SshNet.Tests/Classes/Messages/Connection/ChannelRequest/PseudoTerminalInfoTest.cs +++ b/src/Renci.SshNet.Tests/Classes/Messages/Connection/ChannelRequest/PseudoTerminalInfoTest.cs @@ -1,13 +1,75 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; -using Renci.SshNet.Tests.Common; - -namespace Renci.SshNet.Tests.Classes.Messages.Connection -{ - /// - /// Represents "pty-req" type channel request information - /// - [TestClass] - public class PseudoTerminalRequestInfoTest : TestBase - { - } +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Renci.SshNet.Common; +using Renci.SshNet.Messages.Connection; +using Renci.SshNet.Tests.Common; + +namespace Renci.SshNet.Tests.Classes.Messages.Connection +{ + /// + /// Represents "pty-req" type channel request information + /// + [TestClass] + public class PseudoTerminalRequestInfoTest : TestBase + { + private string environmentVariable; + private uint columns; + private uint rows; + private uint width; + private uint height; + IDictionary terminalModeValues; + private byte[] _environmentVariableBytes; + + [TestInitialize] + public void Init() + { + var random = new Random(); + + environmentVariable = random.Next().ToString(CultureInfo.InvariantCulture); + columns = (uint) random.Next(0, int.MaxValue); + rows = (uint) random.Next(0, int.MaxValue); + width = (uint) random.Next(0, int.MaxValue); + height = (uint) random.Next(0, int.MaxValue); + terminalModeValues = new Dictionary(); + + + _environmentVariableBytes = Encoding.UTF8.GetBytes(environmentVariable); + } + + [TestMethod] + public void GetBytes_TerminalModeValues_Null() + { + var target = new PseudoTerminalRequestInfo(environmentVariable, columns, rows, width, height, null); + + var bytes = target.GetBytes(); + + var expectedBytesLength = 1; // WantReply + expectedBytesLength += 4; // EnvironmentVariable length + expectedBytesLength += _environmentVariableBytes.Length; // EnvironmentVariable + expectedBytesLength += 4; // Columns + expectedBytesLength += 4; // Rows + expectedBytesLength += 4; // PixelWidth + expectedBytesLength += 4; // PixelHeight + expectedBytesLength += 4; // Length of "encoded terminal modes" + + Assert.AreEqual(expectedBytesLength, bytes.Length); + + var sshDataStream = new SshDataStream(bytes); + + Assert.AreEqual(1, sshDataStream.ReadByte()); // WantReply +// Assert.AreEqual((uint) _environmentVariableBytes.Length, sshDataStream.ReadUInt32()); + Assert.AreEqual(environmentVariable, sshDataStream.ReadString(Encoding.UTF8)); + Assert.AreEqual(columns, sshDataStream.ReadUInt32()); + Assert.AreEqual(rows, sshDataStream.ReadUInt32()); + Assert.AreEqual(width, sshDataStream.ReadUInt32()); + Assert.AreEqual(height, sshDataStream.ReadUInt32()); + Assert.AreEqual(0, sshDataStream.ReadUInt32()); + + Assert.IsTrue(sshDataStream.IsEndOfData); + } + } } \ No newline at end of file