added test cases to reproduce bug 2048
authorNicola Baldo <nbaldo@cttc.es>
Wed, 28 Jan 2015 13:41:20 +0100
changeset 11173 76beac9fbf5f
parent 11172 d2c2b7934927
child 11342 11d3ea469a78
added test cases to reproduce bug 2048
src/lte/test/lte-test-cqa-ff-mac-scheduler.cc
src/lte/test/lte-test-cqa-ff-mac-scheduler.h
src/lte/test/lte-test-fdbet-ff-mac-scheduler.cc
src/lte/test/lte-test-fdbet-ff-mac-scheduler.h
src/lte/test/lte-test-fdmt-ff-mac-scheduler.cc
src/lte/test/lte-test-fdmt-ff-mac-scheduler.h
src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.cc
src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.h
src/lte/test/lte-test-pf-ff-mac-scheduler.cc
src/lte/test/lte-test-pf-ff-mac-scheduler.h
src/lte/test/lte-test-pss-ff-mac-scheduler.cc
src/lte/test/lte-test-pss-ff-mac-scheduler.h
src/lte/test/lte-test-rr-ff-mac-scheduler.cc
src/lte/test/lte-test-rr-ff-mac-scheduler.h
src/lte/test/lte-test-tdbet-ff-mac-scheduler.cc
src/lte/test/lte-test-tdbet-ff-mac-scheduler.h
src/lte/test/lte-test-tdmt-ff-mac-scheduler.cc
src/lte/test/lte-test-tdmt-ff-mac-scheduler.h
src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.cc
src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.h
src/lte/test/lte-test-tta-ff-mac-scheduler.cc
src/lte/test/lte-test-tta-ff-mac-scheduler.h
--- a/src/lte/test/lte-test-cqa-ff-mac-scheduler.cc	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-cqa-ff-mac-scheduler.cc	Wed Jan 28 13:41:20 2015 +0100
@@ -160,13 +160,18 @@
   AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (6,10000,129166,67000,200,1,errorModel), TestCase::EXTENSIVE);
   //AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (12,10000,64583,32667,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
 
+
+  // DOWNLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  // UPLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (1,100000,0,0,200,1,errorModel), TestCase::QUICK);
+
   // Test Case 2: homogeneous flow test in CQA (different distance)
   // Traffic1 info
   //   UDP traffic: payload size = 100 bytes, interval = 1 ms
   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 132000 byte/rate 
   // Maximum throughput = 4 / ( 1/2196000 + 1/1191000 + 1/1383000 + 1/775000 ) = 1209046 byte/s
   // 132000 * 4 = 528000 < 1209046 -> estimated throughput in downlink = 132000 byte/sec
-  std::vector<uint16_t> dist1;
+  std::vector<double> dist1;
   dist1.push_back (0);       // User 0 distance --> MCS 28
   dist1.push_back (4800);    // User 1 distance --> MCS 22
   dist1.push_back (6000);    // User 2 distance --> MCS 20
@@ -188,7 +193,7 @@
   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
   // Maximum throughput = 4 / ( 1/2196000 + 1/1191000 + 1/1383000 + 1/775000 ) = 1209046 byte/s
   // 232000 * 4 = 928000 < 1209046 -> estimated throughput in downlink = 928000 / 4 = 230000 byte/sec
-  std::vector<uint16_t> dist2;
+  std::vector<double> dist2;
   dist2.push_back (0);       // User 0 distance --> MCS 28
   dist2.push_back (4800);    // User 1 distance --> MCS 22
   dist2.push_back (6000);    // User 2 distance --> MCS 20
@@ -210,7 +215,7 @@
   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> [132000, 232000, 332000] byte/rate
   // Maximum throughput = 3 / ( 1/2196000 + 1/1191000 + 1/1383000) = 1486569 byte/s
   // 132000 + 232000 + 332000 = 696000 < 1486569 -> estimated throughput in downlink = [132000, 232000, 332000] byte/sec
-  std::vector<uint16_t> dist3;
+  std::vector<double> dist3;
   dist3.push_back (0);    // User 0 distance --> MCS 28
   dist3.push_back (4800);    // User 1 distance --> MCS 22
   dist3.push_back (6000);    // User 2 distance --> MCS 20
@@ -232,7 +237,7 @@
 
 
 std::string 
-LenaCqaFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, uint16_t dist)
+LenaCqaFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, double dist)
 {
   std::ostringstream oss;
   oss << nUser << " UEs, distance " << dist << " m";
@@ -240,7 +245,7 @@
 }
 
 
-LenaCqaFfMacSchedulerTestCase1::LenaCqaFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
+LenaCqaFfMacSchedulerTestCase1::LenaCqaFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
   : TestCase (BuildNameString (nUser, dist)),
     m_nUser (nUser),
     m_dist (dist),
@@ -476,11 +481,11 @@
 
 
 std::string 
-LenaCqaFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<uint16_t> dist)
+LenaCqaFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<double> dist)
 {
   std::ostringstream oss;
   oss << "distances (m) = [ " ;
-  for (std::vector<uint16_t>::iterator it = dist.begin (); it != dist.end (); ++it)
+  for (std::vector<double>::iterator it = dist.begin (); it != dist.end (); ++it)
     {
       oss << *it << " ";
     }
@@ -489,7 +494,7 @@
 }
 
 
-LenaCqaFfMacSchedulerTestCase2::LenaCqaFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estThrCqaDl, std::vector<uint16_t> packetSize, uint16_t interval,bool errorModelEnabled)
+LenaCqaFfMacSchedulerTestCase2::LenaCqaFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> estThrCqaDl, std::vector<uint16_t> packetSize, uint16_t interval,bool errorModelEnabled)
   : TestCase (BuildNameString (dist.size (), dist)),
     m_nUser (dist.size ()),
     m_dist (dist),
