예제 #1
0
        GenerateIdentitiesSample()
        {
            var sample   = new QualifiedElement();
            var expected = new[]
            {
                new IdentityElement(sample, ScopeCategories.Public, IdentityCategories.Namespace, "Hoge"),
                new IdentityElement(sample, ScopeCategories.Public, IdentityCategories.Namespace, "Piyo")
            };

            yield return(sample, expected);

            var storage = new PhysicalStorage(PathA);
            var ns      = new NameSpaceElement(storage);

            sample   = new QualifiedElement(ns);
            expected = new[] { new IdentityElement(sample, "Foo"), new IdentityElement(sample, "Bar") };

            yield return(sample, expected);


            ns       = new NameSpaceElement(ns);
            sample   = new QualifiedElement(ns);
            expected = new[] { new IdentityElement(sample, "System"), new IdentityElement(sample, "Collections") };

            yield return(sample, expected);
        }
        protected override IEnumerable <(IdentityElement sample, IDiscriminatedElement expected)> GenerateParentSample()
        {
            var expected = new QualifiedElement();
            var sample   = new IdentityElement(expected, ScopeCategories.Public, IdentityCategories.Class, "Hoge");

            yield return(sample, expected);
        }
예제 #3
0
        protected override IEnumerable <(IQualified x, IQualified y, IQualified z)> GenerateEquivalentSample()
        {
            var x = new QualifiedElement();
            var y = new QualifiedElement();
            var z = new QualifiedElement();

            _ = new IdentityElement(x, ScopeCategories.Public, IdentityCategories.Namespace, "Foo");
            _ = new IdentityElement(y, ScopeCategories.Public, IdentityCategories.Namespace, "Foo");
            _ = new IdentityElement(z, ScopeCategories.Public, IdentityCategories.Namespace, "Foo");

            yield return(x, y, z);

            x = new QualifiedElement(new NameSpaceElement(new PhysicalStorage(PathA)));
            y = new QualifiedElement(new NameSpaceElement(new PhysicalStorage(PathB)));
            z = new QualifiedElement(new NameSpaceElement(new PhysicalStorage(PathA)));

            _ = new IdentityElement(x, "Hoge");
            _ = new IdentityElement(y, "Hoge");
            _ = new IdentityElement(z, "Hoge");

            yield return(x, y, z);

            _ = new IdentityElement(x, "Piyo");
            _ = new IdentityElement(y, "Piyo");
            _ = new IdentityElement(z, "Piyo");

            yield return(x, y, z);
        }
예제 #4
0
        GenerateAggregateIdentitiesSample()
        {
            var sample = new NameSpaceElement();
            var nme    = new QualifiedElement(sample);

            var expected = new Stack <(ScopeCategories, IdentityCategories category, string identity)>();

            yield return(sample, expected);

            _ = new IdentityElement(nme, "Hoge");
            _ = new IdentityElement(nme, "Piyo");

            expected.Push((ScopeCategories.Public, IdentityCategories.Namespace, "Piyo"));
            expected.Push((ScopeCategories.Public, IdentityCategories.Namespace, "Hoge"));

            yield return(sample, expected);

            sample = new NameSpaceElement(sample);
            nme    = new QualifiedElement(sample);

            _ = new IdentityElement(nme, "Foo");
            _ = new IdentityElement(nme, "Bar");

            expected.Count.Is(0);

            expected.Push((ScopeCategories.Public, IdentityCategories.Namespace, "Bar"));
            expected.Push((ScopeCategories.Public, IdentityCategories.Namespace, "Foo"));

            yield return(sample, expected);
        }
