X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem%2FTest%2FSystem.Collections.Concurrent%2FBlockingCollectionTests.cs;h=bf41aeee21af96b1c098b5bb30e596f11cdebb69;hb=0b4bc83e79ca3057693089dc7f926004bb9d9592;hp=9f0e9b0190da47d2bb9bf8e4783eab871b46cdde;hpb=e00cbf2c426fe8309b377a50de503dfec163b15d;p=mono.git diff --git a/mcs/class/System/Test/System.Collections.Concurrent/BlockingCollectionTests.cs b/mcs/class/System/Test/System.Collections.Concurrent/BlockingCollectionTests.cs index 9f0e9b0190d..bf41aeee21a 100644 --- a/mcs/class/System/Test/System.Collections.Concurrent/BlockingCollectionTests.cs +++ b/mcs/class/System/Test/System.Collections.Concurrent/BlockingCollectionTests.cs @@ -237,7 +237,7 @@ namespace MonoTests.System.Collections.Concurrent t = Task.Factory.StartNew (() => { try { return BlockingCollection.TakeFromAny (arr, out res, cts.Token); - } catch (OperationCanceledException WE_GOT_CANCELED) { + } catch (OperationCanceledException) { res = "canceled"; return -10; } @@ -247,6 +247,40 @@ namespace MonoTests.System.Collections.Concurrent Assert.AreEqual (-10, t.Result, "#5"); Assert.AreEqual ("canceled", res, "#6"); } + + [Test, ExpectedException (typeof(OperationCanceledException))] + public void BoundedAddLimit () + { + const int elNumber = 5; + + var c = new BlockingCollection (elNumber); + var token = new CancellationTokenSource (100); + + for (var i = 0; i < elNumber + 1; i++) { + c.Add (1, token.Token); + } + } + + [Test] + public void AddAnyCancellable () + { + const int elNumber = 5; + const int colNumber = 5; + + var cols = new BlockingCollection [colNumber]; + for (var i = 0; i < colNumber; i++) { + cols[i] = new BlockingCollection (elNumber); + } + + var token = new CancellationTokenSource (100); + for (var i = 0; i < colNumber * elNumber; i++) { + BlockingCollection .AddToAny (cols, 1, token.Token); + } + + foreach (var col in cols) { + Assert.AreEqual (elNumber, col.Count); + } + } } } #endif