--- a/src/lte/test/lte-test-cqa-ff-mac-scheduler.h	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-cqa-ff-mac-scheduler.h	Wed Jan 28 13:41:20 2015 +0100
@@ -40,14 +40,14 @@
 class LenaCqaFfMacSchedulerTestCase1 : public TestCase
 {
 public:
-  LenaCqaFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
+  LenaCqaFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
   virtual ~LenaCqaFfMacSchedulerTestCase1 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
+  static std::string BuildNameString (uint16_t nUser, double dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  uint16_t m_dist;
+  double m_dist;
   uint16_t m_packetSize;  // byte
   uint16_t m_interval;    // ms
   double m_thrRefDl;
@@ -59,14 +59,14 @@
 class LenaCqaFfMacSchedulerTestCase2 : public TestCase
 {
 public:
-  LenaCqaFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estThrCqaDl, std::vector<uint16_t> packetSize, uint16_t interval, bool  errorModelEnabled);
+  LenaCqaFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> estThrCqaDl, std::vector<uint16_t> packetSize, uint16_t interval, bool  errorModelEnabled);
   virtual ~LenaCqaFfMacSchedulerTestCase2 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, std::vector<uint16_t> dist);
+  static std::string BuildNameString (uint16_t nUser, std::vector<double> dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  std::vector<uint16_t> m_dist;
+  std::vector<double> m_dist;
   std::vector<uint16_t> m_packetSize;  // byte
   uint16_t m_interval;    // ms
   std::vector<uint32_t> m_estThrCqaDl;
--- a/src/lte/test/lte-test-fdbet-ff-mac-scheduler.cc	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-fdbet-ff-mac-scheduler.cc	Wed Jan 28 13:41:20 2015 +0100
@@ -145,9 +145,13 @@
   AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (6,20000,67000,22000,errorModel), TestCase::EXTENSIVE);
   AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (12,20000,32000,12000,errorModel), TestCase::EXTENSIVE);
 
+  // DOWNLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  // UPLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (1,100000,0,0,errorModel), TestCase::QUICK);
+
   // Test Case 2: fairness check
 
-  std::vector<uint16_t> dist;
+  std::vector<double> dist;
   dist.push_back (0);       // User 0 distance --> MCS 28
   dist.push_back (4800);    // User 1 distance --> MCS 22
   dist.push_back (6000);    // User 2 distance --> MCS 14
@@ -175,14 +179,14 @@
 
 
 std::string 
-LenaFdBetFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, uint16_t dist)
+LenaFdBetFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, double dist)
 {
   std::ostringstream oss;
   oss << nUser << " UEs, distance " << dist << " m";
   return oss.str ();
 }
 
-LenaFdBetFfMacSchedulerTestCase1::LenaFdBetFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
+LenaFdBetFfMacSchedulerTestCase1::LenaFdBetFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
   : TestCase (BuildNameString (nUser, dist)),
     m_nUser (nUser),
     m_dist (dist),
@@ -334,11 +338,11 @@
 
 
 std::string 
-LenaFdBetFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<uint16_t> dist)
+LenaFdBetFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<double> dist)
 {
   std::ostringstream oss;
   oss << "distances (m) = [ " ;
-  for (std::vector<uint16_t>::iterator it = dist.begin (); it != dist.end (); ++it)
+  for (std::vector<double>::iterator it = dist.begin (); it != dist.end (); ++it)
     {
       oss << *it << " ";
     }
@@ -347,7 +351,7 @@
 }
 
 
-LenaFdBetFfMacSchedulerTestCase2::LenaFdBetFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estAchievableRateDl, std::vector<uint32_t> estThrFdBetUl, bool errorModelEnabled)
+LenaFdBetFfMacSchedulerTestCase2::LenaFdBetFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> estAchievableRateDl, std::vector<uint32_t> estThrFdBetUl, bool errorModelEnabled)
   : TestCase (BuildNameString (dist.size (), dist)),
     m_nUser (dist.size ()),
     m_dist (dist),
--- a/src/lte/test/lte-test-fdbet-ff-mac-scheduler.h	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-fdbet-ff-mac-scheduler.h	Wed Jan 28 13:41:20 2015 +0100
@@ -42,14 +42,14 @@
 class LenaFdBetFfMacSchedulerTestCase1 : public TestCase
 {
 public:
-  LenaFdBetFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
+  LenaFdBetFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
   virtual ~LenaFdBetFfMacSchedulerTestCase1 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
+  static std::string BuildNameString (uint16_t nUser, double dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  uint16_t m_dist;
+  double m_dist;
   double m_thrRefDl;
   double m_thrRefUl;
   bool m_errorModelEnabled;
@@ -59,14 +59,14 @@
 class LenaFdBetFfMacSchedulerTestCase2 : public TestCase
 {
 public:
-  LenaFdBetFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> m_achievableRateDl, std::vector<uint32_t> estThrFdBetUl, bool m_errorModelEnabled);
+  LenaFdBetFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> m_achievableRateDl, std::vector<uint32_t> estThrFdBetUl, bool m_errorModelEnabled);
   virtual ~LenaFdBetFfMacSchedulerTestCase2 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, std::vector<uint16_t> dist);
