nunit-core team mailing list archive
-
nunit-core team
-
Mailing list archive
-
Message #02215
[Bug 890129] Re: DelayedConstraint doesn't appear to poll properties of objects
** Changed in: nunit-3.0
Status: Triaged => In Progress
--
You received this bug notification because you are a member of NUnit
Core Developers, which is the registrant for NUnit Framework.
https://bugs.launchpad.net/bugs/890129
Title:
DelayedConstraint doesn't appear to poll properties of objects
Status in NUnit Test Framework:
In Progress
Status in NUnit V2 Test Framework:
Fix Released
Bug description:
Using 2.5.10.11092.
I've just been exploring the new (to me) fluent/constraints syntax, specifically the After() constraint and am very impressed.
I've already learnt not to pass by value (!), however, I thought that a pass-by-reference should be ok.
For example:
var worker = new BackgroundWorker();
var list = new List<int>();
worker.RunWorkerCompleted += delegate { list.Add(1); };
worker.DoWork += delegate { Thread.Sleep(1); };
worker.RunWorkerAsync();
Assert.That(list, Has.Count.EqualTo(1).After(5000, 100));
The documentation states that its "intended use is with delegates and references", so I'd expect the 'list' object reference to be polled, and after about 1 second, for the constraint to pass.
However, I have to wait for the full 5 seconds before the test succeeds.
The obvious work around is to convert the 'list' object to a delegate:
Assert.That(() => list, Has.Count.EqualTo(1).After(5000, 100));
This works fine, and still look ok (to me).
However, I wondered if this is deliberate or unavoidable behaviour or
just a bug...
To manage notifications about this bug go to:
https://bugs.launchpad.net/nunit-3.0/+bug/890129/+subscriptions
References