1 // UnixEndPointTest.cs: Unit tests for Mono.Unix.UnixListener 2 // 3 // Authors: 4 // David Lechner (david@lechnology.com) 5 // 6 // (c) 2015 David Lechner 7 // 8 9 using System; 10 using System.IO; 11 using System.Net; 12 using System.Net.Sockets; 13 using System.Text; 14 15 using NUnit.Framework; 16 using Mono.Unix; 17 18 namespace MonoTests.Mono.Unix { 19 20 [TestFixture, Category ("NotOnWindows")] 21 public class UnixEndPointTest { 22 23 // Regression test for https://bugzilla.xamarin.com/show_bug.cgi?id=35004 24 [Test] TestCreate()25 public void TestCreate () 26 { 27 const string socketFile = "test"; 28 // mangledSocketFile simulates the socket file name with a null 29 // terminator and junk after the null terminator. This can be present 30 // in a SocketAddress when marshaled from native code. 31 const string mangledSocketFile = socketFile + "\0junk"; 32 33 var bytes = Encoding.Default.GetBytes (mangledSocketFile); 34 var socketAddress = new SocketAddress (AddressFamily.Unix, bytes.Length + 2); 35 for (int i = 0; i < bytes.Length; i++) { 36 socketAddress [i + 2] = bytes [i]; 37 } 38 var dummyEndPoint = new UnixEndPoint (socketFile); 39 40 // testing that the Create() method strips off the null terminator and the junk 41 var endPoint = (UnixEndPoint)dummyEndPoint.Create (socketAddress); 42 Assert.AreEqual (socketFile, endPoint.Filename, "#A01"); 43 } 44 } 45 } 46