Пример #1
0
		public void TestxNull ()
		{
			var markupString = "{x:Null}";
			var serviceProvider = new Internals.XamlServiceProvider (null, null);
			var result = (new MarkupExtensionParser ()).ParseExpression (ref markupString, serviceProvider);

			Assert.IsNull (result);
		}
Пример #2
0
        public void TestxNull()
        {
            var markupString    = "{x:Null}";
            var serviceProvider = new Internals.XamlServiceProvider(null, null);
            var result          = (new MarkupExtensionParser()).ParseExpression(ref markupString, serviceProvider);

            Assert.IsNull(result);
        }
        public void InvalidExpressions(string expression)
        {
            var serviceProvider = new Internals.XamlServiceProvider(null, null);

            serviceProvider.IXamlTypeResolver   = typeResolver;
            serviceProvider.IProvideValueTarget = new MockValueProvider("Bar", new ReverseConverter());
            Assert.Throws <XamlParseException>(() => (new MarkupExtensionParser()).ParseExpression(ref expression, serviceProvider));
        }
Пример #4
0
        public void ThrowOnMarkupExtensionNotFound()
        {
            var markupString    = "{local:Missing}";
            var serviceProvider = new Internals.XamlServiceProvider(null, null)
            {
                IXamlTypeResolver = typeResolver,
            };

            Assert.Throws <XamlParseException>(() => (new MarkupExtensionParser()).ParseExpression(ref markupString, serviceProvider));
        }
Пример #5
0
        public void TestExtensionWithParameters()
        {
            var markupString    = "{local:AppendMarkupExtension Value0=Foo, Value1=Bar}";
            var serviceProvider = new Internals.XamlServiceProvider(null, null)
            {
                IXamlTypeResolver = typeResolver,
            };
            var result = (new MarkupExtensionParser()).ParseExpression(ref markupString, serviceProvider);

            Assert.That(result, Is.InstanceOf <string>());
            Assert.AreEqual("FooBar", result);
        }
Пример #6
0
        public void TestLookupWithSuffix()
        {
            var markupString    = "{local:Baa}";
            var serviceProvider = new Internals.XamlServiceProvider(null, null)
            {
                IXamlTypeResolver = typeResolver,
            };
            var result = (new MarkupExtensionParser()).ParseExpression(ref markupString, serviceProvider);

            Assert.That(result, Is.InstanceOf <string>());
            Assert.AreEqual("BaaExtension", result);
        }
Пример #7
0
        public void TestLookupOrder()
        {
            //The order of lookup is to look for the Extension-suffixed class name first and then look for the class name without the Extension suffix.
            var markupString    = "{local:Fuu}";
            var serviceProvider = new Internals.XamlServiceProvider(null, null)
            {
                IXamlTypeResolver = typeResolver,
            };
            var result = (new MarkupExtensionParser()).ParseExpression(ref markupString, serviceProvider);

            Assert.That(result, Is.InstanceOf <string>());
            Assert.AreEqual("FuuExtension", result);
        }
Пример #8
0
		public override void Setup ()
		{
			base.Setup ();
			var nsManager = new XmlNamespaceManager (new NameTable ());
			nsManager.AddNamespace ("local", "clr-namespace:Xamarin.Forms.Xaml.UnitTests;assembly=Xamarin.Forms.Xaml.UnitTests");
			nsManager.AddNamespace ("sys", "clr-namespace:System;assembly=mscorlib");
			nsManager.AddNamespace ("x", "http://schemas.microsoft.com/winfx/2006/xaml");

			typeResolver = new Internals.XamlTypeResolver (nsManager, XamlParser.GetElementType, Assembly.GetCallingAssembly ());

			serviceProvider = new Internals.XamlServiceProvider (null, null) { 
				IXamlTypeResolver = typeResolver,
			};
		}
