|
@@ -2,6 +2,7 @@
|
|
|
using Avalonia.Data.Core;
|
|
|
using Avalonia.Markup.Parsers;
|
|
|
using Avalonia.Markup.Xaml.Parsers;
|
|
|
+using Avalonia.Utilities;
|
|
|
using Xunit;
|
|
|
|
|
|
namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
@@ -12,7 +13,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Parses_Name()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("Foo");
|
|
|
+ var reader = new CharacterReader("Foo");
|
|
|
var (ns, owner, name) = target.Parse(reader);
|
|
|
|
|
|
Assert.Null(ns);
|
|
@@ -24,7 +25,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Parses_Owner_And_Name()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("Foo.Bar");
|
|
|
+ var reader = new CharacterReader("Foo.Bar");
|
|
|
var (ns, owner, name) = target.Parse(reader);
|
|
|
|
|
|
Assert.Null(ns);
|
|
@@ -36,7 +37,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Parses_Namespace_Owner_And_Name()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("foo:Bar.Baz");
|
|
|
+ var reader = new CharacterReader("foo:Bar.Baz");
|
|
|
var (ns, owner, name) = target.Parse(reader);
|
|
|
|
|
|
Assert.Equal("foo", ns);
|
|
@@ -48,7 +49,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Parses_Owner_And_Name_With_Parentheses()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("(Foo.Bar)");
|
|
|
+ var reader = new CharacterReader("(Foo.Bar)");
|
|
|
var (ns, owner, name) = target.Parse(reader);
|
|
|
|
|
|
Assert.Null(ns);
|
|
@@ -60,7 +61,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Parses_Namespace_Owner_And_Name_With_Parentheses()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("(foo:Bar.Baz)");
|
|
|
+ var reader = new CharacterReader("(foo:Bar.Baz)");
|
|
|
var (ns, owner, name) = target.Parse(reader);
|
|
|
|
|
|
Assert.Equal("foo", ns);
|
|
@@ -72,7 +73,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Empty_String()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("");
|
|
|
+ var reader = new CharacterReader("");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(0, ex.Column);
|
|
@@ -83,7 +84,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Only_Whitespace()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader(" ");
|
|
|
+ var reader = new CharacterReader(" ");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(0, ex.Column);
|
|
@@ -94,7 +95,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Leading_Whitespace()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader(" Foo");
|
|
|
+ var reader = new CharacterReader(" Foo");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(0, ex.Column);
|
|
@@ -105,7 +106,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Trailing_Whitespace()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("Foo ");
|
|
|
+ var reader = new CharacterReader("Foo ");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(3, ex.Column);
|
|
@@ -116,7 +117,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Invalid_Property_Name()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("123");
|
|
|
+ var reader = new CharacterReader("123");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(0, ex.Column);
|
|
@@ -127,7 +128,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Trailing_Junk()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("Foo%");
|
|
|
+ var reader = new CharacterReader("Foo%");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(3, ex.Column);
|
|
@@ -138,7 +139,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Invalid_Property_Name_After_Owner()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("Foo.123");
|
|
|
+ var reader = new CharacterReader("Foo.123");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(4, ex.Column);
|
|
@@ -149,7 +150,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Whitespace_Between_Owner_And_Name()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("Foo. Bar");
|
|
|
+ var reader = new CharacterReader("Foo. Bar");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(4, ex.Column);
|
|
@@ -160,7 +161,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Too_Many_Segments()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("Foo.Bar.Baz");
|
|
|
+ var reader = new CharacterReader("Foo.Bar.Baz");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(8, ex.Column);
|
|
@@ -171,7 +172,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Too_Many_Namespaces()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("foo:bar:Baz");
|
|
|
+ var reader = new CharacterReader("foo:bar:Baz");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(8, ex.Column);
|
|
@@ -182,7 +183,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Parens_But_No_Owner()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("(Foo)");
|
|
|
+ var reader = new CharacterReader("(Foo)");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(1, ex.Column);
|
|
@@ -193,7 +194,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Parens_And_Namespace_But_No_Owner()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("(foo:Bar)");
|
|
|
+ var reader = new CharacterReader("(foo:Bar)");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(1, ex.Column);
|
|
@@ -204,7 +205,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Missing_Close_Parens()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("(Foo.Bar");
|
|
|
+ var reader = new CharacterReader("(Foo.Bar");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(8, ex.Column);
|
|
@@ -215,7 +216,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
|
|
|
public void Fails_With_Unexpected_Close_Parens()
|
|
|
{
|
|
|
var target = new PropertyParser();
|
|
|
- var reader = new Reader("Foo.Bar)");
|
|
|
+ var reader = new CharacterReader("Foo.Bar)");
|
|
|
|
|
|
var ex = Assert.Throws<ExpressionParseException>(() => target.Parse(reader));
|
|
|
Assert.Equal(7, ex.Column);
|