예제 #5
0
        GenerateLogicallyTransitiveSample()
        {
            var storage = new PhysicalStorage(PathA);

            var x = new NameSpaceElement(storage);
            var q = new QualifiedElement(x);

            _ = new IdentityElement(q, "Tokeiya3");
            _ = new IdentityElement(q, "SharpSourceFinder");

            var y = new NameSpaceElement(storage);

            q = new QualifiedElement(y);
            _ = new IdentityElement(q, "Tokeiya3");
            _ = new IdentityElement(q, "SharpSourceFinder");


            storage = new PhysicalStorage(PathB);

            var z = new NameSpaceElement(storage);

            q = new QualifiedElement(z);
            _ = new IdentityElement(q, "Tokeiya3");
            _ = new IdentityElement(q, "SharpSourceFinder");

            yield return(x, y, z);
        }
        GenerateGetAncestorsSample()
        {
            var ns     = new NameSpaceElement(new PhysicalStorage(PathA));
            var q      = new QualifiedElement(ns);
            var sample = new IdentityElement(q, "Identity");

            yield return(sample, new IDiscriminatedElement[] { q, ns });
예제 #7
0
        GenerateQualifiedNameSample()
        {
            var sample   = new NameSpaceElement(new PhysicalStorage(PathA));
            var expected = new QualifiedElement(sample);

            yield return(sample, expected);

            _ = new IdentityElement(expected, "Foo");
            _ = new IdentityElement(expected, "Bar");

            yield return(sample, expected);


            sample   = new NameSpaceElement(sample);
            expected = new QualifiedElement(sample);
            _        = new IdentityElement(expected, "Hoge");
            _        = new IdentityElement(expected, "Piyo");

            expected = sample.GetQualifiedName();

            expected.Identities.Count.Is(4);

            foreach (var elem in expected.Identities)
            {
                elem.Category.Is(IdentityCategories.Namespace);
                elem.From.Is(expected);
            }

            expected.Identities[0].Name.Is("Foo");
            expected.Identities[1].Name.Is("Bar");
            expected.Identities[2].Name.Is("Hoge");
            expected.Identities[3].Name.Is("Piyo");

            yield return(sample, expected);
        }
예제 #8
0
                      expectedFrom)> GenerateSample()
        {
            var q      = new QualifiedElement();
            var sample = new IdentityElement(q, ScopeCategories.Public, IdentityCategories.Class, "Hoge");

            yield return(sample, "Hoge", ScopeCategories.Public, IdentityCategories.Class, q);
        }
예제 #9
0
        static (QualifiedElement, IReadOnlyList <IdentityElement>) AttachName(IDiscriminatedElement element,
                                                                              params string[] names)
        {
            var q  = new QualifiedElement(element);
            var id = names.Select(n => new IdentityElement(q, n)).ToArray();

            return(q, id);
        }
예제 #10
0
        GenerateErrSample()
        {
            var sample = new NameSpaceElement(new PhysicalStorage(PathA));

            var q = new QualifiedElement();

            yield return(sample, q);
        }
        GeneratePhysicalStorageSample()
        {
            var storage = new PhysicalStorage(PathA);
            var ns      = new NameSpaceElement(storage);
            var q       = new QualifiedElement(ns);
            var sample  = new IdentityElement(q, "Name");

            yield return(sample, storage);
        }
        protected override IEnumerable <(IdentityElement x, IdentityElement y)> GenerateLogicallyInEquivalentSample()
        {
            var qx = new QualifiedElement();
            var x  = new IdentityElement(qx, ScopeCategories.Public, IdentityCategories.Delegate, "Hoge");

            var qy = new QualifiedElement();
            var y  = new IdentityElement(qy, ScopeCategories.Public, IdentityCategories.Class, "Hoge");

            yield return(x, y);
        }
예제 #13
0
        static IQualified AttachName(IDiscriminatedElement target, params string[] name)
        {
            var q = new QualifiedElement(target);

            foreach (var s in name)
            {
                _ = new IdentityElement(q, s);
            }

            return(q);
        }
예제 #14
0
        static QualifiedElement AttachName(IDiscriminatedElement target, params string[] names)
        {
            var ret = new QualifiedElement(target);

            foreach (var name in names)
            {
                _ = new IdentityElement(ret, name);
            }

            return(ret);
        }
        static QualifiedElement AttachName(IDiscriminatedElement element, params string[] names)
        {
            var q = new QualifiedElement(element);

            foreach (var name in names)
            {
                _ = new IdentityElement(q, name);
            }

            return(q);
        }
        protected override IEnumerable <(IdentityElement x, IdentityElement y)> GeneratePhysicallyInEqualitySample()
        {
            var ns = new NameSpaceElement(new PhysicalStorage(PathA));
            var q  = new QualifiedElement(ns);
            var x  = new IdentityElement(q, "Foo");

            ns = new NameSpaceElement(new PhysicalStorage(PathB));
            q  = new QualifiedElement(ns);
            var y = new IdentityElement(q, "Foo");

            yield return(x, y);
        }
        static (QualifiedElement, IReadOnlyList <IdentityElement>) AttachName(IDiscriminatedElement element,
                                                                              params string[] names)
        {
            var list = new List <IdentityElement>();
            var ret  = new QualifiedElement(element);

            foreach (var name in names)
            {
                list.Add(new IdentityElement(ret, name));
            }

            return(ret, list);
        }
