more tests for array tokenization

This commit is contained in:
Eliot Jones 2017-11-12 14:58:34 +00:00
parent 158cd5f2e3
commit c22a79f327
2 changed files with 59 additions and 0 deletions

View File

@ -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);

View File

@ -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);