Пример #9
0
        public void TestServiceProvider()
        {
            var markupString    = "{local:AccessServiceProviderExtension}";
            var serviceProvider = new Internals.XamlServiceProvider(null, null)
            {
                IProvideValueTarget = new Internals.XamlValueTargetProvider(null, null, null, null),
                IXamlTypeResolver   = typeResolver,
                IRootObjectProvider = new Internals.XamlRootObjectProvider(null),
            };

            var result = (new MarkupExtensionParser()).ParseExpression(ref markupString, serviceProvider);

            Assert.That(result, Is.InstanceOf <string>());
            Assert.AreEqual("TrueTrueTrue", result);
        }
Пример #10
0
        public override void Setup()
        {
            base.Setup();
            var nsManager = new XmlNamespaceManager(new NameTable());

            nsManager.AddNamespace("local", "clr-namespace:Xamarin.Forms.Xaml.UnitTests;assembly=Xamarin.Forms.Xaml.UnitTests");
            nsManager.AddNamespace("sys", "clr-namespace:System;assembly=mscorlib");
            nsManager.AddNamespace("x", "http://schemas.microsoft.com/winfx/2006/xaml");

            typeResolver = new Internals.XamlTypeResolver(nsManager, XamlParser.GetElementType, Assembly.GetCallingAssembly());

            serviceProvider = new Internals.XamlServiceProvider(null, null)
            {
                IXamlTypeResolver = typeResolver,
            };
        }
Пример #11
0
        public void TestxStatic()
        {
            //{x:Static Member=prefix:typeName.staticMemberName}
            //{x:Static prefix:typeName.staticMemberName}

            //The code entity that is referenced must be one of the following:
            // - A constant
            // - A static property
            // - A field
            // - An enumeration value
            // All other cases should throw

            var serviceProvider = new Internals.XamlServiceProvider(null, null)
            {
                IXamlTypeResolver = typeResolver,
            };

            //Static property
            var markupString = @"{x:Static Member=""local:MockxStatic.MockStaticProperty""}";

            Assert.AreEqual("Property", (new MarkupExtensionParser()).ParseExpression(ref markupString, serviceProvider));

            //constant
            markupString = @"{x:Static Member=""local:MockxStatic.MockConstant""}";
            Assert.AreEqual("Constant", (new MarkupExtensionParser()).ParseExpression(ref markupString, serviceProvider));

            //field
            markupString = @"{x:Static Member=""local:MockxStatic.MockField""}";
            Assert.AreEqual("Field", (new MarkupExtensionParser()).ParseExpression(ref markupString, serviceProvider));

            //enum
            markupString = @"{x:Static Member=""local:MockEnum.Second""}";
            Assert.AreEqual(MockEnum.Second, (new MarkupExtensionParser()).ParseExpression(ref markupString, serviceProvider));

            //throw on InstanceProperty
            markupString = @"{x:Static Member=""local:MockxStatic.InstanceProperty""}";
            Assert.Throws <XamlParseException> (() => (new MarkupExtensionParser()).ParseExpression(ref markupString, serviceProvider));

            //quotes are optional
            markupString = @"{x:Static Member=local:MockxStatic.MockStaticProperty}";
            Assert.AreEqual("Property", (new MarkupExtensionParser()).ParseExpression(ref markupString, serviceProvider));

            //Member is optional
            markupString = @"{x:Static local:MockxStatic.MockStaticProperty}";
            Assert.AreEqual("Property", (new MarkupExtensionParser()).ParseExpression(ref markupString, serviceProvider));
        }
