/* * DynamORM - Dynamic Object-Relational Mapping library. * Copyright (c) 2012, Grzegorz Russek (grzegorz.russek@gmail.com) * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */ using System; using DynamORM.Helpers.Dynamics; using NUnit.Framework; namespace DynamORM.Tests.Helpers.Dynamic { /// tests. [TestFixture] public class DynamicParserTests { /// /// Tests the get member. /// [Test] public void TestGetMember() { Func f = x => x.SomePropery; var val = DynamicParser.Parse(f).Result as DynamicParser.Node.GetMember; Assert.NotNull(val); Assert.AreEqual("SomePropery", val.Name); } /// /// Tests the set member. /// [Test] public void TestSetMember() { Func f = x => x.SomePropery = "value"; var val = DynamicParser.Parse(f).Result as DynamicParser.Node.SetMember; Assert.NotNull(val); Assert.AreEqual("SomePropery", val.Name); Assert.AreEqual("value", val.Value); } /// /// Tests the index of the get. /// [Test] public void TestGetIndex() { Func f = x => x.SomePropery[0]; var val = DynamicParser.Parse(f).Result as DynamicParser.Node.GetIndex; Assert.NotNull(val); } /// /// Tests the index of the set. /// [Test] public void TestSetIndex() { Func f = x => x.SomePropery[0] = "value"; var val = DynamicParser.Parse(f).Result as DynamicParser.Node.SetIndex; Assert.NotNull(val); Assert.AreEqual("value", val.Value); } /// /// Tests something. /// [Test] public void TestSomething() { Func f = x => x.SomePropery == "value" || x.OtherProperty == -1; var p = DynamicParser.Parse(f); var val = p.Result as DynamicParser.Node.Binary; Assert.NotNull(val); var left = val.Host as DynamicParser.Node.Binary; var right = val.Right as DynamicParser.Node.Binary; Assert.NotNull(left); Assert.NotNull(right); Assert.IsInstanceOf(left.Host); Assert.IsInstanceOf(right.Host); Assert.AreEqual("value", left.Right); Assert.AreEqual(-1, right.Right); } } }