public void MethodValueParameterClosureTest()
        {
            using (var session = Domain.OpenSession())
                using (var tx = session.OpenTransaction()) {
                    var tester = new InheritorValueTypeTester(-1);

                    Domain.QueryCache.Clear();
                    Assert.That(tester.TestMethodParameter(session, idsPair.Second), Is.EqualTo(16.0m));
                    Assert.That(tester.TestMethodParameter(session, idsPair.First), Is.EqualTo(6.0m));

                    Assert.That(Domain.QueryCache.Count, Is.EqualTo(1));
                }
        }
        public void ForIndexClosureTest()
        {
            using (var session = Domain.OpenSession())
                using (var tx = session.OpenTransaction()) {
                    var tester = new InheritorValueTypeTester(-1);

                    Domain.QueryCache.Clear();
                    var results = tester.TestForIndex(session);
                    Assert.That(results.Length, Is.EqualTo(2));
                    Assert.That(results[0], Is.EqualTo(16.0m));
                    Assert.That(results[1], Is.EqualTo(6.0m));

                    Assert.That(Domain.QueryCache.Count, Is.EqualTo(1));
                }
        }
        public void StaticFieldClosureTest()
        {
            using (var session = Domain.OpenSession())
                using (var tx = session.OpenTransaction()) {
                    var tester = new InheritorValueTypeTester(-1);
                    InheritorValueTypeTester.StaticField = idsPair.First;

                    Domain.QueryCache.Clear();
                    Assert.That(tester.TestStaticField(session), Is.EqualTo(6.0m));

                    InheritorValueTypeTester.StaticField = idsPair.Second;
                    Assert.That(tester.TestStaticField(session), Is.EqualTo(16.0m));

                    Assert.That(Domain.QueryCache.Count, Is.EqualTo(1));
                }
        }
        public void InheritedValuePropertyClosureTest()
        {
            using (var session = Domain.OpenSession())
                using (var tx = session.OpenTransaction()) {
                    var first = new InheritorValueTypeTester(idsPair.First)
                    {
                        PublicProperty = idsPair.First
                    };
                    var second = new InheritorValueTypeTester(idsPair.Second)
                    {
                        PublicProperty = idsPair.Second
                    };

                    Domain.QueryCache.Clear();
                    var firstResult  = first.TestInheritedPublicProperty(session);
                    var secondResult = second.TestInheritedPublicProperty(session);
                    Assert.That(firstResult, Is.EqualTo(6.0m));
                    Assert.That(secondResult, Is.EqualTo(16.0m));
                    Assert.That(Domain.QueryCache.Count, Is.EqualTo(1));
                }
        }