       XCTAssert(total == self.outerloopcount*self.innerloopcount, "Incorrect merge in \(__FUNCTION__)")
     }
   }
+
+  func testPerformanceMergeSelectUnbuffered()
+  {
+    self.measureBlock() {
+      var chans = [Receiver<Int>]()
+      for i in 0..<self.outerloopcount
+      {
+        var (tx, rx) = Channel<Int>.Make(0)
+        async {
+          for j in 1...self.innerloopcount { tx <- j }
+          tx.close()
+        }
+        chans.append(rx)
+      }
+
+      let c = mergeSelect(chans)
+
+      var total = 0
+      for _ in c
+      {
+        total += 1
+      }
+
+      XCTAssert(total == self.outerloopcount*self.innerloopcount, "Incorrect merge in \(__FUNCTION__)")
+    }
+  }
 }

      XCTAssert(total == self.outerloopcount*self.innerloopcount, "Incorrect merge in \(__FUNCTION__)")
    }
  }
  
  func testPerformanceDispatchApplyMergeUnbuffered()
  {
    self.measureBlock() {

      XCTAssert(total == self.outerloopcount*self.innerloopcount, "Incorrect merge in \(__FUNCTION__)")
    }
  }

  func testPerformanceRoundRobinMergeUnbuffered()
  {
    self.measureBlock() {
