2017-11-10 06:52:48 +08:00
|
|
|
|
namespace UglyToad.Pdf.Tests.Tokenization
|
|
|
|
|
{
|
|
|
|
|
using Pdf.Tokenization;
|
2017-11-10 07:26:21 +08:00
|
|
|
|
using Pdf.Tokenization.Tokens;
|
2017-11-10 06:52:48 +08:00
|
|
|
|
using Xunit;
|
|
|
|
|
|
|
|
|
|
public class HexStringTokenizerTests
|
|
|
|
|
{
|
|
|
|
|
private readonly HexStringTokenizer tokenizer = new HexStringTokenizer();
|
|
|
|
|
|
|
|
|
|
[Theory]
|
|
|
|
|
[InlineData(">not hex")]
|
|
|
|
|
[InlineData("\\<not hex")]
|
|
|
|
|
[InlineData("not hex")]
|
|
|
|
|
[InlineData("AE1094 still not hex")]
|
|
|
|
|
public void CannotTokenizeInvalidBytes(string s)
|
|
|
|
|
{
|
|
|
|
|
var input = StringBytesTestConverter.Convert(s);
|
|
|
|
|
|
|
|
|
|
var result = tokenizer.TryTokenize(input.First, input.Bytes, out var token);
|
|
|
|
|
|
|
|
|
|
Assert.False(result);
|
|
|
|
|
Assert.Null(token);
|
|
|
|
|
}
|
2017-11-10 07:26:21 +08:00
|
|
|
|
|
|
|
|
|
[Theory]
|
|
|
|
|
[InlineData("<00>", "\0")]
|
|
|
|
|
[InlineData("<A1>", "¡")]
|
|
|
|
|
public void TokenizesHexStringsCorrectly(string s, string expected)
|
|
|
|
|
{
|
|
|
|
|
var input = StringBytesTestConverter.Convert(s);
|
|
|
|
|
|
|
|
|
|
var result = tokenizer.TryTokenize(input.First, input.Bytes, out var token);
|
|
|
|
|
|
|
|
|
|
Assert.True(result);
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expected, AssertHexToken(token).Data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static HexToken AssertHexToken(IToken token)
|
|
|
|
|
{
|
|
|
|
|
Assert.NotNull(token);
|
|
|
|
|
|
|
|
|
|
var hexToken = Assert.IsType<HexToken>(token);
|
|
|
|
|
|
|
|
|
|
return hexToken;
|
|
|
|
|
}
|
2017-11-10 06:52:48 +08:00
|
|
|
|
}
|
|
|
|
|
}
|