+  static std::string BuildNameString (uint16_t nUser, std::vector<double> dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  std::vector<uint16_t> m_dist;
+  std::vector<double> m_dist;
   std::vector<uint32_t> m_achievableRateDl;
   std::vector<uint32_t> m_estThrFdBetUl;
   bool m_errorModelEnabled;
--- a/src/lte/test/lte-test-fdmt-ff-mac-scheduler.cc	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-fdmt-ff-mac-scheduler.cc	Wed Jan 28 13:41:20 2015 +0100
@@ -148,6 +148,10 @@
   AddTestCase (new LenaFdMtFfMacSchedulerTestCase (3,20000,421000,41000,errorModel), TestCase::EXTENSIVE);
   AddTestCase (new LenaFdMtFfMacSchedulerTestCase (6,20000,421000,22000,errorModel), TestCase::EXTENSIVE);
   AddTestCase (new LenaFdMtFfMacSchedulerTestCase (12,20000,421000,12000,errorModel), TestCase::EXTENSIVE);
+
+  // DOWNLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  // UPLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (1,100000,0,0,errorModel), TestCase::QUICK);
 }
 
 static LenaTestFdMtFfMacSchedulerSuite lenaTestFdMtFfMacSchedulerSuite;
@@ -156,14 +160,14 @@
 // --------------- T E S T - C A S E ------------------------------
 
 std::string 
-LenaFdMtFfMacSchedulerTestCase::BuildNameString (uint16_t nUser, uint16_t dist)
+LenaFdMtFfMacSchedulerTestCase::BuildNameString (uint16_t nUser, double dist)
 {
   std::ostringstream oss;
   oss << nUser << " UEs, distance " << dist << " m";
   return oss.str ();
 }
 
-LenaFdMtFfMacSchedulerTestCase::LenaFdMtFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
+LenaFdMtFfMacSchedulerTestCase::LenaFdMtFfMacSchedulerTestCase (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
   : TestCase (BuildNameString (nUser, dist)),
     m_nUser (nUser),
     m_dist (dist),
--- a/src/lte/test/lte-test-fdmt-ff-mac-scheduler.h	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-fdmt-ff-mac-scheduler.h	Wed Jan 28 13:41:20 2015 +0100
@@ -42,14 +42,14 @@
 class LenaFdMtFfMacSchedulerTestCase : public TestCase
 {
 public:
-  LenaFdMtFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
+  LenaFdMtFfMacSchedulerTestCase (uint16_t nUser, double dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
   virtual ~LenaFdMtFfMacSchedulerTestCase ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
+  static std::string BuildNameString (uint16_t nUser, double dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  uint16_t m_dist;
+  double m_dist;
   double m_thrRefDl;
   double m_thrRefUl;
   bool m_errorModelEnabled;
--- a/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.cc	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.cc	Wed Jan 28 13:41:20 2015 +0100
@@ -157,13 +157,17 @@
   AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (6,10000,129166,67000,200,1,errorModel), TestCase::EXTENSIVE);
   //AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (12,10000,64583,32667,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
 
+  // DOWNLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  // UPLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (1,100000,0,0,200,1,errorModel), TestCase::QUICK);
+
   // Test Case 2: homogeneous flow test in FDTBFQ (different distance)
   // Traffic1 info
   //   UDP traffic: payload size = 100 bytes, interval = 1 ms
   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 132000 byte/rate 
   // Maximum throughput = 4 / ( 1/2196000 + 1/1191000 + 1/1383000 + 1/775000 ) = 1209046 byte/s
   // 132000 * 4 = 528000 < 1209046 -> estimated throughput in downlink = 132000 byte/sec
-  std::vector<uint16_t> dist1;
+  std::vector<double> dist1;
   dist1.push_back (0);       // User 0 distance --> MCS 28
   dist1.push_back (4800);    // User 1 distance --> MCS 22
   dist1.push_back (6000);    // User 2 distance --> MCS 20
@@ -185,7 +189,7 @@
   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 332000 byte/rate
   // Maximum throughput = 4 / ( 1/2196000 + 1/1191000 + 1/1383000 + 1/775000 ) = 1209046 byte/s
   // 232000 * 4 = 1328000 > 1209046 -> estimated throughput in downlink = 1209046 / 4 = 302266 byte/sec
-  std::vector<uint16_t> dist2;
+  std::vector<double> dist2;
   dist2.push_back (0);       // User 0 distance --> MCS 28
   dist2.push_back (4800);    // User 1 distance --> MCS 22
   dist2.push_back (6000);    // User 2 distance --> MCS 20
@@ -207,7 +211,7 @@
   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> [132000, 232000, 332000] byte/rate 
   // Maximum throughput = 3 / ( 1/2196000 + 1/1191000 + 1/1383000) = 1486569 byte/s
   // 132000 + 232000 + 332000 = 696000 < 1486569 -> estimated throughput in downlink = [132000, 232000, 332000] byte/sec
-  std::vector<uint16_t> dist3;
+  std::vector<double> dist3;
   dist3.push_back (0);    // User 0 distance --> MCS 28
   dist3.push_back (4800);    // User 1 distance --> MCS 22
   dist3.push_back (6000);    // User 2 distance --> MCS 20
@@ -229,7 +233,7 @@
 
 
 std::string 
-LenaFdTbfqFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, uint16_t dist)
+LenaFdTbfqFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, double dist)
 {
   std::ostringstream oss;
   oss << nUser << " UEs, distance " << dist << " m";
@@ -237,7 +241,7 @@
 }
 
 
-LenaFdTbfqFfMacSchedulerTestCase1::LenaFdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
+LenaFdTbfqFfMacSchedulerTestCase1::LenaFdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
   : TestCase (BuildNameString (nUser, dist)),
     m_nUser (nUser),
     m_dist (dist),
@@ -473,11 +477,11 @@
 
 
 std::string 
-LenaFdTbfqFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<uint16_t> dist)
+LenaFdTbfqFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<double> dist)
 {
   std::ostringstream oss;
   oss << "distances (m) = [ " ;
-  for (std::vector<uint16_t>::iterator it = dist.begin (); it != dist.end (); ++it)
+  for (std::vector<double>::iterator it = dist.begin (); it != dist.end (); ++it)
     {
       oss << *it << " ";
     }
@@ -486,7 +490,7 @@
 }
 
 
