/// <summary> /// Gets a checker by checker kind, test site, and checker config. /// </summary> /// <param name="kind">The checker kind</param> /// <param name="testSite">The test site</param> /// <param name="checkerConfig">The checker configuration</param> /// <returns>The checker</returns> public static IChecker GetChecker(CheckerKinds kind, ITestSite testSite, ICheckerConfig checkerConfig) { IChecker checker = null; switch (kind) { case CheckerKinds.AssertChecker: checker = new DefaultAssertChecker(testSite, checkerConfig); break; case CheckerKinds.AssumeChecker: checker = new DefaultAssumeChecker(testSite, checkerConfig); break; case CheckerKinds.DebugChecker: checker = new DefaultDebugChecker(testSite, checkerConfig); break; default: throw new InvalidOperationException("Checker kind is not supported: " + kind.ToString()); } if (null == checker) { throw new InvalidOperationException( string.Format("Cannot create {0} checker instance.", kind.ToString())); } return(checker); }
/// <summary> /// Constructs an instance of DefaultChecker. /// </summary> /// <param name="testSite">The test site to be bound.</param> /// <param name="checkerName">The name of the current checker (Assert, Assume or Debug).</param> /// <param name="failedLogKind">The log entry kind for logging a failed check.</param> /// <param name="succeededLogKind">The log entry kind for logging a succeeded check.</param> /// <param name="inconclusiveLogKind">The log entry kind for logging an inconclusive check.</param> /// <param name="checkerConfig">The checker confuguration to crate async error processor.</param> protected DefaultChecker( ITestSite testSite, string checkerName, LogEntryKind failedLogKind, LogEntryKind succeededLogKind, LogEntryKind inconclusiveLogKind, ICheckerConfig checkerConfig) { this.testSite = testSite; this.checkerName = checkerName; this.failedLogKind = failedLogKind; this.succeededLogKind = succeededLogKind; this.inconclusiveLogKind = inconclusiveLogKind; this.exceptionFilter = testSite.Properties[ConfigurationPropertyName.ExceptionFilter]; if (checkerConfig == null) { throw new ArgumentNullException("checkerConfig"); } this.asyncErrorProcessor = new AsynchronousErrorProcessor( checkerConfig.AssertFailuresBeforeThrowException, checkerConfig.MaxFailuresToDisplayPerTestCase); testSite.TestStarted += new EventHandler <TestStartFinishEventArgs>( delegate(object sender, TestStartFinishEventArgs e) { asyncErrorProcessor.Initialize(); } ); testSite.TestFinished += new EventHandler <TestStartFinishEventArgs>( delegate(object sender, TestStartFinishEventArgs e) { asyncErrorProcessor.Cleanup(); } ); if (null != testSite.Properties.Get("ExceptionalRequirements")) { var reqList = testSite.Properties.Get("ExceptionalRequirements").Split(','); foreach (string req in reqList) { this.exceptionalRequirements.Add(req.Trim()); } } }
/// <summary> /// Constructs a new instance of DefaultAssumeChecker. /// </summary> /// <param name="testSite">The test site which the checker is hosted on.</param> /// <param name="checkerConfig">The configuration to checker.</param> public DefaultAssumeChecker(ITestSite testSite, ICheckerConfig checkerConfig) : base(testSite, "Assume", LogEntryKind.CheckFailed, LogEntryKind.CheckSucceeded, LogEntryKind.CheckInconclusive, checkerConfig) { }
/// <summary> /// Constructs a new instance of DefaultDebugChecker. /// </summary> /// <param name="testSite">The test site which the checker is hosted on.</param> /// <param name="checkerConfig">The configuration to checker.</param> public DefaultDebugChecker(ITestSite testSite, ICheckerConfig checkerConfig) : base(testSite, "Debug", LogEntryKind.Debug, LogEntryKind.Debug, LogEntryKind.Debug, checkerConfig) { }