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); }
public bool IsEquivalentTo(IQualified other, int order) { if (order <= 0) { throw new ArgumentOutOfRangeException(nameof(order)); } if (ReferenceEquals(this, other)) { return(true); } if (Identities.Count < order || other.Identities.Count < order) { return(false); } for (int i = 0; i < order; i++) { if (!Identities[i].IsEquivalentTo(other.Identities[i])) { return(false); } } return(true); }
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); }
public static IQualified <Id, Term <Id> > TypeOf <Id, T>(this IQualified <Id, T> expression) { return(new Qualified <Id, Term <Id> >( universe: new Term <Id> .Universe(expression.Universe.Rank + 1), type: expression.Universe, term: expression.Type)); }
static void areEquivalent(IIdentity actual, IdentityCategories expectedCategory, string expectedName, IQualified expectedQualified, int expectedOrder) { actual.Category.Is(expectedCategory); actual.Name.Is(expectedName); actual.From.IsSameReferenceAs(expectedQualified); actual.Order.Is(expectedOrder); }
protected override void AreEqual(IQualified actual, IQualified expected) { actual.Identities.Count.Is(expected.Identities.Count); for (int i = 0; i < expected.Identities.Count; i++) { actual.Identities[i].Category.Is(expected.Identities[i].Category); actual.Identities[i].Name.Is(expected.Identities[i].Name); } }
protected override void AreEqual(IQualified actual, IQualified expected) { actual.Identities.Count.Is(expected.Identities.Count); for (int i = 0; i < expected.Identities.Count; i++) { var a = actual.Identities[i]; var e = actual.Identities[i]; a.Category.Is(e.Category); a.Name.Is(e.Name); a.Order.Is(e.Order); } }
public bool IsEquivalentTo(IQualified other) { if (ReferenceEquals(this, other)) { return(true); } if (Identities.Count != other.Identities.Count) { return(false); } for (int i = 0; i < Identities.Count; i++) { if (!Identities[i].IsEquivalentTo(other.Identities[i])) { return(false); } } return(true); }
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); }
protected override void AreEqual(IQualified actual, IQualified expected) => actual.IsEquivalentTo(expected).IsTrue();
public string ToString(IQualified <Id, Term <Id> > expression) { return(ToString(expression.Term)); }
protected override void AreEqual(IQualified actual, IQualified expected) => ReferenceEquals(actual, expected).IsTrue();
public Destructor(IQualified <Id, Term <Id> > focus, Continuation <Id> continuation) : base(Productions.Destructor) { Focus = focus; Continuation = continuation; }
public Pair(IQualified <Id, Id> dependency, Term <Id> dependent) : base(Tags.Pair) { Dependency = dependency; Dependent = dependent; }