-LenaFdTbfqFfMacSchedulerTestCase2::LenaFdTbfqFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estThrFdTbfqDl, std::vector<uint16_t> packetSize, uint16_t interval,bool errorModelEnabled)
+LenaFdTbfqFfMacSchedulerTestCase2::LenaFdTbfqFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> estThrFdTbfqDl, std::vector<uint16_t> packetSize, uint16_t interval,bool errorModelEnabled)
   : TestCase (BuildNameString (dist.size (), dist)),
     m_nUser (dist.size ()),
     m_dist (dist),
--- a/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.h	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.h	Wed Jan 28 13:41:20 2015 +0100
@@ -42,14 +42,14 @@
 class LenaFdTbfqFfMacSchedulerTestCase1 : public TestCase
 {
 public:
-  LenaFdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
+  LenaFdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
   virtual ~LenaFdTbfqFfMacSchedulerTestCase1 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
+  static std::string BuildNameString (uint16_t nUser, double dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  uint16_t m_dist;
+  double m_dist;
   uint16_t m_packetSize;  // byte
   uint16_t m_interval;    // ms
   double m_thrRefDl;
@@ -61,14 +61,14 @@
 class LenaFdTbfqFfMacSchedulerTestCase2 : public TestCase
 {
 public:
-  LenaFdTbfqFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estThrFdTbfqDl, std::vector<uint16_t> packetSize, uint16_t interval, bool  errorModelEnabled);
+  LenaFdTbfqFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> estThrFdTbfqDl, std::vector<uint16_t> packetSize, uint16_t interval, bool  errorModelEnabled);
   virtual ~LenaFdTbfqFfMacSchedulerTestCase2 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, std::vector<uint16_t> dist);
+  static std::string BuildNameString (uint16_t nUser, std::vector<double> dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  std::vector<uint16_t> m_dist;
+  std::vector<double> m_dist;
   std::vector<uint16_t> m_packetSize;  // byte
   uint16_t m_interval;    // ms
   std::vector<uint32_t> m_estThrFdTbfqDl;
--- a/src/lte/test/lte-test-pf-ff-mac-scheduler.cc	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-pf-ff-mac-scheduler.cc	Wed Jan 28 13:41:20 2015 +0100
@@ -160,10 +160,14 @@
   AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,20000,35083,12000,errorModel), TestCase::EXTENSIVE);
   AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,20000,28067,9600,errorModel), TestCase::EXTENSIVE);
 
+  // DOWNLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  // UPLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,100000,0,0,errorModel), TestCase::QUICK);
+
 
   // Test Case 2: fairness check
 
-  std::vector<uint16_t> dist;
+  std::vector<double> dist;
   dist.push_back (0);    // User 0 distance --> MCS 28
   dist.push_back (4800);    // User 1 distance --> MCS 22
   dist.push_back (6000);    // User 2 distance --> MCS 16
@@ -193,14 +197,14 @@
 
 
 std::string 
-LenaPfFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, uint16_t dist)
+LenaPfFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, double dist)
 {
   std::ostringstream oss;
   oss << nUser << " UEs, distance " << dist << " m";
   return oss.str ();
 }
 
-LenaPfFfMacSchedulerTestCase1::LenaPfFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
+LenaPfFfMacSchedulerTestCase1::LenaPfFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
   : TestCase (BuildNameString (nUser, dist)),
     m_nUser (nUser),
     m_dist (dist),
@@ -352,11 +356,11 @@
 
 
 std::string 
-LenaPfFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<uint16_t> dist)
+LenaPfFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<double> dist)
 {
   std::ostringstream oss;
   oss << "distances (m) = [ " ;
-  for (std::vector<uint16_t>::iterator it = dist.begin (); it != dist.end (); ++it)
+  for (std::vector<double>::iterator it = dist.begin (); it != dist.end (); ++it)
     {
       oss << *it << " ";
     }
@@ -365,7 +369,7 @@
 }
 
 
-LenaPfFfMacSchedulerTestCase2::LenaPfFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estThrPfDl, std::vector<uint32_t> estThrPfUl, bool errorModelEnabled)
+LenaPfFfMacSchedulerTestCase2::LenaPfFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> estThrPfDl, std::vector<uint32_t> estThrPfUl, bool errorModelEnabled)
   : TestCase (BuildNameString (dist.size (), dist)),
     m_nUser (dist.size ()),
     m_dist (dist),
--- a/src/lte/test/lte-test-pf-ff-mac-scheduler.h	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-pf-ff-mac-scheduler.h	Wed Jan 28 13:41:20 2015 +0100
@@ -41,14 +41,14 @@
 class LenaPfFfMacSchedulerTestCase1 : public TestCase
 {
 public:
-  LenaPfFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled);
+  LenaPfFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, bool errorModelEnabled);
   virtual ~LenaPfFfMacSchedulerTestCase1 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
+  static std::string BuildNameString (uint16_t nUser, double dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  uint16_t m_dist;
+  double m_dist;
   double m_thrRefDl;
   double m_thrRefUl;
   bool m_errorModelEnabled;
@@ -58,14 +58,14 @@
 class LenaPfFfMacSchedulerTestCase2 : public TestCase
 {
 public:
-  LenaPfFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estThrPfDl, std::vector<uint32_t> estThrPfUl, bool errorModelEnabled);
+  LenaPfFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> estThrPfDl, std::vector<uint32_t> estThrPfUl, bool errorModelEnabled);
   virtual ~LenaPfFfMacSchedulerTestCase2 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, std::vector<uint16_t> dist);
