public void FilteringExtensionMethodShouldWork()
        {
            var rootEntities = new List <MockRootEntity>();
            var subEntities  = new List <MockSubEntity>();
            var root1        = new MockRootEntity {
                RootName = "Root1", Scope = "A"
            };
            var root2 = new MockRootEntity {
                RootName = "Root2", Scope = "B"
            };
            var root3 = new MockRootEntity {
                RootName = "Root3", Scope = "A"
            };
            var child1 = new MockSubEntity {
                SubName = "Child1"
            };
            var child2 = new MockSubEntity {
                SubName = "Child2"
            };
            var child3 = new MockSubEntity {
                SubName = "Child3"
            };

            rootEntities.Add(root1);
            rootEntities.Add(root2);
            rootEntities.Add(root3);
            subEntities.Add(child1);
            subEntities.Add(child2);
            subEntities.Add(child3);
            root1.Childs.Add(child1);
            root2.Childs.Add(child2);
            root3.Childs.Add(child3);
            child1.Parent = root1;
            child2.Parent = root2;
            child3.Parent = root3;

            EntityAccessControl.RegisterPropertyAsAccessControlClassification(
                (MockRootEntity e) => e.Scope, "AccessControlDimension1"
                );

            MockRootEntity[] filteredRootResult;
            MockSubEntity[]  filteredResult;

            filteredResult = subEntities.AsQueryable().AccessScopeFiltered().ToArray();
            Assert.AreEqual(0, filteredResult.Length);

            filteredRootResult = rootEntities.AsQueryable().AccessScopeFiltered().ToArray();
            Assert.AreEqual(0, filteredRootResult.Length);

            AccessControlContext.Current.AddClearance("AccessControlDimension1", "A");
            filteredResult = subEntities.AsQueryable().AccessScopeFiltered().ToArray();
            Assert.AreEqual(2, filteredResult.Length);

            filteredRootResult = rootEntities.AsQueryable().AccessScopeFiltered().ToArray();
            Assert.AreEqual(2, filteredRootResult.Length);

            AccessControlContext.Current.AddClearance("AccessControlDimension1", "B");
            filteredResult = subEntities.AsQueryable().AccessScopeFiltered().ToArray();
            Assert.AreEqual(3, filteredResult.Length);

            filteredRootResult = rootEntities.AsQueryable().AccessScopeFiltered().ToArray();
            Assert.AreEqual(3, filteredRootResult.Length);
        }