1 // Licensed to the .NET Foundation under one or more agreements. 2 // The .NET Foundation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 using System.Collections.Generic; 6 using Xunit; 7 8 namespace System.Linq.Expressions.Tests 9 { 10 public static class SymbolDocumentInfoTests 11 { TestData()12 public static IEnumerable<object[]> TestData() 13 { 14 Guid documentType = new Guid(0x5a869d0b, 0x6611, 0x11d3, 0xbd, 0x2a, 0, 0, 0xf8, 8, 0x49, 0xbd); 15 yield return new object[] { "", Guid.Empty, Guid.Empty, documentType }; 16 yield return new object[] { " \t \r ", Guid.Empty, Guid.NewGuid(), documentType }; 17 yield return new object[] { "abc", Guid.NewGuid(), Guid.NewGuid(), documentType }; 18 yield return new object[] { "\uD800\uDC00", Guid.NewGuid(), Guid.NewGuid(), Guid.Empty }; 19 } 20 21 [Theory] 22 [MemberData(nameof(TestData))] SymbolDocument(string fileName, Guid language, Guid languageVendor, Guid documentType)23 public static void SymbolDocument(string fileName, Guid language, Guid languageVendor, Guid documentType) 24 { 25 if (documentType == new Guid(0x5a869d0b, 0x6611, 0x11d3, 0xbd, 0x2a, 0, 0, 0xf8, 8, 0x49, 0xbd)) 26 { 27 if (languageVendor == Guid.Empty) 28 { 29 if (language == Guid.Empty) 30 { 31 // SymbolDocument(string) 32 SymbolDocumentInfo symbolDocument1 = Expression.SymbolDocument(fileName); 33 VerifySymbolDocumentInfo(symbolDocument1, fileName, language, languageVendor, documentType); 34 } 35 // SymbolDocument(string, Guid) 36 SymbolDocumentInfo symbolDocument2 = Expression.SymbolDocument(fileName, language); 37 VerifySymbolDocumentInfo(symbolDocument2, fileName, language, languageVendor, documentType); 38 } 39 // SymbolDocument(string, Guid) 40 SymbolDocumentInfo symbolDocument3 = Expression.SymbolDocument(fileName, language, languageVendor); 41 VerifySymbolDocumentInfo(symbolDocument3, fileName, language, languageVendor, documentType); 42 } 43 // SymbolDocument(string, Guid, Guid) 44 SymbolDocumentInfo symbolDocument4 = Expression.SymbolDocument(fileName, language, languageVendor, documentType); 45 VerifySymbolDocumentInfo(symbolDocument4, fileName, language, languageVendor, documentType); 46 } 47 48 [Fact] SymbolDocument_NullFileName_ThrowsArgumentNullException()49 public static void SymbolDocument_NullFileName_ThrowsArgumentNullException() 50 { 51 AssertExtensions.Throws<ArgumentNullException>("fileName", () => Expression.SymbolDocument(null)); 52 AssertExtensions.Throws<ArgumentNullException>("fileName", () => Expression.SymbolDocument(null, Guid.Empty)); 53 AssertExtensions.Throws<ArgumentNullException>("fileName", () => Expression.SymbolDocument(null, Guid.Empty, Guid.Empty)); 54 AssertExtensions.Throws<ArgumentNullException>("fileName", () => Expression.SymbolDocument(null, Guid.Empty, Guid.Empty, Guid.Empty)); 55 } 56 VerifySymbolDocumentInfo(SymbolDocumentInfo document, string fileName, Guid language, Guid languageVendor, Guid documentType)57 private static void VerifySymbolDocumentInfo(SymbolDocumentInfo document, string fileName, Guid language, Guid languageVendor, Guid documentType) 58 { 59 Assert.Equal(fileName, document.FileName); 60 Assert.Equal(language, document.Language); 61 Assert.Equal(languageVendor, document.LanguageVendor); 62 Assert.Equal(documentType, document.DocumentType); 63 } 64 } 65 } 66