+  static std::string BuildNameString (uint16_t nUser, std::vector<double> dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  std::vector<uint16_t> m_dist;
+  std::vector<double> m_dist;
   std::vector<uint32_t> m_estThrPfDl;
   std::vector<uint32_t> m_estThrPfUl;
   bool m_errorModelEnabled;
--- a/src/lte/test/lte-test-pss-ff-mac-scheduler.cc	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-pss-ff-mac-scheduler.cc	Wed Jan 28 13:41:20 2015 +0100
@@ -158,13 +158,17 @@
   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,10000,129166,67000,200,1,errorModel), TestCase::EXTENSIVE);
   //AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,10000,64583,32667,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
 
+  // DOWNLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  // UPLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,100000,0,0,200,1,errorModel), TestCase::QUICK);
+
   // Test Case 2: homogeneous flow test in PSS (different distance)
   // Traffic1 info
   //   UDP traffic: payload size = 100 bytes, interval = 1 ms
   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 132000 byte/rate 
   // Maximum throughput = 4 / ( 1/2196000 + 1/1191000 + 1/1383000 + 1/775000 ) = 1209046 byte/s
   // 132000 * 4 = 528000 < 1209046 -> estimated throughput in downlink = 132000 byte/sec
-  std::vector<uint16_t> dist1;
+  std::vector<double> dist1;
   dist1.push_back (0);       // User 0 distance --> MCS 28
   dist1.push_back (4800);    // User 1 distance --> MCS 22
   dist1.push_back (6000);    // User 2 distance --> MCS 20
@@ -186,7 +190,7 @@
   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
   // Maximum throughput = 4 / ( 1/2196000 + 1/1191000 + 1/1383000 + 1/775000 ) = 1209046 byte/s
   // 232000 * 4 = 928000 < 1209046 -> estimated throughput in downlink = 928000 / 4 = 230000 byte/sec
-  std::vector<uint16_t> dist2;
+  std::vector<double> dist2;
   dist2.push_back (0);       // User 0 distance --> MCS 28
   dist2.push_back (4800);    // User 1 distance --> MCS 22
   dist2.push_back (6000);    // User 2 distance --> MCS 20
@@ -208,7 +212,7 @@
   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> [132000, 232000, 332000] byte/rate
   // Maximum throughput = 3 / ( 1/2196000 + 1/1191000 + 1/1383000) = 1486569 byte/s
   // 132000 + 232000 + 332000 = 696000 < 1486569 -> estimated throughput in downlink = [132000, 232000, 332000] byte/sec
-  std::vector<uint16_t> dist3;
+  std::vector<double> dist3;
   dist3.push_back (0);    // User 0 distance --> MCS 28
   dist3.push_back (4800);    // User 1 distance --> MCS 22
   dist3.push_back (6000);    // User 2 distance --> MCS 20
@@ -230,7 +234,7 @@
 
 
 std::string 
-LenaPssFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, uint16_t dist)
+LenaPssFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, double dist)
 {
   std::ostringstream oss;
   oss << nUser << " UEs, distance " << dist << " m";
@@ -238,7 +242,7 @@
 }
 
 
-LenaPssFfMacSchedulerTestCase1::LenaPssFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
+LenaPssFfMacSchedulerTestCase1::LenaPssFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
   : TestCase (BuildNameString (nUser, dist)),
     m_nUser (nUser),
     m_dist (dist),
@@ -474,11 +478,11 @@
 
 
 std::string 
-LenaPssFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<uint16_t> dist)
+LenaPssFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<double> dist)
 {
   std::ostringstream oss;
   oss << "distances (m) = [ " ;
-  for (std::vector<uint16_t>::iterator it = dist.begin (); it != dist.end (); ++it)
+  for (std::vector<double>::iterator it = dist.begin (); it != dist.end (); ++it)
     {
       oss << *it << " ";
     }
@@ -487,7 +491,7 @@
 }
 
 
-LenaPssFfMacSchedulerTestCase2::LenaPssFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estThrPssDl, std::vector<uint16_t> packetSize, uint16_t interval,bool errorModelEnabled)
+LenaPssFfMacSchedulerTestCase2::LenaPssFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> estThrPssDl, std::vector<uint16_t> packetSize, uint16_t interval,bool errorModelEnabled)
   : TestCase (BuildNameString (dist.size (), dist)),
     m_nUser (dist.size ()),
     m_dist (dist),
--- a/src/lte/test/lte-test-pss-ff-mac-scheduler.h	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-pss-ff-mac-scheduler.h	Wed Jan 28 13:41:20 2015 +0100
@@ -42,14 +42,14 @@
 class LenaPssFfMacSchedulerTestCase1 : public TestCase
 {
 public:
-  LenaPssFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
+  LenaPssFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
   virtual ~LenaPssFfMacSchedulerTestCase1 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
+  static std::string BuildNameString (uint16_t nUser, double dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  uint16_t m_dist;
+  double m_dist;
   uint16_t m_packetSize;  // byte
   uint16_t m_interval;    // ms
   double m_thrRefDl;
@@ -61,14 +61,14 @@
 class LenaPssFfMacSchedulerTestCase2 : public TestCase
 {
 public:
-  LenaPssFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estThrPssDl, std::vector<uint16_t> packetSize, uint16_t interval, bool  errorModelEnabled);
+  LenaPssFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> estThrPssDl, std::vector<uint16_t> packetSize, uint16_t interval, bool  errorModelEnabled);
   virtual ~LenaPssFfMacSchedulerTestCase2 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, std::vector<uint16_t> dist);
