Merge pull request #2237 from xmcclure/container-owner
[mono.git] / mcs / class / System / Test / System.Net.NetworkInformation / NetworkInterfaceTest.cs
1 //
2 // NetworkInterfaceTest.cs - NUnit Test Cases for System.Net.NetworkInformation.NetworkInterface
3 //
4 // Authors:
5 //   Ben Woods (woodsb02@gmail.com)
6 //
7
8 using NUnit.Framework;
9 using System;
10 using System.Linq;
11 using System.Net;
12 using System.Net.Sockets;
13 using System.Net.NetworkInformation;
14
15 namespace MonoTests.System.Net.NetworkInformation
16 {
17
18         [TestFixture]
19         public class NetworkInterfaceTest
20         {
21                 [Test]
22                 public void IsNetworkAvailable ()
23                 {
24                         Assert.IsTrue (NetworkInterface.GetIsNetworkAvailable ());
25                 }
26         
27                 [Test]
28                 public void LoopbackInterfaceIndex ()
29                 {
30                         Assert.IsTrue (NetworkInterface.LoopbackInterfaceIndex > 0);
31                 }
32         
33                 [Test]
34                 public void AtLeastOneInterface ()
35                 {
36                         NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces ();
37                         Assert.IsTrue (adapters.Length > 0);
38                 }
39         
40                 [Test]
41                 public void FirstInterfaceId ()
42                 {
43                         NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces ();
44                         Assert.IsTrue (adapters[0].Id.Length > 0);
45                 }
46         
47                 [Test]
48                 public void FirstInterfaceName ()
49                 {
50                         NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces ();
51                         Assert.IsTrue (adapters[0].Name.Length > 0);
52                 }
53         
54                 [Test]
55                 public void FirstInterfaceType ()
56                 {
57                         NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces ();
58                         Assert.AreNotEqual (adapters[0].NetworkInterfaceType, NetworkInterfaceType.Unknown);
59                 }
60         
61                 [Test]
62                 public void FirstInterfaceOperationalStatus ()
63                 {
64                         var adapter = NetworkInterface.GetAllNetworkInterfaces ()[0];
65                         var status = adapter.OperationalStatus;
66                         // lo status is Unknown on Linux
67                         //Assert.AreNotEqual (adapter.OperationalStatus, OperationalStatus.Unknown);
68                 }
69         
70                 [Test]
71                 public void FirstInterfaceSpeed ()
72                 {
73                         NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces ();
74                         Assert.IsTrue (adapters[0].Speed > 0);
75                 }
76
77                 [Test]
78                 public void IPv4Mask ()
79                 {
80                         NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces ();
81                         foreach (NetworkInterface adapter in adapters)
82                         {
83                                 if (adapter.Supports (NetworkInterfaceComponent.IPv4))
84                                 {
85                                         IPInterfaceProperties adapterProperties = adapter.GetIPProperties ();
86                                         foreach (UnicastIPAddressInformation uni in adapterProperties.UnicastAddresses)
87                                         {
88                                                 if (uni.Address.AddressFamily == AddressFamily.InterNetwork)
89                                                 {
90                                                         Assert.IsNotNull (uni.IPv4Mask);
91                                                 }
92                                         }
93                                 }
94                         }
95                 }
96         }
97 }