Best Gherkin-dotnet code snippet using Gherkin.Ast.TableRow.TableRow
ScenarioOutlineExecutorTests.cs
Source:ScenarioOutlineExecutorTests.cs
...349 var output = new Mock<ITestOutputHelper>();350 featureInstance.InternalOutput = output.Object;351 _featureFileRepository.Setup(r => r.GetByFilePath($"{nameof(FeatureWithDataTableScenarioStep)}.feature"))352 .Returns(new FeatureFile(FeatureWithDataTableScenarioStep.CreateGherkinDocument(scenarioName,353 new Gherkin.Ast.DataTable(new Gherkin.Ast.TableRow[]354 {355 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]356 {357 new Gherkin.Ast.TableCell(null, "First argument"),358 new Gherkin.Ast.TableCell(null, "Second argument"),359 new Gherkin.Ast.TableCell(null, "Result"),360 }),361 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]362 {363 new Gherkin.Ast.TableCell(null, "1"),364 new Gherkin.Ast.TableCell(null, "2"),365 new Gherkin.Ast.TableCell(null, "3"),366 }),367 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]368 {369 new Gherkin.Ast.TableCell(null, "a"),370 new Gherkin.Ast.TableCell(null, "b"),371 new Gherkin.Ast.TableCell(null, "c"),372 })373 }))))374 .Verifiable();375 //act.376 await _sut.ExecuteScenarioOutlineAsync(featureInstance, scenarioName, exampleName, exampleRowIndex);377 //assert.378 _featureFileRepository.Verify();379 Assert.NotNull(featureInstance.ReceivedDataTable);380 Assert.Equal(3, featureInstance.ReceivedDataTable.Rows.Count());381 AssertDataTableCell(0, 0, "First argument");382 AssertDataTableCell(0, 1, "Second argument");383 AssertDataTableCell(0, 2, "Result");384 AssertDataTableCell(1, 0, "1");385 AssertDataTableCell(1, 1, "2");386 AssertDataTableCell(1, 2, "3");387 AssertDataTableCell(2, 0, "a");388 AssertDataTableCell(2, 1, "b");389 AssertDataTableCell(2, 2, "c");390 void AssertDataTableCell(int rowIndex, int cellIndex, string value)391 {392 Assert.True(featureInstance.ReceivedDataTable.Rows.Count() > rowIndex);393 Assert.NotNull(featureInstance.ReceivedDataTable.Rows.ElementAt(rowIndex));394 Assert.True(featureInstance.ReceivedDataTable.Rows.ElementAt(rowIndex).Cells.Count() > cellIndex);395 Assert.NotNull(featureInstance.ReceivedDataTable.Rows.ElementAt(rowIndex).Cells.ElementAt(cellIndex));396 Assert.Equal("First argument", featureInstance.ReceivedDataTable.Rows.ElementAt(0).Cells.ElementAt(0).Value);397 }398 }399 private sealed class FeatureWithDataTableScenarioStep : Feature400 {401 public Gherkin.Ast.DataTable ReceivedDataTable { get; private set; }402 public const string Steptext = @"Step text 1212121";403 [Given(Steptext)]404 public void When_DataTable_Is_Expected(Gherkin.Ast.DataTable dataTable)405 {406 ReceivedDataTable = dataTable;407 }408 public static Gherkin.Ast.GherkinDocument CreateGherkinDocument(409 string outlineName,410 Gherkin.Ast.StepArgument stepArgument = null)411 {412 return new Gherkin.Ast.GherkinDocument(413 new Gherkin.Ast.Feature(new Gherkin.Ast.Tag[0], null, null, null, null, null, new Gherkin.Ast.ScenarioDefinition[]414 {415 new Gherkin.Ast.ScenarioOutline(416 new Gherkin.Ast.Tag[0],417 null,418 null,419 outlineName,420 null,421 new Gherkin.Ast.Step[]422 {423 new Gherkin.Ast.Step(null, "Given", Steptext, stepArgument)424 },425 new Gherkin.Ast.Examples[]426 {427 new Gherkin.Ast.Examples(null, null, null, "", null,428 new Gherkin.Ast.TableRow(null,429 new Gherkin.Ast.TableCell[]430 {431 new Gherkin.Ast.TableCell(null, "a"),432 new Gherkin.Ast.TableCell(null, "b"),433 new Gherkin.Ast.TableCell(null, "sum"),434 }),435 new Gherkin.Ast.TableRow[]436 {437 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]438 {439 new Gherkin.Ast.TableCell(null, "0"),440 new Gherkin.Ast.TableCell(null, "1"),441 new Gherkin.Ast.TableCell(null, "1")442 }),443 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]444 {445 new Gherkin.Ast.TableCell(null, "1"),446 new Gherkin.Ast.TableCell(null, "9"),447 new Gherkin.Ast.TableCell(null, "10")448 })449 }),450 new Gherkin.Ast.Examples(null, null, null, "of bigger numbers", null,451 new Gherkin.Ast.TableRow(null,452 new Gherkin.Ast.TableCell[]453 {454 new Gherkin.Ast.TableCell(null, "a"),455 new Gherkin.Ast.TableCell(null, "b"),456 new Gherkin.Ast.TableCell(null, "sum"),457 }),458 new Gherkin.Ast.TableRow[]459 {460 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]461 {462 new Gherkin.Ast.TableCell(null, "99"),463 new Gherkin.Ast.TableCell(null, "1"),464 new Gherkin.Ast.TableCell(null, "100")465 }),466 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]467 {468 new Gherkin.Ast.TableCell(null, "100"),469 new Gherkin.Ast.TableCell(null, "200"),470 new Gherkin.Ast.TableCell(null, "300")471 })472 }),473 new Gherkin.Ast.Examples(null, null, null, "of large numbers", null,474 new Gherkin.Ast.TableRow(null,475 new Gherkin.Ast.TableCell[]476 {477 new Gherkin.Ast.TableCell(null, "a"),478 new Gherkin.Ast.TableCell(null, "b"),479 new Gherkin.Ast.TableCell(null, "sum"),480 }),481 new Gherkin.Ast.TableRow[]482 {483 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]484 {485 new Gherkin.Ast.TableCell(null, "999"),486 new Gherkin.Ast.TableCell(null, "1"),487 new Gherkin.Ast.TableCell(null, "1000")488 }),489 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]490 {491 new Gherkin.Ast.TableCell(null, "9999"),492 new Gherkin.Ast.TableCell(null, "1"),493 new Gherkin.Ast.TableCell(null, "10000")494 })495 })496 })497 }),498 new Gherkin.Ast.Comment[0]);499 }500 }501 [Theory]502 [InlineData("", 0)]503 [InlineData("", 1)]504 [InlineData("of bigger numbers", 0)]505 [InlineData("of bigger numbers", 1)]506 [InlineData("of large numbers", 0)]507 [InlineData("of large numbers", 1)]508 public async Task ExecuteScenarioOutlineAsync_Executes_ScenarioStep_With_DocString(509 string exampleName,510 int exampleRowIndex)511 {512 //arrange.513 var scenarioName = "scenario123";514 var featureInstance = new FeatureWithDocStringScenarioStep();515 var output = new Mock<ITestOutputHelper>();516 featureInstance.InternalOutput = output.Object;517 var docStringContent = "some content" + Environment.NewLine +518"+++" + Environment.NewLine +519"with multi lines" + Environment.NewLine +520"---" + Environment.NewLine +521"in it";522 _featureFileRepository.Setup(r => r.GetByFilePath($"{nameof(FeatureWithDocStringScenarioStep)}.feature"))523 .Returns(new FeatureFile(FeatureWithDocStringScenarioStep.CreateGherkinDocument(scenarioName,524 new Gherkin.Ast.DocString(null, null, docStringContent))))525 .Verifiable();526 //act.527 await _sut.ExecuteScenarioOutlineAsync(featureInstance, scenarioName, exampleName, exampleRowIndex);528 //assert.529 _featureFileRepository.Verify();530 Assert.NotNull(featureInstance.ReceivedDocString);531 Assert.Equal(docStringContent, featureInstance.ReceivedDocString.Content);532 }533 private sealed class FeatureWithDocStringScenarioStep : Feature534 {535 public Gherkin.Ast.DocString ReceivedDocString { get; private set; }536 public const string Steptext = @"Step text 1212121";537 [Given(Steptext)]538 public void When_DocString_Is_Expected(Gherkin.Ast.DocString docString)539 {540 ReceivedDocString = docString;541 }542 public static Gherkin.Ast.GherkinDocument CreateGherkinDocument(543 string outlineName,544 Gherkin.Ast.StepArgument stepArgument = null)545 {546 return new Gherkin.Ast.GherkinDocument(547 new Gherkin.Ast.Feature(new Gherkin.Ast.Tag[0], null, null, null, null, null, new Gherkin.Ast.ScenarioDefinition[]548 {549 new Gherkin.Ast.ScenarioOutline(550 new Gherkin.Ast.Tag[0],551 null,552 null,553 outlineName,554 null,555 new Gherkin.Ast.Step[]556 {557 new Gherkin.Ast.Step(null, "Given", Steptext, stepArgument)558 },559 new Gherkin.Ast.Examples[]560 {561 new Gherkin.Ast.Examples(null, null, null, "", null,562 new Gherkin.Ast.TableRow(null,563 new Gherkin.Ast.TableCell[]564 {565 new Gherkin.Ast.TableCell(null, "a"),566 new Gherkin.Ast.TableCell(null, "b"),567 new Gherkin.Ast.TableCell(null, "sum"),568 }),569 new Gherkin.Ast.TableRow[]570 {571 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]572 {573 new Gherkin.Ast.TableCell(null, "0"),574 new Gherkin.Ast.TableCell(null, "1"),575 new Gherkin.Ast.TableCell(null, "1")576 }),577 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]578 {579 new Gherkin.Ast.TableCell(null, "1"),580 new Gherkin.Ast.TableCell(null, "9"),581 new Gherkin.Ast.TableCell(null, "10")582 })583 }),584 new Gherkin.Ast.Examples(null, null, null, "of bigger numbers", null,585 new Gherkin.Ast.TableRow(null,586 new Gherkin.Ast.TableCell[]587 {588 new Gherkin.Ast.TableCell(null, "a"),589 new Gherkin.Ast.TableCell(null, "b"),590 new Gherkin.Ast.TableCell(null, "sum"),591 }),592 new Gherkin.Ast.TableRow[]593 {594 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]595 {596 new Gherkin.Ast.TableCell(null, "99"),597 new Gherkin.Ast.TableCell(null, "1"),598 new Gherkin.Ast.TableCell(null, "100")599 }),600 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]601 {602 new Gherkin.Ast.TableCell(null, "100"),603 new Gherkin.Ast.TableCell(null, "200"),604 new Gherkin.Ast.TableCell(null, "300")605 })606 }),607 new Gherkin.Ast.Examples(null, null, null, "of large numbers", null,608 new Gherkin.Ast.TableRow(null,609 new Gherkin.Ast.TableCell[]610 {611 new Gherkin.Ast.TableCell(null, "a"),612 new Gherkin.Ast.TableCell(null, "b"),613 new Gherkin.Ast.TableCell(null, "sum"),614 }),615 new Gherkin.Ast.TableRow[]616 {617 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]618 {619 new Gherkin.Ast.TableCell(null, "999"),620 new Gherkin.Ast.TableCell(null, "1"),621 new Gherkin.Ast.TableCell(null, "1000")622 }),623 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]624 {625 new Gherkin.Ast.TableCell(null, "9999"),626 new Gherkin.Ast.TableCell(null, "1"),627 new Gherkin.Ast.TableCell(null, "10000")628 })629 })630 })631 }),632 new Gherkin.Ast.Comment[0]);633 }634 }635 }636}...
AstBuilder.cs
Source:AstBuilder.cs
...74 return CreateDocString(GetLocation(separatorToken), contentType, content, node);75 }76 case RuleType.DataTable:77 {78 var rows = GetTableRows(node);79 return CreateDataTable(rows, node);80 }81 case RuleType.Background:82 {83 var backgroundLine = node.GetToken(TokenType.BackgroundLine);84 var description = GetDescription(node);85 var steps = GetSteps(node);86 return CreateBackground(GetLocation(backgroundLine), backgroundLine.MatchedKeyword, backgroundLine.MatchedText, description, steps, node);87 }88 case RuleType.ScenarioDefinition:89 {90 var tags = GetTags(node);9192 var scenarioNode = node.GetSingle<AstNode>(RuleType.Scenario);93 var scenarioLine = scenarioNode.GetToken(TokenType.ScenarioLine);9495 var description = GetDescription(scenarioNode);96 var steps = GetSteps(scenarioNode);97 var examples = scenarioNode.GetItems<Examples>(RuleType.ExamplesDefinition).ToArray();98 return CreateScenario(tags, GetLocation(scenarioLine), scenarioLine.MatchedKeyword, scenarioLine.MatchedText, description, steps, examples, node);99 }100 case RuleType.ExamplesDefinition:101 {102 var tags = GetTags(node);103 var examplesNode = node.GetSingle<AstNode>(RuleType.Examples);104 var examplesLine = examplesNode.GetToken(TokenType.ExamplesLine);105 var description = GetDescription(examplesNode);106107 var allRows = examplesNode.GetSingle<TableRow[]>(RuleType.ExamplesTable);108 var header = allRows != null ? allRows.First() : null;109 var rows = allRows != null ? allRows.Skip(1).ToArray() : null;110 return CreateExamples(tags, GetLocation(examplesLine), examplesLine.MatchedKeyword, examplesLine.MatchedText, description, header, rows, node);111 }112 case RuleType.ExamplesTable:113 {114 return GetTableRows(node);115 }116 case RuleType.Description:117 {118 var lineTokens = node.GetTokens(TokenType.Other);119120 // Trim trailing empty lines121 lineTokens = lineTokens.Reverse().SkipWhile(t => string.IsNullOrWhiteSpace(t.MatchedText)).Reverse();122123 return string.Join(Environment.NewLine, lineTokens.Select(lt => lt.MatchedText));124 }125 case RuleType.Feature:126 {127 var header = node.GetSingle<AstNode>(RuleType.FeatureHeader);128 if(header == null) return null;129 var tags = GetTags(header);130 var featureLine = header.GetToken(TokenType.FeatureLine);131 if(featureLine == null) return null;132 var children = new List<IHasLocation> ();133 var background = node.GetSingle<Background>(RuleType.Background);134 if (background != null) 135 {136 children.Add (background);137 }138 var childrenEnumerable = children.Concat(node.GetItems<IHasLocation>(RuleType.ScenarioDefinition))139 .Concat(node.GetItems<IHasLocation>(RuleType.Rule));140 var description = GetDescription(header);141 if(featureLine.MatchedGherkinDialect == null) return null;142 var language = featureLine.MatchedGherkinDialect.Language;143144 return CreateFeature(tags, GetLocation(featureLine), language, featureLine.MatchedKeyword, featureLine.MatchedText, description, childrenEnumerable.ToArray(), node);145 }146 case RuleType.Rule:147 {148 var header = node.GetSingle<AstNode>(RuleType.RuleHeader);149 if (header == null) return null;150 var ruleLine = header.GetToken(TokenType.RuleLine);151 if (ruleLine == null) return null;152 var children = new List<IHasLocation>();153 var background = node.GetSingle<Background>(RuleType.Background);154 if (background != null)155 {156 children.Add(background);157 }158 var childrenEnumerable = children.Concat(node.GetItems<IHasLocation>(RuleType.ScenarioDefinition));159 var description = GetDescription(header);160 if (ruleLine.MatchedGherkinDialect == null) return null;161 var language = ruleLine.MatchedGherkinDialect.Language;162163 return CreateRule(GetLocation(ruleLine), ruleLine.MatchedKeyword, ruleLine.MatchedText, description, childrenEnumerable.ToArray(), node);164 }165 case RuleType.GherkinDocument:166 {167 var feature = node.GetSingle<Feature>(RuleType.Feature);168169 return CreateGherkinDocument(feature, comments.ToArray(), node);170 }171 }172173 return node;174 }175176 protected virtual Background CreateBackground(Location location, string keyword, string name, string description, Step[] steps, AstNode node)177 {178 return new Background(location, keyword, name, description, steps);179 }180181 protected virtual DataTable CreateDataTable(TableRow[] rows, AstNode node)182 {183 return new DataTable(rows);184 }185186 protected virtual Comment CreateComment(Location location, string text)187 {188 return new Comment(location, text);189 }190191 protected virtual Examples CreateExamples(Tag[] tags, Location location, string keyword, string name, string description, TableRow header, TableRow[] body, AstNode node)192 {193 return new Examples(tags, location, keyword, name, description, header, body);194 }195196 protected virtual Scenario CreateScenario(Tag[] tags, Location location, string keyword, string name, string description, Step[] steps, Examples[] examples, AstNode node)197 {198 return new Scenario(tags, location, keyword, name, description, steps, examples);199 }200201 protected virtual DocString CreateDocString(Location location, string contentType, string content, AstNode node)202 {203 return new DocString(location, contentType, content);204 }205206 protected virtual Step CreateStep(Location location, string keyword, string text, StepArgument argument, AstNode node)207 {208 return new Step(location, keyword, text, argument);209 }210211 protected virtual GherkinDocument CreateGherkinDocument(Feature feature, Comment[] gherkinDocumentComments, AstNode node) {212 return new GherkinDocument(feature, gherkinDocumentComments);213 }214215 protected virtual Feature CreateFeature(Tag[] tags, Location location, string language, string keyword, string name, string description, IHasLocation[] children, AstNode node)216 {217 return new Feature(tags, location, language, keyword, name, description, children);218 }219220 protected virtual Rule CreateRule(Location location, string keyword, string name, string description, IHasLocation[] children, AstNode node)221 {222 return new Rule(location, keyword, name, description, children);223 }224225 protected virtual Tag CreateTag(Location location, string name, AstNode node)226 {227 return new Tag(location, name);228 }229230 protected virtual Location CreateLocation(int line, int column)231 {232 return new Location(line, column);233 }234235 protected virtual TableRow CreateTableRow(Location location, TableCell[] cells, AstNode node)236 {237 return new TableRow(location, cells);238 }239240 protected virtual TableCell CreateTableCell(Location location, string value)241 {242 return new TableCell(location, value);243 }244245 private Location GetLocation(Token token, int column = 0)246 {247 return column == 0 ? token.Location : CreateLocation(token.Location.Line, column);248 }249250 private Tag[] GetTags(AstNode node)251 {252 var tagsNode = node.GetSingle<AstNode>(RuleType.Tags);253 if (tagsNode == null)254 return new Tag[0];255256 return tagsNode.GetTokens(TokenType.TagLine)257 .SelectMany(t => t.MatchedItems, (t, tagItem) =>258 CreateTag(GetLocation(t, tagItem.Column), tagItem.Text, tagsNode))259 .ToArray();260 }261262 private TableRow[] GetTableRows(AstNode node)263 {264 var rows = node.GetTokens(TokenType.TableRow).Select(token => CreateTableRow(GetLocation(token), GetCells(token), node)).ToArray();265 CheckCellCountConsistency(rows);266 return rows;267 }268269 protected virtual void CheckCellCountConsistency(TableRow[] rows)270 {271 if (rows.Length == 0)272 return;273274 int cellCount = rows[0].Cells.Count();275 foreach (var row in rows)276 {277 if (row.Cells.Count() != cellCount)278 {279 HandleAstError("inconsistent cell count within the table", row.Location);280 }281 }282 }283
...
FeatureClassTests.cs
Source:FeatureClassTests.cs
...214 new string[]215 {216 "When " + FeatureWithDataTableScenarioStep.Steptext217 },218 new Gherkin.Ast.DataTable(new Gherkin.Ast.TableRow[]219 {220 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]221 {222 new Gherkin.Ast.TableCell(null, "First argument"),223 new Gherkin.Ast.TableCell(null, "Second argument"),224 new Gherkin.Ast.TableCell(null, "Result"),225 }),226 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]227 {228 new Gherkin.Ast.TableCell(null, "1"),229 new Gherkin.Ast.TableCell(null, "2"),230 new Gherkin.Ast.TableCell(null, "3"),231 }),232 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]233 {234 new Gherkin.Ast.TableCell(null, "a"),235 new Gherkin.Ast.TableCell(null, "b"),236 new Gherkin.Ast.TableCell(null, "c"),237 })238 })).Feature.Children.First() as Gherkin.Ast.Scenario;239 //act.240 var scenario = sut.ExtractScenario(gherknScenario, null);241 //assert.242 Assert.NotNull(scenario);243 }244 private sealed class FeatureWithDataTableScenarioStep : Feature245 {246 public Gherkin.Ast.DataTable ReceivedDataTable { get; private set; }...
GherkinScenarioOutlineTests.cs
Source:GherkinScenarioOutlineTests.cs
...29 null,30 null,31 "existing example",32 null,33 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]{ }),34 new Gherkin.Ast.TableRow[]35 {36 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]{ })37 })38 });39 //act / assert.40 Assert.Throws<InvalidOperationException>(() => sut.ApplyExampleRow(exampleName, exampleRowIndex));41 }42 [Fact]43 public void ApplyExampleRow_Digests_Row_Values_Into_Scenario()44 {45 //arrange.46 var sut = new Gherkin.Ast.ScenarioOutline(47 null,48 null,49 null,50 "outline123",51 null,52 new Gherkin.Ast.Step[] 53 {54 new Gherkin.Ast.Step(null, "Given", "I chose <a> as first number", null),55 new Gherkin.Ast.Step(null, "And", "I chose <b> as second number", null),56 new Gherkin.Ast.Step(null, "When", "I press add", null),57 new Gherkin.Ast.Step(null, "Then", "the result should be <sum> on the screen", null),58 },59 new Gherkin.Ast.Examples[]60 {61 new Gherkin.Ast.Examples(62 null,63 null,64 null,65 "existing example",66 null,67 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]68 {69 new Gherkin.Ast.TableCell(null, "a"),70 new Gherkin.Ast.TableCell(null, "b"),71 new Gherkin.Ast.TableCell(null, "sum")72 }),73 new Gherkin.Ast.TableRow[]74 {75 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]76 {77 new Gherkin.Ast.TableCell(null, "1"),78 new Gherkin.Ast.TableCell(null, "2"),79 new Gherkin.Ast.TableCell(null, "3")80 })81 })82 });83 //act.84 var scenario = sut.ApplyExampleRow("existing example", 0);85 //assert.86 Assert.NotNull(scenario);87 Assert.Equal(sut.Name, scenario.Name);88 Assert.Equal(sut.Steps.Count(), scenario.Steps.Count());89 Assert.Equal(4, scenario.Steps.Count());90 var sutSteps = sut.Steps.ToList();91 var scenarioSteps = scenario.Steps.ToList();92 ValidateStep(scenarioSteps[0], "Given", "I chose 1 as first number", sutSteps[0]);93 ValidateStep(scenarioSteps[1], "And", "I chose 2 as second number", sutSteps[1]);94 ValidateStep(scenarioSteps[2], "When", "I press add", sutSteps[2]);95 ValidateStep(scenarioSteps[3], "Then", "the result should be 3 on the screen", sutSteps[3]);96 void ValidateStep(Gherkin.Ast.Step step, string keyword, string text,97 Gherkin.Ast.Step other)98 {99 Assert.NotSame(other, step);100 Assert.Equal(keyword, step.Keyword);101 Assert.Equal(text, step.Text);102 }103 }104 [Fact]105 public void ApplyExampleRow_Digests_Row_Values_Into_Scenario_With_Multiple_Placeholders_Per_Step()106 {107 //arrange.108 var sut = new Gherkin.Ast.ScenarioOutline(109 null,110 null,111 null,112 "outline123",113 null,114 new Gherkin.Ast.Step[]115 {116 new Gherkin.Ast.Step(null, "Given", "I chose <a> as first number and <b> as second number", null),117 new Gherkin.Ast.Step(null, "When", "I press add", null),118 new Gherkin.Ast.Step(null, "Then", "the result should be <sum> on the screen", null),119 },120 new Gherkin.Ast.Examples[]121 {122 new Gherkin.Ast.Examples(123 null,124 null,125 null,126 "existing example",127 null,128 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]129 {130 new Gherkin.Ast.TableCell(null, "a"),131 new Gherkin.Ast.TableCell(null, "b"),132 new Gherkin.Ast.TableCell(null, "sum")133 }),134 new Gherkin.Ast.TableRow[]135 {136 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]137 {138 new Gherkin.Ast.TableCell(null, "1"),139 new Gherkin.Ast.TableCell(null, "2"),140 new Gherkin.Ast.TableCell(null, "3")141 })142 })143 });144 //act.145 var scenario = sut.ApplyExampleRow("existing example", 0);146 //assert.147 Assert.NotNull(scenario);148 Assert.Equal(sut.Name, scenario.Name);149 Assert.Equal(sut.Steps.Count(), scenario.Steps.Count());150 Assert.Equal(3, scenario.Steps.Count());...
TestAstFormatter.cs
Source:TestAstFormatter.cs
...97 {98 FormatRow(tableRow, result, indent);99 }100 }101 private void FormatRow(TableRow tableRow, StringBuilder result, string indent = INDENT)102 {103 result.Append(indent);104 FormatHasLocation(tableRow, result);105 foreach (var tableCell in tableRow.Cells)106 {107 result.Append("|");108 FormatHasLocation(tableCell, result);109 result.Append(tableCell.Value);110 }111 result.AppendLine("|");112 }113 private void FormatTags(IHasTags hasTags, StringBuilder result)114 {115 if (!hasTags.Tags.Any())...
DataTableArgumentTests.cs
Source:DataTableArgumentTests.cs
...26 public void DigestScenarioStepValues_Sets_Value_As_DataTable_When_Only_DataTable()27 {28 //arrange.29 var sut = new DataTableArgument();30 var dataTable = new Gherkin.Ast.DataTable(new Gherkin.Ast.TableRow[]31 {32 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]33 {34 new Gherkin.Ast.TableCell(null, "First argument"),35 new Gherkin.Ast.TableCell(null, "Second argument"),36 new Gherkin.Ast.TableCell(null, "Result"),37 }),38 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]39 {40 new Gherkin.Ast.TableCell(null, "1"),41 new Gherkin.Ast.TableCell(null, "2"),42 new Gherkin.Ast.TableCell(null, "3"),43 }),44 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]45 {46 new Gherkin.Ast.TableCell(null, "a"),47 new Gherkin.Ast.TableCell(null, "b"),48 new Gherkin.Ast.TableCell(null, "c"),49 })50 });51 //act.52 sut.DigestScenarioStepValues(new string[0], dataTable);53 //assert.54 Assert.Same(dataTable, sut.Value);55 }56 [Fact]57 public void DigestScenarioStepValues_Sets_Value_As_DataTable_When_DataTable_And_Other_Args_Present()58 {59 //arrange.60 var sut = new DataTableArgument();61 var dataTable = new Gherkin.Ast.DataTable(new Gherkin.Ast.TableRow[]62 {63 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]64 {65 new Gherkin.Ast.TableCell(null, "First argument"),66 new Gherkin.Ast.TableCell(null, "Second argument"),67 new Gherkin.Ast.TableCell(null, "Result"),68 }),69 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]70 {71 new Gherkin.Ast.TableCell(null, "1"),72 new Gherkin.Ast.TableCell(null, "2"),73 new Gherkin.Ast.TableCell(null, "3"),74 }),75 new Gherkin.Ast.TableRow(null, new Gherkin.Ast.TableCell[]76 {77 new Gherkin.Ast.TableCell(null, "a"),78 new Gherkin.Ast.TableCell(null, "b"),79 new Gherkin.Ast.TableCell(null, "c"),80 })81 });82 //act.83 sut.DigestScenarioStepValues(new string[] { "1", "2", "3" }, dataTable);84 //assert.85 Assert.Same(dataTable, sut.Value);86 }87 88 [Fact]89 public void IsSameAs_Identifies_Similar_Instances()...
GherkinFeatureBuilder.cs
Source:GherkinFeatureBuilder.cs
...43 return new Feature(null, null, null, null, null, null, _definitions.ToArray());44 }45 public class ExamplesBuilder46 {47 private TableRow _header;48 private List<Examples> _examples = new List<Examples>();49 public Examples[] Examples => _examples.ToArray();50 public ExamplesBuilder WithExampleHeadings(params string[] headings)51 {52 _header = new TableRow(null, headings.Select(h => new TableCell(null, h)).ToArray());53 return this;54 }55 public ExamplesBuilder WithExamples(string name, Action<TableBuilder> buildRows)56 {57 var tableBuilder = new TableBuilder();58 buildRows(tableBuilder);59 var examples = new Examples(new Tag[0], null, null, name, null, _header, tableBuilder.Rows);60 _examples.Add(examples);61 return this;62 }63 }64 public class TableBuilder65 {66 public List<TableRow> _rows = new List<TableRow>();67 public TableRow[] Rows => _rows.ToArray();68 public TableBuilder WithData(params object[] data)69 {70 _rows.Add(new TableRow(null, data.Select(d => new TableCell(null, d.ToString())).ToArray()));71 return this;72 }73 }74 public class GherkinStepBuilder75 {76 private List<Step> _steps = new List<Step>();77 public Step[] Steps => _steps.ToArray();78 public GherkinStepBuilder Given(string step, StepArgument stepArgument)79 {80 _steps.Add(new Step(null, "Given", step, stepArgument));81 return this;82 }83 public GherkinStepBuilder When(string step, StepArgument stepArgument)84 {...
GherkInspectorExample.cs
Source:GherkInspectorExample.cs
...5 using System.Text;6 public class GherkInspectorExample7 {8 public GherkInspectorLocation Location { get; private set; }9 public GherkInspectorTableRow TableHeader { get; private set; }10 public IEnumerable<GherkInspectorTableRow> TableBody { get; private set; }11 public GherkInspectorExample(GherkInspectorLocation location, GherkInspectorTableRow headerRow)12 {13 Location = location;14 TableHeader = headerRow;15 TableBody = new List<GherkInspectorTableRow>();16 }17 }18 public class GherkInspectorTableRow19 {20 public GherkInspectorLocation Location { get; private set; }21 public IEnumerable<GherkInspectorTableCell> Cells { get; private set; }22 public GherkInspectorTableRow(GherkInspectorLocation location, List<GherkInspectorTableCell> cells)23 {24 Location = location;25 Cells = cells;26 }27 }28 public class GherkInspectorTableCell29 {30 public GherkInspectorLocation Location { get; private set; }31 public string Value { get; private set; }32 public GherkInspectorTableCell(GherkInspectorLocation location, string value)33 {34 Location = location;35 Value = value;36 }37 }38 /*39 * example40{Gherkin.Ast.Examples}41 Description: null42 Keyword: "Examples"43 Location: {Gherkin.Ast.Location}44 Name: ""45 TableBody: {Gherkin.Ast.TableRow[1]}46 TableHeader: {Gherkin.Ast.TableRow}47 Tags: {Gherkin.Ast.Tag[0]}48example.TableHeader49{Gherkin.Ast.TableRow}50 Cells: {Gherkin.Ast.TableCell[1]}51 Location: {Gherkin.Ast.Location}52example.TableBody53{Gherkin.Ast.TableRow[1]}54 [0]: {Gherkin.Ast.TableRow}55 */56}...
TableRow
Using AI Code Generation
1using (var reader = new StringReader("Given I have 5 cucumbers"))2{3 var parser = new Parser();4 var feature = parser.Parse(reader);5 var steps = feature.Children[0].Steps;6 foreach (var step in steps)7 {8 var table = step.Argument as Gherkin.Ast.DataTable;9 if (table != null)10 {11 var tableRows = table.Rows;12 foreach (var tableRow in tableRows)13 {14 var tableCells = tableRow.Cells;15 foreach (var tableCell in tableCells)16 {17 var tableCellText = tableCell.Value;18 Console.WriteLine(tableCellText);19 }20 }21 }22 }23}24using (var reader = new StringReader("Given I have 5 cucumbers"))25{26 var parser = new Parser();27 var feature = parser.Parse(reader);28 var steps = feature.Children[0].Steps;29 foreach (var step in steps)30 {31 var table = step.Argument as Gherkin.Ast.DataTable;32 if (table != null)33 {34 var tableRows = table.Rows;35 foreach (var tableRow in tableRows)36 {37 var tableCells = tableRow.Cells;38 foreach (var tableCell in tableCells)39 {40 var tableCellText = tableCell.Value;41 Console.WriteLine(tableCellText);42 }43 }44 }45 }46}47using (var reader = new StringReader("Given I have 5 cucumbers"))48{49 var parser = new Parser();50 var feature = parser.Parse(reader);51 var steps = feature.Children[0].Steps;52 foreach (var step in steps)53 {54 var table = step.Argument as Gherkin.Ast.DataTable;55 if (table != null)56 {57 var tableRows = table.Rows;58 foreach (var tableRow in tableRows)59 {60 var tableCells = tableRow.Cells;61 foreach (var tableCell in tableCells)62 {63 var tableCellText = tableCell.Value;64 Console.WriteLine(tableCellText);65 }66 }67 }68 }69}
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!