add tests for array token

This commit is contained in:
Eliot Jones
2018-01-17 21:48:11 +00:00
parent eea5d3a249
commit 0ead678a43
3 changed files with 68 additions and 4 deletions

View File

@@ -0,0 +1,54 @@
namespace UglyToad.PdfPig.Tests.Tokenization.Tokens
{
using System;
using PdfPig.Tokenization.Tokens;
using Xunit;
public class ArrayTokenTests
{
[Fact]
public void SetsData()
{
var token = new ArrayToken(new[]
{
OperatorToken.StartStream,
OperatorToken.EndStream
});
Assert.Equal(2, token.Data.Count);
Assert.Equal(OperatorToken.StartStream, token.Data[0]);
Assert.Equal(OperatorToken.EndStream, token.Data[1]);
}
[Fact]
public void SetsDataEmpty()
{
var token = new ArrayToken(new IToken[0]);
Assert.Empty(token.Data);
}
[Fact]
public void SetsDataNullThrows()
{
// ReSharper disable once ObjectCreationAsStatement
Action action = () => new ArrayToken(null);
Assert.Throws<ArgumentNullException>(action);
}
[Fact]
public void ToStringCorrect()
{
var token = new ArrayToken(new IToken[]
{
new StringToken("hedgehog"),
new NumericToken(7),
OperatorToken.StartObject
});
Assert.Equal("[ (hedgehog), 7, obj ]", token.ToString());
}
}
}

View File

@@ -1,5 +1,6 @@
namespace UglyToad.PdfPig.Tokenization.Tokens
{
using System;
using System.Collections.Generic;
using System.Text;
@@ -9,16 +10,25 @@
public ArrayToken(IReadOnlyList<IToken> data)
{
Data = data;
Data = data ?? throw new ArgumentNullException(nameof(data));
}
public override string ToString()
{
var builder = new StringBuilder("[ ");
foreach (var token in Data)
for (var i = 0; i < Data.Count; i++)
{
builder.Append(token).Append(' ');
var token = Data[i];
builder.Append(token);
if (i < Data.Count - 1)
{
builder.Append(',');
}
builder.Append(' ');
}
builder.Append(']');

View File

@@ -11,7 +11,7 @@ namespace UglyToad.PdfPig.Tokenization.Tokens
public override string ToString()
{
return $"\"{Data}\"";
return $"({Data})";
}
}
}