+  static std::string BuildNameString (uint16_t nUser, std::vector<double> dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  std::vector<uint16_t> m_dist;
+  std::vector<double> m_dist;
   std::vector<uint16_t> m_packetSize;  // byte
   uint16_t m_interval;    // ms
   std::vector<uint32_t> m_estThrPssDl;
--- a/src/lte/test/lte-test-rr-ff-mac-scheduler.cc	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-rr-ff-mac-scheduler.cc	Wed Jan 28 13:41:20 2015 +0100
@@ -147,19 +147,22 @@
   AddTestCase (new LenaRrFfMacSchedulerTestCase (12,20000,32000,12000,errorModel), TestCase::EXTENSIVE);
   AddTestCase (new LenaRrFfMacSchedulerTestCase (15,20000,25600,9600,errorModel), TestCase::EXTENSIVE);
 
+  // DOWNLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  // UPLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  AddTestCase (new LenaRrFfMacSchedulerTestCase (1,100000,0,0,errorModel), TestCase::QUICK);
 }
 
 static LenaTestRrFfMacSchedulerSuite lenaTestRrFfMacSchedulerSuite;
 
 std::string 
-LenaRrFfMacSchedulerTestCase::BuildNameString (uint16_t nUser, uint16_t dist)
+LenaRrFfMacSchedulerTestCase::BuildNameString (uint16_t nUser, double dist)
 {
   std::ostringstream oss;
   oss << nUser << " UEs, distance " << dist << " m";
   return oss.str ();
 }
 
-LenaRrFfMacSchedulerTestCase::LenaRrFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
+LenaRrFfMacSchedulerTestCase::LenaRrFfMacSchedulerTestCase (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
   : TestCase (BuildNameString (nUser, dist)),              
     m_nUser (nUser),
     m_dist (dist),
--- a/src/lte/test/lte-test-rr-ff-mac-scheduler.h	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-rr-ff-mac-scheduler.h	Wed Jan 28 13:41:20 2015 +0100
@@ -40,14 +40,14 @@
 class LenaRrFfMacSchedulerTestCase : public TestCase
 {
 public:
-  LenaRrFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled);
+  LenaRrFfMacSchedulerTestCase (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, bool errorModelEnabled);
   virtual ~LenaRrFfMacSchedulerTestCase ();
 
 private:
   virtual void DoRun (void);
-  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
+  static std::string BuildNameString (uint16_t nUser, double dist);
   uint16_t m_nUser;
-  uint16_t m_dist;
+  double m_dist;
   double m_thrRefDl;
   double m_thrRefUl;
   bool m_errorModelEnabled;
--- a/src/lte/test/lte-test-tdbet-ff-mac-scheduler.cc	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-tdbet-ff-mac-scheduler.cc	Wed Jan 28 13:41:20 2015 +0100
@@ -145,9 +145,13 @@
   AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (6,20000,70166,22000,errorModel), TestCase::EXTENSIVE);
   AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (12,20000,35083,12000,errorModel), TestCase::EXTENSIVE);
 
+  // DOWNLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  // UPLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (1,100000,0,0,errorModel), TestCase::QUICK);
+
   // Test Case 2: fairness check
 
-  std::vector<uint16_t> dist;
+  std::vector<double> dist;
   dist.push_back (0);       // User 0 distance --> MCS 28
   dist.push_back (4800);    // User 1 distance --> MCS 22
   dist.push_back (6000);    // User 2 distance --> MCS 14
@@ -175,14 +179,14 @@
 
 
 std::string 
-LenaTdBetFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, uint16_t dist)
+LenaTdBetFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, double dist)
 {
   std::ostringstream oss;
   oss << nUser << " UEs, distance " << dist << " m";
   return oss.str ();
 }
 
-LenaTdBetFfMacSchedulerTestCase1::LenaTdBetFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
+LenaTdBetFfMacSchedulerTestCase1::LenaTdBetFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
   : TestCase (BuildNameString (nUser, dist)),
     m_nUser (nUser),
     m_dist (dist),
@@ -336,11 +340,11 @@
 
 
 std::string 
-LenaTdBetFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<uint16_t> dist)
+LenaTdBetFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<double> dist)
 {
   std::ostringstream oss;
   oss << "distances (m) = [ " ;
-  for (std::vector<uint16_t>::iterator it = dist.begin (); it != dist.end (); ++it)
+  for (std::vector<double>::iterator it = dist.begin (); it != dist.end (); ++it)
     {
       oss << *it << " ";
     }
@@ -349,7 +353,7 @@
 }
 
 
-LenaTdBetFfMacSchedulerTestCase2::LenaTdBetFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estAchievableRateDl, std::vector<uint32_t> estThrTdBetUl, bool errorModelEnabled)
+LenaTdBetFfMacSchedulerTestCase2::LenaTdBetFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> estAchievableRateDl, std::vector<uint32_t> estThrTdBetUl, bool errorModelEnabled)
   : TestCase (BuildNameString (dist.size (), dist)),
     m_nUser (dist.size ()),
     m_dist (dist),
--- a/src/lte/test/lte-test-tdbet-ff-mac-scheduler.h	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-tdbet-ff-mac-scheduler.h	Wed Jan 28 13:41:20 2015 +0100
@@ -42,14 +42,14 @@
 class LenaTdBetFfMacSchedulerTestCase1 : public TestCase
 {
 public:
-  LenaTdBetFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
+  LenaTdBetFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
   virtual ~LenaTdBetFfMacSchedulerTestCase1 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
+  static std::string BuildNameString (uint16_t nUser, double dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  uint16_t m_dist;
+  double m_dist;
   double m_thrRefDl;
   double m_thrRefUl;
   bool m_errorModelEnabled;
@@ -59,14 +59,14 @@
 class LenaTdBetFfMacSchedulerTestCase2 : public TestCase
 {
 public:
-  LenaTdBetFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> m_achievableRateDl, std::vector<uint32_t> estThrTdBetUl, bool m_errorModelEnabled);
+  LenaTdBetFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> m_achievableRateDl, std::vector<uint32_t> estThrTdBetUl, bool m_errorModelEnabled);
   virtual ~LenaTdBetFfMacSchedulerTestCase2 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, std::vector<uint16_t> dist);
