public void Rules_within_a_ValidationPlan_can_use_APM_signatures_and_run_synchronously() { var hasAwesomeTag = Validate.Async <string>( setup: url => { var request = new ApmOperation <string, string>(s => Task <string> .Factory.StartNew(() => "<div>" + s + "</div>")); var tcs = new TaskCompletionSource <string>(); Task <string> .Factory .FromAsync(request.BeginInvoke, request.EndInvoke, url, state: null) .ContinueWith( t => tcs.Complete(t, () => t.Result)); return(tcs.Task); }, validate: html => html.As("page").Contains("<awesome>")) .WithErrorMessage("{page} is missing the <awesome> tag!"); var plan = new ValidationPlan <string> { isValidHttpUrl, hasAwesomeTag.When(isValidHttpUrl) }; var result = plan.Execute("http://microsoft.com"); Console.WriteLine(result); // TODO: (Rules_within_a_ValidationPlan_can_use_APM_signatures_and_run_synchronously) Assert.Fail("Test not written"); }
public void Rules_within_a_ValidationPlan_can_use_APM_signatures_and_run_asynchronously() { var hasAwesomeTag = Validate.Async <string>( setup: url => { var request = new ApmOperation <string, string>(s => Task <string> .Factory.StartNew(() => "<div>" + s + "</div>")); var tcs = new TaskCompletionSource <string>(); Task <string> .Factory .FromAsync(request.BeginInvoke, request.EndInvoke, url, state: null, creationOptions: TaskCreationOptions.AttachedToParent) .ContinueWith( t => tcs.Complete(t, () => t.Result)); return(tcs.Task); }, validate: html => html.As("page").Contains("<awesome>")) .WithErrorMessage("{page} is missing the <awesome> tag!"); var plan = new ValidationPlan <string> { isValidHttpUrl, hasAwesomeTag.When(isValidHttpUrl) }; var task = plan.ExecuteAsync("http://google.com"); task.Wait(); var result = task.Result; Console.WriteLine(result); // TODO: (Rules_within_a_ValidationPlan_can_use_APM_signatures_and_run_asynchronously) Assert.That(result.Failures.Any(f => f.Message == "http://google.com is missing the <awesome> tag!")); }