fix: Using covariant interface for IParser and IParseResult.
Rename CanonSharp.Common to CanonSharp.Pascal.
This commit is contained in:
@@ -1,33 +1,33 @@
|
||||
using CanonSharp.Combinator;
|
||||
using CanonSharp.Combinator.Abstractions;
|
||||
using CanonSharp.Common.Scanner;
|
||||
using CanonSharp.Pascal.Scanner;
|
||||
|
||||
namespace CanonSharp.Tests.Utils;
|
||||
|
||||
public abstract class LexicalTestBase
|
||||
{
|
||||
protected static void ValidateSuccessfulParser(Parser<char, LexicalToken> parser, LexicalTokenType exceptedType,
|
||||
protected static void ValidateSuccessfulParser(IParser<char, LexicalToken> parser, LexicalTokenType exceptedType,
|
||||
string literalValue, string input)
|
||||
{
|
||||
StringReadState state = new(input);
|
||||
ParseResult<char, LexicalToken> result = parser.Parse(state);
|
||||
IParseResult<char, LexicalToken> result = parser.Parse(state);
|
||||
|
||||
Assert.Equal(exceptedType, result.Value.TokenType);
|
||||
Assert.Equal(literalValue, result.Value.LiteralValue);
|
||||
}
|
||||
|
||||
protected static void ValidateFailedParser(Parser<char, LexicalToken> parser, string input)
|
||||
protected static void ValidateFailedParser(IParser<char, LexicalToken> parser, string input)
|
||||
{
|
||||
StringReadState state = new(input);
|
||||
ParseResult<char, LexicalToken> result = parser.Parse(state);
|
||||
IParseResult<char, LexicalToken> result = parser.Parse(state);
|
||||
Assert.ThrowsAny<ParseException>(() => result.Value);
|
||||
}
|
||||
|
||||
protected static void ValidateLexicalTokens(Parser<char, IEnumerable<LexicalToken>> parser, string input,
|
||||
protected static void ValidateLexicalTokens(IParser<char, IEnumerable<LexicalToken>> parser, string input,
|
||||
IEnumerable<(LexicalTokenType, string)> exceptedResult)
|
||||
{
|
||||
StringReadState state = new(input);
|
||||
ParseResult<char, IEnumerable<LexicalToken>> result = parser.Parse(state);
|
||||
IParseResult<char, IEnumerable<LexicalToken>> result = parser.Parse(state);
|
||||
|
||||
foreach (((LexicalTokenType exceptedType, string exceptedValue), LexicalToken token) in exceptedResult.Zip(
|
||||
result.Value))
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
using CanonSharp.Combinator;
|
||||
using CanonSharp.Combinator.Abstractions;
|
||||
using CanonSharp.Common.Scanner;
|
||||
using CanonSharp.Pascal.Scanner;
|
||||
|
||||
namespace CanonSharp.Tests.Utils;
|
||||
|
||||
public abstract class ParserTestsBase
|
||||
{
|
||||
protected static void ValidateSuccessfulResult<T>(Parser<char, T> parser, T value, string source)
|
||||
protected static void ValidateSuccessfulResult<T>(IParser<char, T> parser, T value, string source)
|
||||
{
|
||||
StringReadState state = new(source);
|
||||
|
||||
ParseResult<char, T> result = parser.Parse(state);
|
||||
IParseResult<char, T> result = parser.Parse(state);
|
||||
Assert.Equal(value, result.Value);
|
||||
}
|
||||
|
||||
protected static void ValidateSuccessfulResult<T>(
|
||||
Parser<char, IEnumerable<T>> parser,
|
||||
IParser<char, IEnumerable<T>> parser,
|
||||
IEnumerable<T> values, string source)
|
||||
{
|
||||
StringReadState state = new(source);
|
||||
|
||||
ParseResult<char, IEnumerable<T>> result = parser.Parse(state);
|
||||
IParseResult<char, IEnumerable<T>> result = parser.Parse(state);
|
||||
|
||||
foreach ((T actual, T except) in result.Value.Zip(values))
|
||||
{
|
||||
@@ -28,16 +28,16 @@ public abstract class ParserTestsBase
|
||||
}
|
||||
}
|
||||
|
||||
protected static FailedResult<char, T> ValidateFailedResult<T>(Parser<char, T> parser, string source)
|
||||
protected static IFailedResult<char, T> ValidateFailedResult<T>(IParser<char, T> parser, string source)
|
||||
{
|
||||
StringReadState state = new(source);
|
||||
|
||||
ParseResult<char, T> result = parser.Parse(state);
|
||||
IParseResult<char, T> result = parser.Parse(state);
|
||||
Assert.ThrowsAny<ParseException>(() =>
|
||||
{
|
||||
_ = result.Value;
|
||||
});
|
||||
|
||||
return (FailedResult<char, T>)result;
|
||||
return (IFailedResult<char, T>)result;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user