/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Workspaces/CoreTest/SolutionTests/DocumentInfoTests.cs
117 строк
5 KB
Cyrus Najmabadi
Sort usings
19 июн 2025, 03:07
19 июн 2025, 03:07
b2899f6
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #nullable disable using System; using System.Collections.Immutable; using System.Linq; using Microsoft.CodeAnalysis.Host; using Microsoft.CodeAnalysis.Test.Utilities; using Roslyn.Test.Utilities; using Xunit; namespace Microsoft.CodeAnalysis.UnitTests; public sealed class DocumentInfoTests { [Fact] public void Create_Errors() { var documentId = DocumentId.CreateNewId(ProjectId.CreateNewId()); Assert.Throws<ArgumentNullException>(() => DocumentInfo.Create(id: null, "doc")); Assert.Throws<ArgumentNullException>(() => DocumentInfo.Create(documentId, name: null)); Assert.Throws<ArgumentNullException>(() => DocumentInfo.Create(documentId, "doc", folders: ["folder", null])); } [Fact] public void Create() { var loader = new TestTextLoader("text"); var id = DocumentId.CreateNewId(ProjectId.CreateNewId()); var info = DocumentInfo.Create( id, name: "doc", sourceCodeKind: SourceCodeKind.Script, loader: loader, isGenerated: true); Assert.Equal(id, info.Id); Assert.Equal("doc", info.Name); Assert.Equal(SourceCodeKind.Script, info.SourceCodeKind); Assert.Same(loader, info.TextLoader); Assert.True(info.IsGenerated); } [Fact] public void Create_NullLoader() { var id = DocumentId.CreateNewId(ProjectId.CreateNewId()); var info = DocumentInfo.Create( id, name: "doc", sourceCodeKind: SourceCodeKind.Script, loader: null, isGenerated: true); Assert.Equal(id, info.Id); Assert.Equal("doc", info.Name); Assert.Equal(SourceCodeKind.Script, info.SourceCodeKind); Assert.Null(info.TextLoader); Assert.True(info.IsGenerated); } [Fact] public void Create_Folders() { var documentId = DocumentId.CreateNewId(ProjectId.CreateNewId()); var info1 = DocumentInfo.Create(documentId, "doc", folders: ["folder"]); Assert.Equal("folder", ((ImmutableArray<string>)info1.Folders).Single()); var info2 = DocumentInfo.Create(documentId, "doc"); Assert.True(((ImmutableArray<string>)info2.Folders).IsEmpty); var info3 = DocumentInfo.Create(documentId, "doc", folders: []); Assert.True(((ImmutableArray<string>)info3.Folders).IsEmpty); var info4 = DocumentInfo.Create(documentId, "doc", folders: []); Assert.True(((ImmutableArray<string>)info4.Folders).IsEmpty); } [Theory] [InlineData(SourceCodeKind.Script, null, "")] [InlineData(SourceCodeKind.Script, "", "")] [InlineData(SourceCodeKind.Script, "path", "path")] [InlineData(SourceCodeKind.Regular, null, "doc_name")] [InlineData(SourceCodeKind.Regular, "", "")] [InlineData(SourceCodeKind.Regular, "path", "path")] public void Create_FilePath(SourceCodeKind kind, string path, string expectedSyntaxTreeFilePath) { var info = DocumentInfo.Create(DocumentId.CreateNewId(ProjectId.CreateNewId()), "doc_name", filePath: path, sourceCodeKind: kind); Assert.Equal(path, info.FilePath); Assert.Equal(expectedSyntaxTreeFilePath, info.Attributes.SyntaxTreeFilePath); } [Fact] public void TestProperties() { var projectId = ProjectId.CreateNewId(); var documentId = DocumentId.CreateNewId(projectId); var instance = DocumentInfo.Create(DocumentId.CreateNewId(ProjectId.CreateNewId()), "doc"); var serviceProvider = (IDocumentServiceProvider)new TestDocumentServiceProvider(); SolutionTestHelpers.TestProperty(instance, (old, value) => old.WithId(value), opt => opt.Id, documentId, defaultThrows: true); SolutionTestHelpers.TestProperty(instance, (old, value) => old.WithName(value), opt => opt.Name, "New", defaultThrows: true); SolutionTestHelpers.TestProperty(instance, (old, value) => old.WithTextLoader(value), opt => opt.TextLoader, (TextLoader)new TestTextLoader("text")); SolutionTestHelpers.TestProperty(instance, (old, value) => old.WithDesignTimeOnly(value), opt => opt.Attributes.DesignTimeOnly, true); SolutionTestHelpers.TestProperty(instance, (old, value) => old.WithDocumentServiceProvider(value), opt => opt.DocumentServiceProvider, serviceProvider); SolutionTestHelpers.TestListProperty(instance, (old, value) => old.WithFolders(value), opt => opt.Folders, "folder", allowDuplicates: true); } }