예제 #18
0
        GenerateLogicallyInEquivalentSample()
        {
            var storage = new PhysicalStorage(PathA);

            var x = new NameSpaceElement(storage);
            var q = new QualifiedElement(x);

            _ = new IdentityElement(q, "Tokeiya3");

            var y = new NameSpaceElement(storage);

            _ = new IdentityElement(new QualifiedElement(y), "tokeiya3");

            yield return(x, y);
        }
        GeneratePhysicallyTransitiveSample()
        {
            var ns = new NameSpaceElement(new PhysicalStorage(PathA));
            var q  = new QualifiedElement(ns);
            var x  = new IdentityElement(q, "Foo");

            ns = new NameSpaceElement(new PhysicalStorage(PathA));
            q  = new QualifiedElement(ns);
            var y = new IdentityElement(q, "Foo");

            ns = new NameSpaceElement(new PhysicalStorage(PathA));
            q  = new QualifiedElement(ns);
            var z = new IdentityElement(q, "Foo");

            yield return(x, y, z);
        }
        GenerateLogicallyTransitiveSample()
        {
            var storage = new PhysicalStorage(PathA);
            var ns      = new NameSpaceElement(storage);
            var qx      = new QualifiedElement(ns);
            var x       = new IdentityElement(qx, "Hoge");

            ns = new NameSpaceElement(new PhysicalStorage(PathB));
            var qy = new QualifiedElement(ns);
            var y  = new IdentityElement(qy, "Hoge");

            ns = new NameSpaceElement(new PhysicalStorage(PathB));
            var qz = new QualifiedElement(ns);
            var z  = new IdentityElement(qz, "Hoge");

            yield return(x, y, z);
        }
예제 #21
0
        protected override IEnumerable <(EnumElement sample, IQualified expected)> GenerateQualifiedNameSample()
        {
            var ns = new NameSpaceElement(new PhysicalStorage(PathA));

            AttachName(ns, NameSpaceA);

            var sample = new EnumElement(ns, ScopeCategories.Public);

            AttachName(sample, "Sample");

            var expected = new QualifiedElement();

            _ = new IdentityElement(expected, ScopeCategories.Public, IdentityCategories.Namespace, NameSpaceA);
            _ = new IdentityElement(expected, ScopeCategories.Public, IdentityCategories.Enum, "Sample");

            yield return(sample, expected);
        }
예제 #22
0
        public void OrderedEquivalentTest()
        {
            var x = new QualifiedElement();
            var y = new QualifiedElement();

            _ = new IdentityElement(x, ScopeCategories.Public, IdentityCategories.Namespace, "Foo");
            _ = new IdentityElement(y, ScopeCategories.Public, IdentityCategories.Namespace, "Foo");

            _ = new IdentityElement(x, ScopeCategories.Public, IdentityCategories.Namespace, "Bar");
            _ = new IdentityElement(y, ScopeCategories.Public, IdentityCategories.Namespace, "Hoge");

            x.IsEquivalentTo(y, 1).IsTrue();
            y.IsEquivalentTo(x, 1).IsTrue();

            x.IsEquivalentTo(y, 2).IsFalse();
            y.IsEquivalentTo(x, 2).IsFalse();

            Assert.Throws <ArgumentOutOfRangeException>(() => x.IsEquivalentTo(y, 0));
        }
예제 #23
0
        GeneratePhysicallyInEqualitySample()
        {
            var x = new NameSpaceElement(new PhysicalStorage(PathA));
            var q = new QualifiedElement(x);

            _ = new IdentityElement(q, "Tokeiya3");

            var y = new NameSpaceElement(new PhysicalStorage(PathA));

            _ = new IdentityElement(new QualifiedElement(y), "tokeiya3");

            yield return(x, y);

            x = new NameSpaceElement(new PhysicalStorage(PathA));
            _ = new IdentityElement(new QualifiedElement(x), "Tokeiya3");

            y = new NameSpaceElement(new PhysicalStorage(PathB));
            _ = new IdentityElement(new QualifiedElement(y), "Tokeiya3");

            yield return(x, y);
        }
