mirror of
https://github.com/UglyToad/PdfPig.git
synced 2025-08-20 09:21:57 +08:00
more tests for array tokenization
This commit is contained in:
parent
158cd5f2e3
commit
c22a79f327
@ -53,6 +53,23 @@
|
||||
Assert.Equal(dataValue, ((dynamic)token).Data[0].Data);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("[]")]
|
||||
[InlineData("[ ]")]
|
||||
[InlineData("[\r\n\r\n\t]")]
|
||||
public void EmptyArray(string s)
|
||||
{
|
||||
var input = StringBytesTestConverter.Convert(s);
|
||||
|
||||
var result = tokenizer.TryTokenize(input.First, input.Bytes, out var token);
|
||||
|
||||
Assert.True(result);
|
||||
|
||||
var array = AssertArrayToken(token);
|
||||
|
||||
Assert.Empty(array.Data);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NestedArray()
|
||||
{
|
||||
@ -116,6 +133,26 @@
|
||||
Assert.Equal(15m, AssertDataToken<NumericToken, decimal>(0, firstFirstSecondInner).Data);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SpecificationExampleArray()
|
||||
{
|
||||
const string s = "[549 3.14 false (Ralph) /SomeName]";
|
||||
|
||||
var input = StringBytesTestConverter.Convert(s);
|
||||
|
||||
var result = tokenizer.TryTokenize(input.First, input.Bytes, out var token);
|
||||
|
||||
Assert.True(result);
|
||||
|
||||
var array = AssertArrayToken(token);
|
||||
|
||||
Assert.Equal(549m, AssertDataToken<NumericToken, decimal>(0, array).Data);
|
||||
Assert.Equal(3.14m, AssertDataToken<NumericToken, decimal>(1, array).Data);
|
||||
Assert.False(AssertDataToken<BooleanToken, bool>(2, array).Data);
|
||||
Assert.Equal("Ralph", AssertDataToken<StringToken, string>(3, array).Data);
|
||||
Assert.Equal(CosName.Create("SomeName"), AssertDataToken<NameToken, CosName>(4, array).Data);
|
||||
}
|
||||
|
||||
private static ArrayToken AssertArrayToken(IToken token)
|
||||
{
|
||||
Assert.NotNull(token);
|
||||
|
||||
@ -92,7 +92,29 @@ endobj";
|
||||
Assert.Equal(tokens[4], ObjectDelimiterToken.EndObject);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ScansArrayInSequence()
|
||||
{
|
||||
const string s = @"/Bounds [12 15 19 1455.3]/Font /F1 /Name (Bob)[16]";
|
||||
|
||||
var tokens = new List<IToken>();
|
||||
|
||||
var scanner = scannerFactory(StringBytesTestConverter.Convert(s, false).Bytes);
|
||||
|
||||
while (scanner.MoveNext())
|
||||
{
|
||||
tokens.Add(scanner.CurrentToken);
|
||||
}
|
||||
|
||||
AssertCorrectToken<NameToken, CosName>(tokens[0], CosName.Create("Bounds"));
|
||||
Assert.IsType<ArrayToken>(tokens[1]);
|
||||
AssertCorrectToken<NameToken, CosName>(tokens[2], CosName.Create("Font"));
|
||||
AssertCorrectToken<NameToken, CosName>(tokens[3], CosName.Create("F1"));
|
||||
AssertCorrectToken<NameToken, CosName>(tokens[4], CosName.Create("Name"));
|
||||
AssertCorrectToken<StringToken, string>(tokens[5], "Bob");
|
||||
Assert.IsType<ArrayToken>(tokens[6]);
|
||||
}
|
||||
|
||||
private static void AssertCorrectToken<T, TData>(IToken token, TData expected) where T : IDataToken<TData>
|
||||
{
|
||||
var cast = Assert.IsType<T>(token);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user