public async Task UnrelatedFiles() { const string code = @" from bar import baz class spam: __bug__ = 0 def eggs(ham: spam): return baz(ham.__bug__) "; const string barCode = @" def baz(quux): pass "; await TestData.CreateTestSpecificFileAsync("bar.py", barCode); var analysis = await GetAnalysisAsync(code); var rs = new ReferenceSource(Services); var refs = await rs.FindAllReferencesAsync(analysis.Document.Uri, new SourceLocation(5, 8), ReferenceSearchOptions.All); refs.Should().HaveCount(2); refs[0].range.Should().Be(4, 4, 4, 11); refs[0].uri.Should().Be(analysis.Document.Uri); refs[1].range.Should().Be(7, 19, 7, 26); refs[1].uri.Should().Be(analysis.Document.Uri); }
/// <summary> /// Resolve the properties of the current <see cref="Citation"/> from its <see cref="DTO.Thing"/> counter-part /// </summary> /// <param name="dtoThing">The source <see cref="DTO.Thing"/></param> internal override void ResolveProperties(DTO.Thing dtoThing) { if (dtoThing == null) { throw new ArgumentNullException("dtoThing"); } var dto = dtoThing as DTO.Citation; if (dto == null) { throw new InvalidOperationException(string.Format("The DTO type {0} does not match the type of the current Citation POCO.", dtoThing.GetType())); } this.ExcludedDomain.ResolveList(dto.ExcludedDomain, dto.IterationContainerId, this.Cache); this.ExcludedPerson.ResolveList(dto.ExcludedPerson, dto.IterationContainerId, this.Cache); this.IsAdaptation = dto.IsAdaptation; this.Location = dto.Location; this.ModifiedOn = dto.ModifiedOn; this.Remark = dto.Remark; this.RevisionNumber = dto.RevisionNumber; this.ShortName = dto.ShortName; this.Source = this.Cache.Get <ReferenceSource>(dto.Source, dto.IterationContainerId) ?? SentinelThingProvider.GetSentinel <ReferenceSource>(); this.ThingPreference = dto.ThingPreference; this.ResolveExtraProperties(); }
public void Verify_that_when_referenced_DeprecatableThing_Is_Deprecated_result_is_returned() { var organization = new Organization { Iid = Guid.Parse("9f4daf6a-09e2-4ed5-a8be-79a0765654ca"), ShortName = "RHEA", IsDeprecated = true }; var referencedReferenceSource = new ReferenceSource { Iid = Guid.Parse("3c44c0e3-d2de-43f9-9636-8235984dc4bf"), ShortName = "REFERENCED-SOURCE", IsDeprecated = true }; this.referenceSource.Publisher = organization; this.referenceSource.PublishedIn = referencedReferenceSource; var results = this.referenceSourceRuleChecker.ChecksWhetherAReferencedDeprecatableThingIsDeprecated(this.referenceSource); var first = results.First(); Assert.That(first.Id, Is.EqualTo("MA-0500")); Assert.That(first.Description, Is.EqualTo("The referenced Organization 9f4daf6a-09e2-4ed5-a8be-79a0765654ca:RHEA of ReferenceSource.Publisher is deprecated")); Assert.That(first.Thing, Is.EqualTo(this.referenceSource)); Assert.That(first.Severity, Is.EqualTo(SeverityKind.Warning)); var last = results.Last(); Assert.That(last.Id, Is.EqualTo("MA-0500")); Assert.That(last.Description, Is.EqualTo("The referenced ReferenceSource 3c44c0e3-d2de-43f9-9636-8235984dc4bf:REFERENCED-SOURCE of ReferenceSource.PublishedIn is deprecated")); Assert.That(last.Thing, Is.EqualTo(this.referenceSource)); Assert.That(last.Severity, Is.EqualTo(SeverityKind.Warning)); }
public void Verify_that_when_Container_is_ReferenceDataLibrary_and_ReferenceSource_is_not_in_chain_of_Rdls_result_is_returned() { var otherSiteReferenceDataLibrary = new SiteReferenceDataLibrary(); this.siteDirectory.SiteReferenceDataLibrary.Add(otherSiteReferenceDataLibrary); var referenceSource = new ReferenceSource { Iid = Guid.Parse("3c44c0e3-d2de-43f9-9636-8235984dc4bf"), ShortName = "SOURCE" }; otherSiteReferenceDataLibrary.ReferenceSource.Add(referenceSource); var siteReferenceDataLibrary = new SiteReferenceDataLibrary(); var category = new Category(); var categoryDefinition = new Definition(); var categoryCitation = new Citation(); categoryCitation.Source = referenceSource; this.siteDirectory.SiteReferenceDataLibrary.Add(siteReferenceDataLibrary); siteReferenceDataLibrary.DefinedCategory.Add(category); category.Definition.Add(categoryDefinition); categoryDefinition.Citation.Add(categoryCitation); var result = this.citationRuleChecker.CheckWhetherReferencedReferenceSourceIsInChainOfRdls(categoryCitation).Single(); Assert.That(result.Id, Is.EqualTo("MA-0260")); Assert.That(result.Description, Is.EqualTo("The referenced ReferenceSource 3c44c0e3-d2de-43f9-9636-8235984dc4bf:SOURCE of Citation.Source is not in the chain of Reference Data Libraries")); Assert.That(result.Severity, Is.EqualTo(SeverityKind.Error)); Assert.That(result.Thing, Is.EqualTo(categoryCitation)); }
public async Task DelStatement2() { const string code = @" def func1(a, b): return a+b def func2(a, b): return a+b del (func1, func2) "; var analysis = await GetAnalysisAsync(code); var rs = new ReferenceSource(Services); var refs = await rs.FindAllReferencesAsync(analysis.Document.Uri, new SourceLocation(8, 6), ReferenceSearchOptions.All); refs.Should().HaveCount(2); refs[0].range.Should().Be(1, 4, 1, 9); refs[0].uri.Should().Be(analysis.Document.Uri); refs[1].range.Should().Be(7, 5, 7, 10); refs[1].uri.Should().Be(analysis.Document.Uri); refs = await rs.FindAllReferencesAsync(analysis.Document.Uri, new SourceLocation(8, 14), ReferenceSearchOptions.All); refs.Should().HaveCount(2); refs[0].range.Should().Be(4, 4, 4, 9); refs[0].uri.Should().Be(analysis.Document.Uri); refs[1].range.Should().Be(7, 12, 7, 17); refs[1].uri.Should().Be(analysis.Document.Uri); }
public void VerifyThatRdlShortnameIsUpdated() { var vm = new ReferenceSourceBrowserViewModel(this.session.Object, this.siteDirectory, null, null, null, null); var sRdl = new SiteReferenceDataLibrary(Guid.NewGuid(), this.assembler.Cache, this.uri); sRdl.Container = this.siteDirectory; var rs = new ReferenceSource(Guid.NewGuid(), this.assembler.Cache, this.uri) { Name = "rs1", ShortName = "1", Container = sRdl }; var rs2 = new ReferenceSource(Guid.NewGuid(), this.assembler.Cache, this.uri) { Name = "rs2", ShortName = "2", Container = sRdl }; CDPMessageBus.Current.SendObjectChangeEvent(rs, EventKind.Added); CDPMessageBus.Current.SendObjectChangeEvent(rs2, EventKind.Added); var rev = typeof(Thing).GetProperty("RevisionNumber"); rev.SetValue(sRdl, 3); sRdl.ShortName = "test"; CDPMessageBus.Current.SendObjectChangeEvent(sRdl, EventKind.Updated); Assert.IsTrue(vm.ReferenceSources.Count(x => x.ContainerRdl == "test") == 2); }
public static T MatchWith <T>( this ReferenceSource self, Func <BundleFileSource, T> a1, Func <NodeSource, T> a2, Func <UXPropertySource, T> a3, Func <UXPropertyAccessorSource, T> a4) { var t1 = self as BundleFileSource; if (t1 != null) { return(a1(t1)); } var t2 = self as NodeSource; if (t2 != null) { return(a2(t2)); } var t3 = self as UXPropertySource; if (t3 != null) { return(a3(t3)); } var t4 = self as UXPropertyAccessorSource; if (t4 != null) { return(a4(t4)); } throw new ArgumentException(); }
public void VerifyThatReferenceSourceFromExistingRdlsAreLoaded() { var siterefenceDataLibrary = new SiteReferenceDataLibrary(Guid.NewGuid(), null, null); var referenceSource1 = new ReferenceSource(Guid.NewGuid(), null, null); var referenceSource2 = new ReferenceSource(Guid.NewGuid(), null, null); siterefenceDataLibrary.ReferenceSource.Add(referenceSource1); siterefenceDataLibrary.ReferenceSource.Add(referenceSource2); this.siteDirectory.SiteReferenceDataLibrary.Add(siterefenceDataLibrary); var engineeringModelSetup = new EngineeringModelSetup(Guid.NewGuid(), null, null); var modelReferenceDataLibrary = new ModelReferenceDataLibrary(Guid.NewGuid(), null, null); var referenceSource3 = new ReferenceSource(Guid.NewGuid(), null, null); var referenceSource4 = new ReferenceSource(Guid.NewGuid(), null, null); modelReferenceDataLibrary.ReferenceSource.Add(referenceSource3); modelReferenceDataLibrary.ReferenceSource.Add(referenceSource4); engineeringModelSetup.RequiredRdl.Add(modelReferenceDataLibrary); this.siteDirectory.Model.Add(engineeringModelSetup); this.openRdlList = new List <ReferenceDataLibrary>(this.siteDirectory.SiteReferenceDataLibrary) { modelReferenceDataLibrary }; this.session.Setup(x => x.OpenReferenceDataLibraries).Returns(new HashSet <ReferenceDataLibrary>(this.openRdlList)); var browser = new ReferenceSourceBrowserViewModel(this.session.Object, this.siteDirectory, null, null, null, null); Assert.AreEqual(4, browser.ReferenceSources.Count); }
/// <summary> /// Serialize the <see cref="ReferenceSource"/> /// </summary> /// <param name="referenceSource">The <see cref="ReferenceSource"/> to serialize</param> /// <returns>The <see cref="JObject"/></returns> private JObject Serialize(ReferenceSource referenceSource) { var jsonObject = new JObject(); jsonObject.Add("alias", this.PropertySerializerMap["alias"](referenceSource.Alias.OrderBy(x => x, this.guidComparer))); jsonObject.Add("author", this.PropertySerializerMap["author"](referenceSource.Author)); jsonObject.Add("category", this.PropertySerializerMap["category"](referenceSource.Category.OrderBy(x => x, this.guidComparer))); jsonObject.Add("classKind", this.PropertySerializerMap["classKind"](Enum.GetName(typeof(CDP4Common.CommonData.ClassKind), referenceSource.ClassKind))); jsonObject.Add("definition", this.PropertySerializerMap["definition"](referenceSource.Definition.OrderBy(x => x, this.guidComparer))); jsonObject.Add("excludedDomain", this.PropertySerializerMap["excludedDomain"](referenceSource.ExcludedDomain.OrderBy(x => x, this.guidComparer))); jsonObject.Add("excludedPerson", this.PropertySerializerMap["excludedPerson"](referenceSource.ExcludedPerson.OrderBy(x => x, this.guidComparer))); jsonObject.Add("hyperLink", this.PropertySerializerMap["hyperLink"](referenceSource.HyperLink.OrderBy(x => x, this.guidComparer))); jsonObject.Add("iid", this.PropertySerializerMap["iid"](referenceSource.Iid)); jsonObject.Add("isDeprecated", this.PropertySerializerMap["isDeprecated"](referenceSource.IsDeprecated)); jsonObject.Add("language", this.PropertySerializerMap["language"](referenceSource.Language)); jsonObject.Add("modifiedOn", this.PropertySerializerMap["modifiedOn"](referenceSource.ModifiedOn)); jsonObject.Add("name", this.PropertySerializerMap["name"](referenceSource.Name)); jsonObject.Add("publicationYear", this.PropertySerializerMap["publicationYear"](referenceSource.PublicationYear)); jsonObject.Add("publishedIn", this.PropertySerializerMap["publishedIn"](referenceSource.PublishedIn)); jsonObject.Add("publisher", this.PropertySerializerMap["publisher"](referenceSource.Publisher)); jsonObject.Add("revisionNumber", this.PropertySerializerMap["revisionNumber"](referenceSource.RevisionNumber)); jsonObject.Add("shortName", this.PropertySerializerMap["shortName"](referenceSource.ShortName)); jsonObject.Add("thingPreference", this.PropertySerializerMap["thingPreference"](referenceSource.ThingPreference)); jsonObject.Add("versionDate", this.PropertySerializerMap["versionDate"](referenceSource.VersionDate)); jsonObject.Add("versionIdentifier", this.PropertySerializerMap["versionIdentifier"](referenceSource.VersionIdentifier)); return(jsonObject); }
public void Setup() { RxApp.MainThreadScheduler = Scheduler.CurrentThread; this.serviceLocator = new Mock <IServiceLocator>(); this.thingDialogNavigationService = new Mock <IThingDialogNavigationService>(); ServiceLocator.SetLocatorProvider(() => this.serviceLocator.Object); this.serviceLocator.Setup(x => x.GetInstance <IThingDialogNavigationService>()).Returns(this.thingDialogNavigationService.Object); this.session = new Mock <ISession>(); this.referenceSource = new ReferenceSource(Guid.NewGuid(), null, null) { Name = "Referencesource", ShortName = "RSO", IsDeprecated = true, }; this.siteDirectory = new SiteDirectory(Guid.NewGuid(), null, null); var transactionContext = TransactionContextResolver.ResolveContext(this.siteDirectory); this.transaction = new ThingTransaction(transactionContext, null); var dal = new Mock <IDal>(); this.session.Setup(x => x.DalVersion).Returns(new Version(1, 1, 0)); this.session.Setup(x => x.Dal).Returns(dal.Object); this.session.Setup(x => x.RetrieveSiteDirectory()).Returns(this.siteDirectory); dal.Setup(x => x.MetaDataProvider).Returns(new MetaDataProvider()); this.permissionService = new Mock <IPermissionService>(); this.permissionService.Setup(x => x.CanWrite(It.IsAny <ClassKind>(), It.IsAny <Thing>())).Returns(true); this.permissionService.Setup(x => x.CanWrite(It.IsAny <Thing>())).Returns(true); this.session.Setup(x => x.PermissionService).Returns(this.permissionService.Object); }
public void VerifyThatCurrentReferenceSourceDoesNotAppearInListOfPossibleReferenceSources() { var siteRdl = new SiteReferenceDataLibrary() { ShortName = "GenericRDL" }; var publishedInReferenceSource = new ReferenceSource() { ShortName = "somebook", Iid = Guid.NewGuid() }; siteRdl.ReferenceSource.Add(publishedInReferenceSource); siteRdl.ReferenceSource.Add(this.referenceSource); var openRdls = new List <ReferenceDataLibrary> { siteRdl }; this.session.Setup(x => x.OpenReferenceDataLibraries).Returns(openRdls); this.viewmodel = new ReferenceSourceDialogViewModel(this.referenceSource, this.transaction, this.session.Object, true, ThingDialogKind.Create, null, null, null); Assert.AreEqual(1, this.viewmodel.PossiblePublishedIn.Count); Assert.IsFalse(this.viewmodel.PossiblePublishedIn.Any(x => x.Iid == this.referenceSource.Iid)); }
protected AssetTransferWorkItem(AssetServiceInterface dest, AssetServiceInterface source, List <UUID> assetids, ReferenceSource refsource) { m_DestinationAssetService = dest; m_SourceAssetService = source; AssetID = UUID.Zero; m_RefSource = refsource; m_AssetIDList = new List <UUID>(assetids); }
public static Expression GetExpression(this ReferenceSource v, Context ctx) { return(v.MatchWith( (BundleFileSource s) => s.GetExpression(ctx), (NodeSource s) => s.Node.GetExpression(ctx), (UXPropertySource s) => s.GetPropertyExpression(ctx), (UXPropertyAccessorSource s) => s.GetPropertyExpression(ctx))); }
public async Task RemoveReference() { const string code1 = @" x = 1 def func(x): return x y = func(x) x = 2 "; var uri1 = TestData.GetDefaultModuleUri(); var uri2 = TestData.GetNextModuleUri(); const string code2 = @" from module import x, y a = x b = y "; await CreateServicesAsync(PythonVersions.LatestAvailable3X, uri1.AbsolutePath); var rdt = Services.GetService <IRunningDocumentTable>(); var doc1 = rdt.OpenDocument(uri1, code1); var doc2 = rdt.OpenDocument(uri2, code2); var analysis = await GetDocumentAnalysisAsync(doc1); var rs = new ReferenceSource(Services); var refs = await rs.FindAllReferencesAsync(analysis.Document.Uri, new SourceLocation(7, 1), ReferenceSearchOptions.All); refs.Should().HaveCount(3); refs[0].range.Should().Be(6, 0, 6, 1); refs[0].uri.Should().Be(uri1); refs[1].range.Should().Be(1, 22, 1, 23); refs[1].uri.Should().Be(uri2); refs[2].range.Should().Be(3, 4, 3, 5); refs[2].uri.Should().Be(uri2); doc2.Update(new[] { new DocumentChange { InsertedText = string.Empty, ReplacedSpan = new SourceSpan(4, 1, 4, 6) }, new DocumentChange { InsertedText = string.Empty, ReplacedSpan = new SourceSpan(2, 21, 2, 24) } }); await GetDocumentAnalysisAsync(doc2); refs = await rs.FindAllReferencesAsync(analysis.Document.Uri, new SourceLocation(7, 1), ReferenceSearchOptions.All); refs.Should().HaveCount(1); refs[0].range.Should().Be(6, 0, 6, 1); refs[0].uri.Should().Be(uri1); }
public void Should_Create_Constructor_For_GetOnlyProperties() { var generatorFixture = new SmartCodeGeneratorFixture(typeof(OnBuildImmutableConstructorGenerator), new[] { ReferenceSource.FromType <ImmutableConstructorAttribute>() }); generatorFixture.AssertGeneratedCode(GetOnlyProperties, GetOnlyProperties_Transformed, _ignoreGeneratorVersionPattern); }
public void Verify_that_IsReferenceSourceInChainOfRdls_returns_expected_result() { var referenceSource = new ReferenceSource(); Assert.That(this.mRdl.IsReferenceSourceInChainOfRdls(referenceSource), Is.False); this.sRdl1.ReferenceSource.Add(referenceSource); Assert.That(this.mRdl.IsReferenceSourceInChainOfRdls(referenceSource), Is.True); }
public async Task EmptyAnalysis() { await GetAnalysisAsync(string.Empty); var rs = new ReferenceSource(Services); var references = await rs.FindAllReferencesAsync(null, new SourceLocation(1, 1), ReferenceSearchOptions.All); references.Should().BeEmpty(); }
/// <summary> /// Removes a <see cref="ReferenceSourceRowViewModel"/> from the view model /// </summary> /// <param name="referenceSource"> /// The <see cref="ReferenceSource"/> for which the row view model has to be removed /// </param> private void RemoveReferenceSourceRowViewModel(ReferenceSource referenceSource) { var row = this.ReferenceSources.SingleOrDefault(rowViewModel => rowViewModel.Thing == referenceSource); if (row != null) { this.ReferenceSources.RemoveAndDispose(row); } }
public void should_be_able_to_generate_mapping_interface_implementation_using_custom_mappers() { var generatorFixture = new SmartCodeGeneratorFixture(typeof(OnBuildMappingGenerator), new[] { ReferenceSource.FromType <MappingInterface>() }); generatorFixture.AssertGeneratedCode(_003_ExternalTypeMappers, _003_ExternalTypeMappers_TRANSFORMED, IgnoreGeneratorVersionPattern); }
public void SetUp() { this.referenceSourceRuleChecker = new ReferenceSourceRuleChecker(); this.siteReferenceDataLibrary = new SiteReferenceDataLibrary(); this.referenceSource = new ReferenceSource { Iid = Guid.Parse("27fc9848-a2cd-4ecd-a4d0-dae1f87cb659"), ShortName = "SOURCE" }; this.siteReferenceDataLibrary.ReferenceSource.Add(this.referenceSource); }
/// <summary> /// Adds a <see cref="ReferenceSourceRowViewModel"/> /// </summary> /// <param name="referenceSource"> /// The associated <see cref="ReferenceSource"/> for which the row is to be added. /// </param> private void AddReferenceSourceRowViewModel(ReferenceSource referenceSource) { if (this.ReferenceSources.Any(x => x.Thing == referenceSource)) { return; } var row = new ReferenceSourceRowViewModel(referenceSource, this.Session, this); this.ReferenceSources.Add(row); }
public void should_be_able_to_generate_mapping_interface_implementation() { var generatorFixture = new SmartCodeGeneratorFixture(typeof(OnBuildMappingGenerator), new[] { ReferenceSource.FromType <MappingInterface>(), ReferenceSource.FromType(typeof(ImmutableArray <>)), }); generatorFixture.AssertGeneratedCode(_001_SimpleMappingInterface, _001_SimpleMappingInterface_TRANSFORMED, IgnoreGeneratorVersionPattern); }
protected AssetTransferWorkItem(AssetServiceInterface dest, AssetServiceInterface source, UUID assetid, ReferenceSource refsource) { m_DestinationAssetService = dest; m_SourceAssetService = source; AssetID = assetid; m_RefSource = refsource; m_AssetIDList = new List <UUID> { assetid }; }
public void Verify_that_QueryReferenceSourcesFromChainOfRdls_returns_expected_result() { var mRdl_ReferenceSource = new ReferenceSource(Guid.NewGuid(), null, null); var sRdl1_ReferenceSource = new ReferenceSource(Guid.NewGuid(), null, null); var sRdl11_ReferenceSource = new ReferenceSource(Guid.NewGuid(), null, null); this.mRdl.ReferenceSource.Add(mRdl_ReferenceSource); this.sRdl1.ReferenceSource.Add(sRdl1_ReferenceSource); this.sRdl11.ReferenceSource.Add(sRdl11_ReferenceSource); Assert.That(new List <ReferenceSource> { mRdl_ReferenceSource, sRdl1_ReferenceSource, sRdl11_ReferenceSource }, Is.EquivalentTo(this.mRdl.QueryReferenceSourcesFromChainOfRdls())); }
public void Verify_that_when_ReferenceSource_is_in_chain_of_Rdls_no_result_is_returned() { var referenceSource = new ReferenceSource { Iid = Guid.Parse("3c44c0e3-d2de-43f9-9636-8235984dc4bf"), ShortName = "SOURCE" }; this.modelReferenceDataLibrary.ReferenceSource.Add(referenceSource); this.externalIdentifierMap.ExternalFormat = referenceSource; var results = this.externalIdentifierMapRuleChecker.CheckWhetherReferencedReferenceSourceIsInChainOfRdls(this.externalIdentifierMap); Assert.That(results, Is.Empty); }
public void Verify_that_when_Container_is_EngineeringModel_and_ReferenceSource_is_in_chain_of_Rdls_no_result_is_returned() { var referenceSource = new ReferenceSource { Iid = Guid.Parse("3c44c0e3-d2de-43f9-9636-8235984dc4bf"), ShortName = "SOURCE" }; this.modelReferenceDataLibrary.ReferenceSource.Add(referenceSource); this.citation.Source = referenceSource; var results = this.citationRuleChecker.CheckWhetherReferencedReferenceSourceIsInChainOfRdls(this.citation); Assert.That(results, Is.Empty); }
public void Verify_that_when_ReferenceSource_is_in_chain_of_Rdls_no_result_is_returned() { var referencedReferenceSource = new ReferenceSource { Iid = Guid.Parse("3c44c0e3-d2de-43f9-9636-8235984dc4bf"), ShortName = "REFERENCED-SOURCE" }; this.siteReferenceDataLibrary.ReferenceSource.Add(referencedReferenceSource); this.referenceSource.PublishedIn = referencedReferenceSource; var results = this.referenceSourceRuleChecker.CheckWhetherReferencedReferenceSourceIsInChainOfRdls(this.referenceSource); Assert.That(results, Is.Empty); }
public void Verify_that_when_referenced_DeprecatableThing_Is_not_Deprecated_no_result_is_returned() { var referenceSource = new ReferenceSource { Iid = Guid.Parse("3c44c0e3-d2de-43f9-9636-8235984dc4bf"), ShortName = "SOURCE", IsDeprecated = false }; this.externalIdentifierMap.ExternalFormat = referenceSource; var results = this.externalIdentifierMapRuleChecker.ChecksWhetherAReferencedDeprecatableThingIsDeprecated(this.externalIdentifierMap); Assert.That(results, Is.Empty); }
public async Task TwoOpenFiles() { const string code1 = @" x = 1 def func(x): return x y = func(x) x = 2 "; var code2 = $@" from module1 import x y = x "; var uri1 = await TestData.CreateTestSpecificFileAsync("module1.py", code1); var uri2 = await TestData.CreateTestSpecificFileAsync("module2.py", code2); await CreateServicesAsync(PythonVersions.LatestAvailable3X, uri1.AbsolutePath); var rdt = Services.GetService <IRunningDocumentTable>(); rdt.OpenDocument(uri1, code1); rdt.OpenDocument(uri2, code2); var doc1 = rdt.GetDocument(uri1); var analysis = await GetDocumentAnalysisAsync(doc1); var rs = new ReferenceSource(Services); var refs = await rs.FindAllReferencesAsync(analysis.Document.Uri, new SourceLocation(7, 10), ReferenceSearchOptions.All); refs.Should().HaveCount(5); refs[0].range.Should().Be(1, 0, 1, 1); refs[0].uri.Should().Be(uri1); refs[1].range.Should().Be(6, 9, 6, 10); refs[1].uri.Should().Be(uri1); refs[2].range.Should().Be(7, 0, 7, 1); refs[2].uri.Should().Be(uri1); refs[3].range.Should().Be(1, 20, 1, 21); refs[3].uri.Should().Be(uri2); refs[4].range.Should().Be(2, 4, 2, 5); refs[4].uri.Should().Be(uri2); }
public async Task NestedClosedFiles() { const string code = @" x = 1 def func(x): return x y = func(x) x = 2 "; const string mod2Code = @" from module import x y = x "; const string mod3Code = @" from module2 import x y = x "; var uri2 = await TestData.CreateTestSpecificFileAsync("module2.py", mod2Code); var uri3 = await TestData.CreateTestSpecificFileAsync("module3.py", mod3Code); var analysis = await GetAnalysisAsync(code); var rs = new ReferenceSource(Services); var refs = await rs.FindAllReferencesAsync(analysis.Document.Uri, new SourceLocation(7, 10), ReferenceSearchOptions.All); refs.Should().HaveCount(7); refs[0].range.Should().Be(1, 0, 1, 1); refs[0].uri.Should().Be(analysis.Document.Uri); refs[1].range.Should().Be(6, 9, 6, 10); refs[1].uri.Should().Be(analysis.Document.Uri); refs[2].range.Should().Be(7, 0, 7, 1); refs[2].uri.Should().Be(analysis.Document.Uri); refs[3].range.Should().Be(1, 19, 1, 20); refs[3].uri.Should().Be(uri2); refs[4].range.Should().Be(2, 4, 2, 5); refs[4].uri.Should().Be(uri2); refs[5].range.Should().Be(1, 20, 1, 21); refs[5].uri.Should().Be(uri3); refs[6].range.Should().Be(2, 4, 2, 5); refs[6].uri.Should().Be(uri3); }