public void ResolveDeclarationTest( string nameSpace, string name, string ctxNameSpace, string usingNameSpace, string nameToResolve, bool expectedMatch) { var declaration = DeclarationHelper.SetupDeclaration <IDeclaration <SyntaxNode> >(nameSpace, name); var contextDeclaration = DeclarationHelper.SetupDeclaration <IDeclaration <SyntaxNode> >(ctxNameSpace, "ctxName", m => { var usingDirectives = string.IsNullOrEmpty(usingNameSpace) ? Array.Empty <string>() : new[] { usingNameSpace }; m.SetupGet(d => d.UsingDirectives).Returns(usingDirectives); }); var declResolver = new DeclarationResolver(new[] { declaration }, (r, d) => { }); var resolvedDecl = declResolver.Resolve(nameToResolve, contextDeclaration); if (expectedMatch) { Assert.NotNull(resolvedDecl); Assert.Same(declaration, resolvedDecl); } else { Assert.Null(resolvedDecl); } }
/// <inheritdoc/> public IDeclarationResolver DeepLoad() { var declarations = this.Assemblies.SelectMany(a => a.Declarations) .Concat(this.Files.SelectMany(f => f.Declarations)); var resolver = new DeclarationResolver(declarations, this.loader.Load); resolver.Load(); return(resolver); }
public void FindDeclarationTest() { var declaration = DeclarationHelper.SetupDeclaration <IDeclaration <SyntaxNode> >("ns", "name"); var declResolver = new DeclarationResolver(new[] { declaration }, null); var fundDecl = Assert.Single(declResolver.Find(declaration.FullName)); Assert.Same(declaration, fundDecl); Assert.Null(declResolver.Find("unknown")); }
public void ResolveGenericDeclarationTest( string nameSpace, string name, string nameParam, string ctxNameSpace, string usingNameSpace, string nameToResolve, bool expectedMatch) { var genericParameter = Mock.Of <IGenericParameterDeclaration>(); var genericDeclaration = DeclarationHelper.SetupDeclaration <IGenericDeclaration <SyntaxNode> >(nameSpace, name, mock => { mock.SetupGet(x => x.GenericParameters).Returns(new[] { genericParameter }); }); var contextDeclaration = DeclarationHelper.SetupDeclaration <IDeclaration <SyntaxNode> >(ctxNameSpace, "ctxName", m => { var usingDirectives = string.IsNullOrEmpty(usingNameSpace) ? Array.Empty <string>() : new[] { usingNameSpace }; m.SetupGet(d => d.UsingDirectives).Returns(usingDirectives); }); var declarationParam = DeclarationHelper.SetupDeclaration <IDeclaration <SyntaxNode> >(nameSpace, nameParam); var declarationParamUse1 = DeclarationHelper.SetupDeclarationUse <IDeclarationUse <SyntaxNode> >(declarationParam); var declarationParamUse2 = DeclarationHelper.SetupDeclarationUse <IDeclarationUse <SyntaxNode> >(declarationParam); var declResolver = new DeclarationResolver(new[] { genericDeclaration }, (r, d) => { }); var resolvedGenericDecl1 = declResolver.Resolve( nameToResolve, new[] { declarationParamUse1 }, contextDeclaration); var resolvedGenericDecl2 = declResolver.Resolve( nameToResolve, new[] { declarationParamUse1, declarationParamUse2 }, contextDeclaration); var resolvedDecl = declResolver.Resolve(nameToResolve, contextDeclaration); Assert.Null(resolvedDecl); Assert.Null(resolvedGenericDecl2); if (expectedMatch) { Assert.NotNull(resolvedGenericDecl1); Assert.Same(genericDeclaration, resolvedGenericDecl1); } else { Assert.Null(resolvedGenericDecl1); } }