コード例 #1
0
        public void ProjectProperties_ProjectFullInstance_ReturnsAllProperties()
        {
            //prepare
            var instance   = new QueryTranslatorTestClass();
            var expression = instance.CreateExpression(t => t);

            //act
            var projection = _projector.ProjectProperties(expression);

            //assert
            projection.ReturnType.Should().Be.EqualTo(typeof(QueryTranslatorTestClass));
            projection.SelectedProperties.Should().Have.SameSequenceAs(_properties);
            projection.Projection.DynamicInvoke(instance).Should().Be.SameInstanceAs(instance);
        }
コード例 #2
0
        public void ProjectProperties_ProjectSingleProperty_ReturnsProjectedProperties()
        {
            //prepare
            var instance = new QueryTranslatorTestClass {
                Property2 = "p2"
            };
            var expression = instance.CreateExpression(t => t.Property2);

            //act
            var projection = _projector.ProjectProperties(expression);

            //assert
            projection.ReturnType.Should().Be.EqualTo(typeof(string));
            projection.SelectedProperties.Count.Should().Be.EqualTo(1);
            projection.SelectedProperties.Should().Contain(new KeyValuePair <string, string>("Property2", "y"));
            projection.Projection.DynamicInvoke(instance).Should().Be.EqualTo("p2");
        }
コード例 #3
0
        public void ProjectProperties_ProjectAnonymousInstance_ReturnsProjectedProperties()
        {
            //prepare
            var instance = new QueryTranslatorTestClass {
                Property1 = "p1"
            };
            var expression =
                instance.CreateExpression(t => new { t.Property1, t.Property2, t.Property3, t.Property4, t.Property5 });

            //act
            var projection = _projector.ProjectProperties(expression);

            //assert
            projection.ReturnType.IsAnonymous().Should().Be.True();
            projection.SelectedProperties.Count.Should().Be.EqualTo(5);
            projection.Projection.DynamicInvoke(instance).PropertyValue <string>("Property1").Should().Be.EqualTo("p1");
        }
コード例 #4
0
        public void ProjectProperties_ProjectNewInstance_ReturnsProjectedProperties()
        {
            //prepare
            var instance = new QueryTranslatorTestClass {
                Property1 = "p1"
            };
            var expression = instance.CreateExpression(t => new QueryTranslatorTestClass {
                Property1 = t.Property1
            });

            //act
            var projection = _projector.ProjectProperties(expression);

            //assert
            projection.ReturnType.Should().Be.EqualTo(typeof(QueryTranslatorTestClass));
            projection.SelectedProperties.Count.Should().Be.EqualTo(1);
            projection.SelectedProperties.Should().Contain(new KeyValuePair <string, string>("Property1", "x"));
            projection.Projection.DynamicInvoke(instance)
            .As <QueryTranslatorTestClass>().Property1.Should().Be.EqualTo("p1");
        }