Пример #12
0
		public void TestxStatic ()
		{
			//{x:Static Member=prefix:typeName.staticMemberName}
			//{x:Static prefix:typeName.staticMemberName}

			//The code entity that is referenced must be one of the following:
			// - A constant
			// - A static property
			// - A field
			// - An enumeration value
			// All other cases should throw

			var serviceProvider = new Internals.XamlServiceProvider (null, null) { 
				IXamlTypeResolver = typeResolver,
			};

			//Static property
			var markupString = @"{x:Static Member=""local:MockxStatic.MockStaticProperty""}";
			Assert.AreEqual ("Property", (new MarkupExtensionParser ()).ParseExpression (ref markupString, serviceProvider));

			//constant
			markupString = @"{x:Static Member=""local:MockxStatic.MockConstant""}";
			Assert.AreEqual ("Constant", (new MarkupExtensionParser ()).ParseExpression (ref markupString, serviceProvider));

			//field
			markupString = @"{x:Static Member=""local:MockxStatic.MockField""}";
			Assert.AreEqual ("Field", (new MarkupExtensionParser ()).ParseExpression (ref markupString, serviceProvider));

			//enum
			markupString = @"{x:Static Member=""local:MockEnum.Second""}";
			Assert.AreEqual (MockEnum.Second, (new MarkupExtensionParser ()).ParseExpression (ref markupString, serviceProvider));

			//throw on InstanceProperty
			markupString = @"{x:Static Member=""local:MockxStatic.InstanceProperty""}";
			Assert.Throws<XamlParseException> (()=> (new MarkupExtensionParser ()).ParseExpression (ref markupString, serviceProvider));

			//quotes are optional
			markupString = @"{x:Static Member=local:MockxStatic.MockStaticProperty}";
			Assert.AreEqual ("Property", (new MarkupExtensionParser ()).ParseExpression (ref markupString, serviceProvider));

			//Member is optional
			markupString = @"{x:Static local:MockxStatic.MockStaticProperty}";
			Assert.AreEqual ("Property", (new MarkupExtensionParser ()).ParseExpression (ref markupString, serviceProvider));
		}
Пример #13
0
		public void ThrowOnMarkupExtensionNotFound ()
		{
			var markupString = "{local:Missing}";
			var serviceProvider = new Internals.XamlServiceProvider (null, null) {
				IXamlTypeResolver = typeResolver,
			};
			Assert.Throws<XamlParseException> (()=> (new MarkupExtensionParser ()).ParseExpression (ref markupString, serviceProvider));
		}
Пример #14
0
		public void TestExtensionWithParameters ()
		{
			var markupString = "{local:AppendMarkupExtension Value0=Foo, Value1=Bar}";
			var serviceProvider = new Internals.XamlServiceProvider (null, null) {
				IXamlTypeResolver = typeResolver,
			};
			var result = (new MarkupExtensionParser ()).ParseExpression (ref markupString, serviceProvider);

			Assert.That (result, Is.InstanceOf<string> ());
			Assert.AreEqual ("FooBar", result);
		}
Пример #15
0
		public void TestServiceProvider ()
		{
			var markupString = "{local:AccessServiceProviderExtension}";
			var serviceProvider = new Internals.XamlServiceProvider (null, null) {
				IProvideValueTarget = new Internals.XamlValueTargetProvider (null, null, null, null),
				IXamlTypeResolver = typeResolver,
				IRootObjectProvider = new Internals.XamlRootObjectProvider(null),
			};

			var result = (new MarkupExtensionParser ()).ParseExpression (ref markupString, serviceProvider);

			Assert.That (result, Is.InstanceOf<string> ());
			Assert.AreEqual ("TrueTrueTrue", result);
		}
Пример #16
0
		public void TestLookupWithSuffix ()
		{
			var markupString = "{local:Baa}";
			var serviceProvider = new Internals.XamlServiceProvider (null, null) {
				IXamlTypeResolver = typeResolver,
			};
			var result = (new MarkupExtensionParser ()).ParseExpression (ref markupString, serviceProvider);

			Assert.That (result, Is.InstanceOf<string> ());
			Assert.AreEqual ("BaaExtension", result);
		}
Пример #17
0
		public void TestLookupOrder ()
		{
			//The order of lookup is to look for the Extension-suffixed class name first and then look for the class name without the Extension suffix.
			var markupString = "{local:Fuu}";
			var serviceProvider = new Internals.XamlServiceProvider (null, null) {
				IXamlTypeResolver = typeResolver,
			};
			var result = (new MarkupExtensionParser ()).ParseExpression (ref markupString, serviceProvider);

			Assert.That (result, Is.InstanceOf<string> ());
			Assert.AreEqual ("FuuExtension", result);
		}