Skip to content

Commit 46d73db

Browse files
committed
refactoring GetTokens_MockedRegex_ValidOutput +semver:none
1 parent c8f740e commit 46d73db

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed

tests/HydraScript.UnitTests/Domain/FrontEnd/TokenInput.cs renamed to tests/HydraScript.UnitTests/Domain/FrontEnd/LexerInput.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,27 @@
1+
using System.Collections;
12
using System.ComponentModel.DataAnnotations;
23
using System.Diagnostics.CodeAnalysis;
34
using System.Numerics;
45

56
namespace HydraScript.UnitTests.Domain.FrontEnd;
67

8+
public record LexerInput([property:MinLength(10), MaxLength(25)] TokenInput[] TokenInputs) : IReadOnlyList<string>
9+
{
10+
public IEnumerator<string> GetEnumerator() =>
11+
TokenInputs.Select(x => x.Value).GetEnumerator();
12+
13+
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
14+
15+
public int Count => TokenInputs.Length;
16+
17+
public string this[int index] => TokenInputs[index].Value;
18+
19+
public override string ToString() =>
20+
TokenInputs.Aggregate(
21+
TokenInput.AdditiveIdentity,
22+
(x, y) => x + y).Value;
23+
}
24+
725
public record TokenInput(
826
[property: RegularExpression(TokenInput.Pattern)]
927
string Value) :

tests/HydraScript.UnitTests/Domain/FrontEnd/RegexLexerTests.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
using System.ComponentModel.DataAnnotations;
21
using System.Text.RegularExpressions;
32
using AutoFixture.Xunit2;
43
using HydraScript.Domain.FrontEnd.Lexer;
54
using HydraScript.Domain.FrontEnd.Lexer.Impl;
65
using HydraScript.Domain.FrontEnd.Lexer.TokenTypes;
76
using HydraScript.Infrastructure;
7+
using Xunit.Abstractions;
88

99
namespace HydraScript.UnitTests.Domain.FrontEnd;
1010

11-
public class RegexLexerTests
11+
public class RegexLexerTests(ITestOutputHelper output)
1212
{
1313
private readonly RegexLexer _regexLexer = new(
1414
new Structure<GeneratedRegexContainer>(new TokenTypesProvider()),
@@ -55,10 +55,11 @@ public void GetTokens_KeywordInsideIdent_Ident(string input)
5555

5656
[Theory, AutoHydraScriptData]
5757
public void GetTokens_MockedRegex_ValidOutput(
58-
[MinLength(10), MaxLength(25)] TokenInput[] tokenInputs,
58+
LexerInput input,
5959
[Frozen] IStructure structure,
6060
RegexLexer lexer)
6161
{
62+
output.WriteLine(input.ToString());
6263
var patterns = TokenInput.Pattern.Split('|');
6364

6465
structure.Regex.ReturnsForAnyArgs(
@@ -71,13 +72,11 @@ public void GetTokens_MockedRegex_ValidOutput(
7172
structure.GetEnumerator()
7273
.ReturnsForAnyArgs(_ => tokenTypes.GetEnumerator());
7374

74-
var tokens = lexer.GetTokens(
75-
tokenInputs.Aggregate(
76-
TokenInput.AdditiveIdentity,
77-
(x, y) => x + y).Value);
78-
for (var i = 0; i < tokenInputs.Length; i++)
75+
var tokens = lexer.GetTokens(input.ToString());
76+
for (var i = 0; i < input.Count; i++)
7977
{
80-
tokens[i].Value.Should().BeEquivalentTo(tokenInputs[i].Value);
78+
output.WriteLine(tokens[i].ToString());
79+
tokens[i].Value.Should().BeEquivalentTo(input[i]);
8180
tokens[i].Type.Should().BeOneOf(tokenTypes);
8281
}
8382
}

0 commit comments

Comments
 (0)