Ejemplo n.º 1
0
        public static T Measure <T>(ActionTags slot, Func <T> action, bool warnIfOperationTakesTooLong = false)
        {
            Contract.Requires(action != null);

            var now     = DateTime.Now;
            var result  = action();
            var elapsed = DateTime.Now - now;
            var count   = 0;

#if TRACEPERFORMANCE
            if (warnIfOperationTakesTooLong && elapsed > LongSingleOperation)
            {
                Console.WriteLine("Time performing action #{0}: {1} (invocationCounter = {2})", slot, elapsed, invocationCounter);
            }
#endif
            lock (performanceCounters)
            {
                Tuple <int, TimeSpan> prev;
                if (performanceCounters.TryGetValue(slot, out prev))
                {
                    count    = prev.Item1;
                    elapsed += prev.Item2;
                }

                performanceCounters[slot] = new Tuple <int, TimeSpan>(count + 1, elapsed);
            }
            invocationCounter++;
            return(result);
        }
Ejemplo n.º 2
0
        public void FindBestGivenTag_WhenTagIsNotFound_ShouldThrow()
        {
            // arrange
            var givenTags = ImmutableDictionary.Create <string, int>()
                            .Add("tag1", 1)
                            .Add("tag2", 2)
                            .Add("tag3", 3);
            var sut = new ActionTags <string>(ImmutableDictionary <string, int> .Empty, givenTags);

            // act and assert
            Assert.Throws <KeyNotFoundException>(() => sut.FindBestGivenTag(new[] { "tag4" }));
        }
Ejemplo n.º 3
0
        public void FindBestGivenTag_ShouldReturnCorrectValue(string[] tags, string expected)
        {
            // arrange
            var givenTags = ImmutableDictionary.Create <string, int>()
                            .Add("tag1", 1)
                            .Add("tag2", 2)
                            .Add("tag3", 3);
            var sut = new ActionTags <string>(ImmutableDictionary <string, int> .Empty, givenTags);
            // act
            var actual = sut.FindBestGivenTag(tags);

            // assert
            Assert.Equal(expected, actual);
        }
Ejemplo n.º 4
0
        public void AddFirstPriorityGivenTag_ShouldAddTheTagWithTheHighestPriority()
        {
            // arrange
            var givenTags = ImmutableDictionary.Create <string, int>()
                            .Add("tag1", -1)
                            .Add("tag2", 0)
                            .Add("tag3", 1);
            var sut = new ActionTags <string>(ImmutableDictionary <string, int> .Empty, givenTags);
            // act
            var actual = sut.AddFirstPriorityGivenTag("tag4").GivenTags.OrderBy(k => k.Value);
            // assert
            var expected = givenTags.Add("tag4", -2).OrderBy(k => k.Value);

            Assert.Equal(actual, expected);
        }
Ejemplo n.º 5
0
        public void Before()
        {
            var screenshotName = Context.ScenarioInfo.Title;

#if DEBUG
            var delay = IsLiveUnitTesting ? TimeSpan.Zero : TimeSpan.FromSeconds(1);
#else
            var delay = TimeSpan.Zero;
#endif
            if (IsLiveUnitTesting)
            {
                delay = TimeSpan.Zero;
            }

            var          actorSource = new Actor("John");
            IActorFacade actor       = actorSource;
            if (TestLevel == TestLevel.UI)
            {
                var driver = CreateWebDriver();
                actor = actorSource.WithSeleniumReporting(
                    new SeleniumReportingConfiguration(
                        GetScreenshotsPath(),
                        screenshotName)
                    .AddTextObservers(new DebugObserver())
                    .WithCanNotify(new CanNotify())
                    .WithScreenshotPng()
                    .WithTakeScreenshotStrategy(new TakeScreenshotOnErrorStrategy()),
                    out var seleniumReporter)
                        .HighlightTargets()
                        .SlowSelenium(delay)
                        .CanUse(seleniumReporter)
                        .CanUse(WebBrowser.With(driver));

                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                Context.Set(driver);
            }
            // Indicates what level of automation is supported by the current scenario
            var levels = new[] { TestLevel.UI, TestLevel.Api }.Where(l => l >= TestLevel).ToArray();
            actor = actor.CanUse <IActionTags <TestLevel> >(ActionTags.Create(levels))
                    .CanUse(ClientFactory());

            Context.Set(actor);

            if (TestLevel == TestLevel.UI)
            {
                actor.Given(Open.TheApplication());
            }
        }
Ejemplo n.º 6
0
        public void Create_ShouldReturnActionTagsWitCorrectPriority()
        {
            // act
            var actual = ActionTags.Create("tag1", "tag2", "tag3");
            // assert
            var expectedWhenTags = new Dictionary <string, int>()
            {
                { "tag1", 0 },
                { "tag2", 1 },
                { "tag3", 2 },
            }.OrderBy(k => k.Key);
            var expectedGivenTags = new Dictionary <string, int>()
            {
                { "tag1", 2 },
                { "tag2", 1 },
                { "tag3", 0 },
            }.OrderBy(k => k.Key);

            Assert.Equal(actual.WhenTags.OrderBy(k => k.Key), expectedWhenTags);
            Assert.Equal(actual.GivenTags.OrderBy(k => k.Key), expectedGivenTags);
        }