예제 #24
0
        protected override IEnumerable <(IIdentity x, IIdentity y)> GenerateInEquivalentSample()
        {
            var q = new QualifiedElement();
            var x = new IdentityElement(q, ScopeCategories.Public, IdentityCategories.Namespace, "Hoge");
            var y = new IdentityElement(q, ScopeCategories.Public, IdentityCategories.Namespace, "Hoge");

            yield return(x, y);

            x = new IdentityElement(new QualifiedElement(), ScopeCategories.Public, IdentityCategories.Namespace, "Hoge");
            y = new IdentityElement(new QualifiedElement(), ScopeCategories.Public, IdentityCategories.Class, "Hoge");

            yield return(x, y);

            x = new IdentityElement(new QualifiedElement(), ScopeCategories.Public, IdentityCategories.Class, "Foo");
            y = new IdentityElement(new QualifiedElement(), ScopeCategories.Public, IdentityCategories.Class, "Bar");
            yield return(x, y);

            x = new IdentityElement(new QualifiedElement(), ScopeCategories.Internal, IdentityCategories.Class, "Foo");
            y = new IdentityElement(new QualifiedElement(), ScopeCategories.Public, IdentityCategories.Class, "Foo");
            yield return(x, y);
        }
        protected override IEnumerable <(InterfaceElement sample, IQualified expected)> GenerateQualifiedNameSample()
        {
            IDiscriminatedElement parent = new NameSpaceElement(new PhysicalStorage(PathA));

            AttachName(parent, "NameSpace");

            parent = new ClassElement(parent, ScopeCategories.Public, false, false, false, false, false);
            AttachName(parent, "Class");

            var sample = new InterfaceElement(parent, ScopeCategories.Public, false, false);

            AttachName(sample, "ISample");

            var expected = new QualifiedElement();

            _ = new IdentityElement(expected, ScopeCategories.Public, IdentityCategories.Namespace, "NameSpace");
            _ = new IdentityElement(expected, ScopeCategories.Public, IdentityCategories.Class, "Class");
            _ = new IdentityElement(expected, ScopeCategories.Public, IdentityCategories.Interface, "ISample");


            yield return(sample, expected);
        }
        GenerateDescendantsSample()
        {
            var list = new List <IDiscriminatedElement>();

            var ns = new NameSpaceElement(new PhysicalStorage(PathA));

            AttachName(ns, NameSpaceA);

            var sample = new InterfaceElement(ns, ScopeCategories.Public, false, false);
            var q      = new QualifiedElement(sample);

            list.Add(q);
            list.Add(new IdentityElement(q, "ISample"));

            IDiscriminatedElement child =
                new ClassElement(sample, ScopeCategories.Public, false, false, false, false, false);

            q = new QualifiedElement(child);
            list.Add(child);
            list.Add(q);
            list.Add(new IdentityElement(q, "InnerClass"));

            child = new StructElement(sample, ScopeCategories.Public, false, false);
            q     = new QualifiedElement(child);
            list.Add(child);
            list.Add(q);
            list.Add(new IdentityElement(q, "InnerStruct"));

            yield return(sample, list);


            child = new StructElement(child, ScopeCategories.Public, false, false);
            q     = new QualifiedElement(child);
            list.Add(child);
            list.Add(q);
            list.Add(new IdentityElement(q, "InnerInner"));

            yield return(sample, list);
        }
예제 #27
0
        protected override IEnumerable <(IQualified x, IQualified y)> GenerateInEquivalentSample()
        {
            var x = new QualifiedElement();
            var y = new QualifiedElement();

            _ = new IdentityElement(x, ScopeCategories.Public, IdentityCategories.Class, "Hoge");
            _ = new IdentityElement(y, ScopeCategories.Public, IdentityCategories.Delegate, "Hoge");
            yield return(x, y);

            x = new QualifiedElement();
            y = new QualifiedElement();

            _ = new IdentityElement(x, ScopeCategories.Public, IdentityCategories.Namespace, "Hoge");
            _ = new IdentityElement(y, ScopeCategories.Public, IdentityCategories.Namespace, "hoge");
            yield return(x, y);

            x = new QualifiedElement();
            y = new QualifiedElement();

            _ = new IdentityElement(x, ScopeCategories.Public, IdentityCategories.Class, "Hoge");
            _ = new IdentityElement(y, ScopeCategories.Internal, IdentityCategories.Class, "Hoge");
            yield return(x, y);
        }
예제 #28
0
        GenerateDescendantsSample()
        {
            var expected = new List <IDiscriminatedElement>();

            var sample = new NameSpaceElement(new PhysicalStorage(PathA));
            var name   = new QualifiedElement(sample);
            var elem   = new IdentityElement(name, "Tokeiya3");

            expected.Add(name);
            expected.Add(elem);


            var a = new NameSpaceElement(sample);

            name = new QualifiedElement(a);
            elem = new IdentityElement(name, "SharpSourceFinder");

            expected.Add(a);
            expected.Add(name);
            expected.Add(elem);

            yield return(sample, expected);
        }
예제 #29
0
        protected override IEnumerable <(IIdentity sample, int expected)> GenerateOrderSample()
        {
            var q = new QualifiedElement();

            return(new (IIdentity sample, int expected)[]