コード例 #1
0
        public void ThenTheVectorShouldBeDisplayed(int vector)
        {
            SeleniumPage.Should().BeFound()
            .Then().VectorTable(vector)
            .Should().BeFound();

            var vectorRows = vector switch
            {
                3 => new ThirdVector().VectorRows,
                4 => new FourthVector().VectorRows,
                5 => new FifthVector().VectorRows,
                _ => throw new ArgumentOutOfRangeException(nameof(vector), vector,
                                                           $"{vector} is not a known value")
            };

            if (vectorRows == null)
            {
                return;
            }
            foreach (var vectorRow in vectorRows)
            {
                var vectorBarGraph = SeleniumPage.VectorTable(vector)
                                     .Should().BeFound().Then()
                                     .VectorBarGraphs.SingleOrDefault(x => x.Title.Text == vectorRow.Title);

                vectorBarGraph.Should().NotBeNull();
                vectorBarGraph.Should().BeFound();

                Debug.Assert(vectorBarGraph != null, nameof(vectorBarGraph) + " != null");
                var tuples = new List <(SeleniumElement, string, int?)>
                {
                    (vectorBarGraph.Row627, "6-27", vectorRow.DistanceOf627),
                    (vectorBarGraph.Row630, "6-30", vectorRow.DistanceOf630),
                    (vectorBarGraph.Row6Z13, "6Z13", vectorRow.DistanceOf6Z13),
                    (vectorBarGraph.Row6Z23, "6Z23", vectorRow.DistanceOf6Z23),
                    (vectorBarGraph.Row6Z49, "6Z49", vectorRow.DistanceOf6Z49),
                    (vectorBarGraph.Row6Z50, "6Z50", vectorRow.DistanceOf6Z50)
                };

                foreach (var tuple in tuples)
                {
                    var(row, expectedText, expectedDistance) = tuple;
                    if (!expectedDistance.HasValue || expectedDistance <= 0)
                    {
                        continue;
                    }

                    row.Text.Should().BeEquivalentTo(expectedText);
                    row.GetAttribute("style")
                    .Should().Contain($"width: {expectedDistance * 25}%");
                }

                vectorBarGraph.DistanceKeys.Rows.Single()
                .Columns.Select(x => x.Text)
                .Should().BeEquivalentTo(Enumerable.Range(0, 5)
                                         .Select(x => x.ToString(CultureInfo.InvariantCulture)));
            }
        }
    }