1 using Microsoft.Build.Framework; 2 using Microsoft.Build.Tasks; 3 using Microsoft.Build.Utilities; 4 using Xunit; 5 6 namespace Microsoft.Build.UnitTests.ResolveAssemblyReference_Tests 7 { 8 /// <summary> 9 /// Unit tests for the ResolveAssemblyReference task. 10 /// </summary> 11 public sealed class ReferenceTests : ResolveAssemblyReferenceTestFixture 12 { 13 /// <summary> 14 /// Check to make sure if, the specific version metadata is set on a primary reference, that true is returned from CheckForSpecificMetadataOnParent 15 /// </summary> 16 [Fact] CheckForSpecificMetadataOnParent()17 public void CheckForSpecificMetadataOnParent() 18 { 19 Reference reference = new Reference(isWinMDFile, fileExists, getRuntimeVersion); 20 ITaskItem taskItem = new TaskItem("TestReference"); 21 taskItem.SetMetadata("SpecificVersion", "true"); 22 reference.MakePrimaryAssemblyReference(taskItem, true, ".dll"); 23 Assert.True(reference.CheckForSpecificVersionMetadataOnParentsReference(false)); 24 } 25 26 /// <summary> 27 /// Check to make sure if, the specific version metadata is set on all primary references which a dependency depends on, that true is returned from CheckForSpecificMetadataOnParent 28 /// </summary> 29 [Fact] CheckForSpecificMetadataOnParentAllParentsHaveMetadata()30 public void CheckForSpecificMetadataOnParentAllParentsHaveMetadata() 31 { 32 Reference primaryReference1 = new Reference(isWinMDFile, fileExists, getRuntimeVersion); 33 ITaskItem taskItem = new TaskItem("TestPrimary1"); 34 taskItem.SetMetadata("SpecificVersion", "true"); 35 primaryReference1.MakePrimaryAssemblyReference(taskItem, true, ".dll"); 36 primaryReference1.FullPath = "FullPath"; 37 38 Reference primaryReference2 = new Reference(isWinMDFile, fileExists, getRuntimeVersion); 39 ITaskItem taskItem2 = new TaskItem("TestPrimary2"); 40 taskItem2.SetMetadata("SpecificVersion", "true"); 41 primaryReference2.MakePrimaryAssemblyReference(taskItem2, true, ".dll"); 42 primaryReference2.FullPath = "FullPath"; 43 44 Reference dependentReference = new Reference(isWinMDFile, fileExists, getRuntimeVersion); 45 dependentReference.FullPath = "FullPath"; 46 47 dependentReference.MakeDependentAssemblyReference(primaryReference1); 48 dependentReference.MakeDependentAssemblyReference(primaryReference2); 49 50 Assert.True(dependentReference.CheckForSpecificVersionMetadataOnParentsReference(false)); 51 } 52 53 /// <summary> 54 /// Check to make sure if, the specific version metadata is set on some primary references which a dependency depends on, that false is returned from CheckForSpecificMetadataOnParent 55 /// </summary> 56 [Fact] CheckForSpecificMetadataOnParentNotAllParentsHaveMetadata()57 public void CheckForSpecificMetadataOnParentNotAllParentsHaveMetadata() 58 { 59 Reference primaryReference1 = new Reference(isWinMDFile, fileExists, getRuntimeVersion); 60 ITaskItem taskItem = new TaskItem("TestPrimary1"); 61 taskItem.SetMetadata("SpecificVersion", "false"); 62 primaryReference1.MakePrimaryAssemblyReference(taskItem, false, ".dll"); 63 primaryReference1.FullPath = "FullPath"; 64 65 Reference primaryReference2 = new Reference(isWinMDFile, fileExists, getRuntimeVersion); 66 ITaskItem taskItem2 = new TaskItem("TestPrimary2"); 67 taskItem2.SetMetadata("SpecificVersion", "true"); 68 primaryReference2.MakePrimaryAssemblyReference(taskItem2, true, ".dll"); 69 primaryReference2.FullPath = "FullPath"; 70 71 Reference dependentReference = new Reference(isWinMDFile, fileExists, getRuntimeVersion); 72 dependentReference.FullPath = "FullPath"; 73 74 dependentReference.MakeDependentAssemblyReference(primaryReference1); 75 dependentReference.MakeDependentAssemblyReference(primaryReference2); 76 77 Assert.False(dependentReference.CheckForSpecificVersionMetadataOnParentsReference(false)); // "Expected check to return false but it returned true." 78 } 79 80 /// <summary> 81 /// Check to make sure if, the specific version metadata is set on some primary references which a dependency depends on, that false is returned from CheckForSpecificMetadataOnParent 82 /// </summary> 83 [Fact] CheckForSpecificMetadataOnParentNotAllParentsHaveMetadata2()84 public void CheckForSpecificMetadataOnParentNotAllParentsHaveMetadata2() 85 { 86 Reference primaryReference1 = new Reference(isWinMDFile, fileExists, getRuntimeVersion); 87 ITaskItem taskItem = new TaskItem("TestPrimary1"); 88 primaryReference1.MakePrimaryAssemblyReference(taskItem, false, ".dll"); 89 primaryReference1.FullPath = "FullPath"; 90 91 Reference primaryReference2 = new Reference(isWinMDFile, fileExists, getRuntimeVersion); 92 ITaskItem taskItem2 = new TaskItem("TestPrimary2"); 93 taskItem2.SetMetadata("SpecificVersion", "true"); 94 primaryReference2.MakePrimaryAssemblyReference(taskItem2, true, ".dll"); 95 primaryReference2.FullPath = "FullPath"; 96 97 Reference dependentReference = new Reference(isWinMDFile, fileExists, getRuntimeVersion); 98 dependentReference.FullPath = "FullPath"; 99 100 dependentReference.MakeDependentAssemblyReference(primaryReference1); 101 dependentReference.MakeDependentAssemblyReference(primaryReference2); 102 103 Assert.False(dependentReference.CheckForSpecificVersionMetadataOnParentsReference(false)); // "Expected check to return false but it returned true." 104 } 105 106 /// <summary> 107 /// Check to make sure if, the specific version metadata is set on some primary references which a dependency depends on, that true is returned from CheckForSpecificMetadataOnParent if the anyParentHasmetadata parameter is set to true. 108 /// </summary> 109 [Fact] CheckForSpecificMetadataOnParentNotAllParentsHaveMetadata3()110 public void CheckForSpecificMetadataOnParentNotAllParentsHaveMetadata3() 111 { 112 Reference primaryReference1 = new Reference(isWinMDFile, fileExists, getRuntimeVersion); 113 ITaskItem taskItem = new TaskItem("TestPrimary1"); 114 taskItem.SetMetadata("SpecificVersion", "false"); 115 primaryReference1.MakePrimaryAssemblyReference(taskItem, false, ".dll"); 116 primaryReference1.FullPath = "FullPath"; 117 118 Reference primaryReference2 = new Reference(isWinMDFile, fileExists, getRuntimeVersion); 119 ITaskItem taskItem2 = new TaskItem("TestPrimary2"); 120 taskItem2.SetMetadata("SpecificVersion", "true"); 121 primaryReference2.MakePrimaryAssemblyReference(taskItem2, true, ".dll"); 122 primaryReference2.FullPath = "FullPath"; 123 124 Reference dependentReference = new Reference(isWinMDFile, fileExists, getRuntimeVersion); 125 dependentReference.FullPath = "FullPath"; 126 127 dependentReference.MakeDependentAssemblyReference(primaryReference1); 128 dependentReference.MakeDependentAssemblyReference(primaryReference2); 129 130 Assert.True(dependentReference.CheckForSpecificVersionMetadataOnParentsReference(true)); // "Expected check to return false but it returned true." 131 } 132 } 133 }