+  static std::string BuildNameString (uint16_t nUser, std::vector<double> dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  std::vector<uint16_t> m_dist;
+  std::vector<double> m_dist;
   std::vector<uint32_t> m_achievableRateDl;
   std::vector<uint32_t> m_estThrTdBetUl;
   bool m_errorModelEnabled;
--- a/src/lte/test/lte-test-tdmt-ff-mac-scheduler.cc	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-tdmt-ff-mac-scheduler.cc	Wed Jan 28 13:41:20 2015 +0100
@@ -148,6 +148,9 @@
   AddTestCase (new LenaTdMtFfMacSchedulerTestCase (6,20000,421000,22000,errorModel), TestCase::EXTENSIVE);
   AddTestCase (new LenaTdMtFfMacSchedulerTestCase (12,20000,421000,12000,errorModel), TestCase::EXTENSIVE);
 
+  // DOWNLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  // UPLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (1,100000,0,0,errorModel), TestCase::QUICK);
 }
 
 static LenaTestTdMtFfMacSchedulerSuite lenaTestTdMtFfMacSchedulerSuite;
@@ -156,14 +159,14 @@
 // --------------- T E S T - C A S E ------------------------------
 
 std::string 
-LenaTdMtFfMacSchedulerTestCase::BuildNameString (uint16_t nUser, uint16_t dist)
+LenaTdMtFfMacSchedulerTestCase::BuildNameString (uint16_t nUser, double dist)
 {
   std::ostringstream oss;
   oss << nUser << " UEs, distance " << dist << " m";
   return oss.str ();
 }
 
-LenaTdMtFfMacSchedulerTestCase::LenaTdMtFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
+LenaTdMtFfMacSchedulerTestCase::LenaTdMtFfMacSchedulerTestCase (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
   : TestCase (BuildNameString (nUser, dist)),
     m_nUser (nUser),
     m_dist (dist),
--- a/src/lte/test/lte-test-tdmt-ff-mac-scheduler.h	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-tdmt-ff-mac-scheduler.h	Wed Jan 28 13:41:20 2015 +0100
@@ -42,14 +42,14 @@
 class LenaTdMtFfMacSchedulerTestCase : public TestCase
 {
 public:
-  LenaTdMtFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
+  LenaTdMtFfMacSchedulerTestCase (uint16_t nUser, double dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
   virtual ~LenaTdMtFfMacSchedulerTestCase ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
+  static std::string BuildNameString (uint16_t nUser, double dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  uint16_t m_dist;
+  double m_dist;
   double m_thrRefDl;
   double m_thrRefUl;
   bool m_errorModelEnabled;
--- a/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.cc	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.cc	Wed Jan 28 13:41:20 2015 +0100
@@ -157,13 +157,17 @@
   AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (6,10000,129166,67000,200,1,errorModel), TestCase::EXTENSIVE);
   //AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (12,10000,64583,32667,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
 
+  // DOWNLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  // UPLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (1,100000,0,0,200,1,errorModel), TestCase::QUICK);
+
   // Test Case 2: homogeneous flow test in TDTBFQ (different distance)
   // Traffic1 info
   //   UDP traffic: payload size = 100 bytes, interval = 1 ms
   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 132000 byte/rate 
   // Maximum throughput = 4 / ( 1/2196000 + 1/1383000 + 1/1191000 + 1/775000 ) = 1209000 byte/s
   // 132000 * 4 = 528000 < 1209000 -> estimated throughput in downlink = 132000 byte/sec
-  std::vector<uint16_t> dist1;
+  std::vector<double> dist1;
   dist1.push_back (0);       // User 0 distance --> MCS 28
   dist1.push_back (4800);    // User 1 distance --> MCS 22
   dist1.push_back (6000);    // User 2 distance --> MCS 20
@@ -185,7 +189,7 @@
   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 332000 byte/rate
   // Maximum throughput = 4 / ( 1/2196000 + 1/1383000 + 1/1191000 + 1/775000 ) = 1209000 byte/s
   // 332000 * 4 = 1328000 > 1209000 -> estimated throughput in downlink = 1209000 / 4 = 302500 byte/sec
-  std::vector<uint16_t> dist2;
+  std::vector<double> dist2;
   dist2.push_back (0);       // User 0 distance --> MCS 28
   dist2.push_back (4800);    // User 1 distance --> MCS 22
   dist2.push_back (6000);    // User 2 distance --> MCS 20
@@ -207,7 +211,7 @@
   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> [132000, 232000, 332000] byte/rate 
   // Maximum throughput = 3 / ( 1/2196000 + 1/1383000 + 1/1191000 ) = 1486666  byte/s
   // 132000 + 232000 + 332000 = 696000 < 1486666 -> estimated throughput in downlink = [132000, 232000, 332000] byte/sec
-  std::vector<uint16_t> dist3;
+  std::vector<double> dist3;
   dist3.push_back (0);    // User 0 distance --> MCS 28
   dist3.push_back (4800);    // User 1 distance --> MCS 22
   dist3.push_back (6000);    // User 2 distance --> MCS 20
@@ -229,7 +233,7 @@
 
 
 std::string 
-LenaTdTbfqFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, uint16_t dist)
+LenaTdTbfqFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, double dist)
 {
   std::ostringstream oss;
   oss << nUser << " UEs, distance " << dist << " m";
@@ -237,7 +241,7 @@
 }
 
 
-LenaTdTbfqFfMacSchedulerTestCase1::LenaTdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
+LenaTdTbfqFfMacSchedulerTestCase1::LenaTdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
   : TestCase (BuildNameString (nUser, dist)),
     m_nUser (nUser),
     m_dist (dist),
@@ -473,11 +477,11 @@
 
 
 std::string 
-LenaTdTbfqFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<uint16_t> dist)
+LenaTdTbfqFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<double> dist)
 {
   std::ostringstream oss;
   oss << "distances (m) = [ " ;
-  for (std::vector<uint16_t>::iterator it = dist.begin (); it != dist.end (); ++it)
+  for (std::vector<double>::iterator it = dist.begin (); it != dist.end (); ++it)
     {
       oss << *it << " ";
     }
@@ -486,7 +490,7 @@
 }
 
 
