From e8bf45a5d91a2c1ae59cfd3767b66b075748f60e Mon Sep 17 00:00:00 2001
From: Tim Schubert <tim.schubert@tu-bs.de>
Date: Sat, 4 Jul 2020 15:14:48 +0200
Subject: [PATCH] WIP: Add tests for isl-mock-channel

---
 test/isl-mock-channel-test-suite.cc | 62 +++++++++++++++++++++++++++++
 test/isl-test-suite.cc              |  6 +--
 wscript                             |  1 +
 3 files changed, 66 insertions(+), 3 deletions(-)
 create mode 100644 test/isl-mock-channel-test-suite.cc

diff --git a/test/isl-mock-channel-test-suite.cc b/test/isl-mock-channel-test-suite.cc
new file mode 100644
index 0000000..121ba08
--- /dev/null
+++ b/test/isl-mock-channel-test-suite.cc
@@ -0,0 +1,62 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/node-container.h"
+
+#include "ns3/leo-module.h"
+#include "ns3/test.h"
+
+using namespace ns3;
+
+class IslMockChannelTransmitTestCase : public TestCase
+{
+public:
+  IslMockChannelTransmitTestCase ();
+  virtual ~IslMockChannelTransmitTestCase ();
+
+private:
+  virtual void DoRun (void);
+};
+
+IslMockChannelTransmitTestCase::IslMockChannelTransmitTestCase ()
+  : TestCase ("Test channel transmission")
+{
+}
+
+IslMockChannelTransmitTestCase::~IslMockChannelTransmitTestCase ()
+{
+}
+
+void
+IslMockChannelTransmitTestCase::DoRun (void)
+{
+  Ptr<IslMockChannel> channel = CreateObject<IslMockChannel> ();
+  Packet *packet = new Packet ();
+  Ptr<Packet> p = Ptr<Packet>(packet);
+  Ptr<MockNetDevice> dev = CreateObject<MockNetDevice> ();
+  int32_t srcId = channel->Attach (dev);
+  Address destAddr;
+  Time txTime;
+  bool result = channel->TransmitStart (p, srcId, destAddr, txTime);
+
+  NS_TEST_ASSERT_MSG_EQ (result, false, "Unknown destination fails to deliver");
+}
+
+class IslMockChannelTestSuite : public TestSuite
+{
+public:
+  IslMockChannelTestSuite ();
+};
+
+IslMockChannelTestSuite::IslMockChannelTestSuite ()
+  : TestSuite ("isl-mock-channel", UNIT)
+{
+  // TestDuration for TestCase can be QUICK, EXTENSIVE or TAKES_FOREVER
+  AddTestCase (new IslMockChannelTransmitTestCase, TestCase::QUICK);
+}
+
+// Do not forget to allocate an instance of this TestSuite
+static IslMockChannelTestSuite islMockChannelTestSuite;
diff --git a/test/isl-test-suite.cc b/test/isl-test-suite.cc
index f6355f9..ca2c504 100644
--- a/test/isl-test-suite.cc
+++ b/test/isl-test-suite.cc
@@ -56,6 +56,7 @@ IslIcmpTestCase::DoRun (void)
   NdCacheHelper nsHelper;
   nsHelper.Install (devices, interfaces);
 
+  // install echo server on all nodes
   UdpEchoServerHelper echoServer (9);
   ApplicationContainer serverApps = echoServer.Install (nodes);
 
@@ -70,13 +71,12 @@ IslIcmpTestCase::DoRun (void)
       Address destAddress = interfaces.GetAddress (i, 0);
       echoClient.SetAttribute ("RemoteAddress", AddressValue (destAddress));
 
-      clientApps.Add (echoClient.Install (nodes.Get (i-1)));
+      clientApps.Add (echoClient.Install (nodes.Get (0)));
     }
 
+  serverApps.Start (Seconds (1.0));
   clientApps.Start (Seconds (2.0));
   clientApps.Stop (Seconds (10.0));
-
-  serverApps.Start (Seconds (1.0));
   serverApps.Stop (Seconds (10.0));
 
   Simulator::Run ();
diff --git a/wscript b/wscript
index d0f6353..f9cb134 100644
--- a/wscript
+++ b/wscript
@@ -27,6 +27,7 @@ def build(bld):
     module_test.source = [
         'test/leo-test-suite.cc',
         'test/isl-test-suite.cc',
+        'test/isl-mock-channel-test-suite.cc',
         ]
 
     headers = bld(features='ns3header')