-LenaTdTbfqFfMacSchedulerTestCase2::LenaTdTbfqFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estThrTdTbfqDl, std::vector<uint16_t> packetSize, uint16_t interval,bool errorModelEnabled)
+LenaTdTbfqFfMacSchedulerTestCase2::LenaTdTbfqFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> estThrTdTbfqDl, std::vector<uint16_t> packetSize, uint16_t interval,bool errorModelEnabled)
   : TestCase (BuildNameString (dist.size (), dist)),
     m_nUser (dist.size ()),
     m_dist (dist),
--- a/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.h	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.h	Wed Jan 28 13:41:20 2015 +0100
@@ -42,14 +42,14 @@
 class LenaTdTbfqFfMacSchedulerTestCase1 : public TestCase
 {
 public:
-  LenaTdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
+  LenaTdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
   virtual ~LenaTdTbfqFfMacSchedulerTestCase1 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
+  static std::string BuildNameString (uint16_t nUser, double dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  uint16_t m_dist;
+  double m_dist;
   uint16_t m_packetSize;  // byte
   uint16_t m_interval;    // ms
   double m_thrRefDl;
@@ -61,14 +61,14 @@
 class LenaTdTbfqFfMacSchedulerTestCase2 : public TestCase
 {
 public:
-  LenaTdTbfqFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estThrTdTbfqDl, std::vector<uint16_t> packetSize, uint16_t interval, bool  errorModelEnabled);
+  LenaTdTbfqFfMacSchedulerTestCase2 (std::vector<double> dist, std::vector<uint32_t> estThrTdTbfqDl, std::vector<uint16_t> packetSize, uint16_t interval, bool  errorModelEnabled);
   virtual ~LenaTdTbfqFfMacSchedulerTestCase2 ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, std::vector<uint16_t> dist);
+  static std::string BuildNameString (uint16_t nUser, std::vector<double> dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  std::vector<uint16_t> m_dist;
+  std::vector<double> m_dist;
   std::vector<uint16_t> m_packetSize;  // byte
   uint16_t m_interval;    // ms
   std::vector<uint32_t> m_estThrTdTbfqDl;
--- a/src/lte/test/lte-test-tta-ff-mac-scheduler.cc	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-tta-ff-mac-scheduler.cc	Wed Jan 28 13:41:20 2015 +0100
@@ -151,6 +151,9 @@
   AddTestCase (new LenaTtaFfMacSchedulerTestCase (6,20000,421000,22000,errorModel), TestCase::EXTENSIVE);
   AddTestCase (new LenaTtaFfMacSchedulerTestCase (12,20000,421000,12000,errorModel), TestCase::EXTENSIVE);
 
+  // DOWNLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  // UPLINK - DISTANCE 100000 -> CQI == 0 -> out of range -> 0 bytes/sec
+  AddTestCase (new LenaTtaFfMacSchedulerTestCase (1,100000,0,0,errorModel), TestCase::QUICK);
 }
 
 static LenaTestTtaFfMacSchedulerSuite lenaTestTtaFfMacSchedulerSuite;
@@ -159,14 +162,14 @@
 // --------------- T E S T - C A S E ------------------------------
 
 std::string 
-LenaTtaFfMacSchedulerTestCase::BuildNameString (uint16_t nUser, uint16_t dist)
+LenaTtaFfMacSchedulerTestCase::BuildNameString (uint16_t nUser, double dist)
 {
   std::ostringstream oss;
   oss << nUser << " UEs, distance " << dist << " m";
   return oss.str ();
 }
 
-LenaTtaFfMacSchedulerTestCase::LenaTtaFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
+LenaTtaFfMacSchedulerTestCase::LenaTtaFfMacSchedulerTestCase (uint16_t nUser, double dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
   : TestCase (BuildNameString (nUser, dist)),
     m_nUser (nUser),
     m_dist (dist),
--- a/src/lte/test/lte-test-tta-ff-mac-scheduler.h	Wed Jan 28 12:18:20 2015 +0100
+++ b/src/lte/test/lte-test-tta-ff-mac-scheduler.h	Wed Jan 28 13:41:20 2015 +0100
@@ -42,14 +42,14 @@
 class LenaTtaFfMacSchedulerTestCase : public TestCase
 {
 public:
-  LenaTtaFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
+  LenaTtaFfMacSchedulerTestCase (uint16_t nUser, double dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
   virtual ~LenaTtaFfMacSchedulerTestCase ();
 
 private:
-  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
+  static std::string BuildNameString (uint16_t nUser, double dist);
   virtual void DoRun (void);
   uint16_t m_nUser;
-  uint16_t m_dist;
+  double m_dist;
   double m_thrRefDl;
   double m_thrRefUl;
   bool m_errorModelEnabled;