using System; using NUnit.Framework; using InstallSources; namespace InstallSourcesTests { [TestFixture] public class XamarinSourcesPathManglerTest { string frameworkPath; string xamarinSourcePath; string installDir; string destinationDir; XamarinSourcesPathMangler mangler; [SetUp] public void SetUp () { frameworkPath = "Xamarin.iOS.framework"; xamarinSourcePath = "/Users/test/xamarin-macios/src/"; installDir = "/Library/Frameworks/Xamarin.iOS.framework/Versions/4.1.0.402"; destinationDir = "/Users/test/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git"; mangler = new XamarinSourcesPathMangler { FrameworkPath = frameworkPath, XamarinSourcePath = xamarinSourcePath, InstallDir = installDir, DestinationDir = destinationDir, }; } [TestCase ("/Library/Frameworks/Xamarin.iOS.framework/Versions/4.1.0.402/src/Xamarin.iOS/CoreData/NSEntityMapping.g.cs")] [TestCase ("/Users/test/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/Xamarin.iOS/build/ios/native/AVFoundation/AVMutableTimedMetadataGroup.g.cs")] [TestCase ("/Users/test/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/Xamarin.iOS/build/ios/native/CloudKit/CKRecordZoneNotification.g.cs")] public void TestGetSourcePathGeneratediOSCode (string path) { var result = mangler.GetSourcePath (path); Assert.AreEqual (path, result); } [TestCase ("/Library/Frameworks/Xamarin.Mac.framework/Versions/4.1.0.402/src/Xamarin.iOS/CoreData/NSEntityMapping.g.cs")] [TestCase ("/Users/test/xamarin-macios/_mac-build/Library/Frameworks/Xamarin.Mac.framework/Versions/git/src/Xamarin.Mac/build/mac/full/AVFoundation/AVMutableTimedMetadataGroup.g.cs")] [TestCase ("/Users/test/xamarin-macios/_mac-build/Library/Frameworks/Xamarin.Mac.framework/Versions/git/src/Xamarin.Mac/build/mac/full/CloudKit/CKRecordZoneNotification.g.cs")] public void TestGetSourcePathGeneratedMacCode (string path) { mangler.FrameworkPath = "Xamarin.Mac.framework"; // dealing with mac sources mangler.InstallDir = "/Library/Frameworks/Xamarin.Mac.framework/Versions/4.1.0.402/"; var result = mangler.GetSourcePath (path); Assert.AreEqual (path, result); } [TestCase ("/Users/test/xamarin-macios/runtime/Delegates.generated.cs", "/Users/test/xamarin-macios/runtime/Delegates.generated.cs")] public void TestGetSourceRuntimeCode (string path, string expectedPath) { var result = mangler.GetSourcePath (path); Assert.AreEqual (result, expectedPath); } [TestCase ("/Library/Frameworks/Xamarin.iOS.framework/Versions/4.1.0.402/src/Xamarin.iOS/AVFoundation/AVCaptureDeviceInput.cs", "/Users/test/xamarin-macios/src/AVFoundation/AVCaptureDeviceInput.cs")] [TestCase ("/Users/test/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/Xamarin.iOS/CoreImage/CIImage.cs", "/Users/test/xamarin-macios/src/CoreImage/CIImage.cs")] [TestCase ("/Users/test/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/Xamarin.iOS/CoreData/NSAttributeDescription.cs", "/Users/test/xamarin-macios/src/CoreData/NSAttributeDescription.cs")] [TestCase ("/Users/test/xamarin-macios/src/CoreData/NSAttributeDescription.cs", "/Users/test/xamarin-macios/src/CoreData/NSAttributeDescription.cs")] public void TestGetSourcePathManualCode (string path, string expectedPath) { var result = mangler.GetSourcePath(path); Assert.IsFalse (result.Contains ("/build/"), "Path contains '/build/' when it is a manual path."); Assert.IsTrue (result.StartsWith (xamarinSourcePath, StringComparison.InvariantCulture), "Path does not start with the XamarinPath '{0}'", xamarinSourcePath); Assert.AreEqual (result, expectedPath); } [TestCase ("/Library/Frameworks/Xamarin.iOS.framework/Versions/4.1.0.402/src/Xamarin.iOS/NativeTypes/NMath.cs", "/Users/test/xamarin-macios/src/NativeTypes/NMath.cs")] [TestCase ("/Users/test/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/Xamarin.iOS/build/common/NativeTypes/Drawing.cs", "/Users/test/xamarin-macios/src/build/common/NativeTypes/Drawing.cs")] [TestCase ("/Users/test/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/Xamarin.iOS/build/common/NativeTypes/Primitives.cs", "/Users/test/xamarin-macios/src/build/common/NativeTypes/Primitives.cs")] public void TestGetSourcePathNativeTypes (string path, string expectedPath) { var result = mangler.GetSourcePath(path); Assert.IsTrue(result.StartsWith(xamarinSourcePath, StringComparison.InvariantCulture), "Path does not start with the XamarinPath '{0}'", xamarinSourcePath); Assert.AreEqual (result, expectedPath); } [TestCase ("/Users/test/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/Xamarin.iOS/tools/common/StringUtils.cs", "/Users/test/xamarin-macios/tools/common/StringUtils.cs")] public void TestGetSourcePathToolsCommon (string path, string expectedPath) { var result = mangler.GetSourcePath (path); var toolsPath = System.IO.Path.GetFullPath (System.IO.Path.Combine (xamarinSourcePath, "..", "tools")); Assert.IsTrue (result.StartsWith (toolsPath, StringComparison.InvariantCulture), "Path does not start with the XamarinPath '{0}'", toolsPath); Assert.AreEqual (result, expectedPath); } [TestCase ("/Users/test/xamarin-macios/src/build/ios/native/AVFoundation/AVMutableMetadataItem.g.cs", "/Users/test/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/Xamarin.iOS/AVFoundation/AVMutableMetadataItem.g.cs")] [TestCase ("/Users/test/xamarin-macios/src/AVFoundation/AVCaptureDeviceInput.cs", "/Users/test/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/Xamarin.iOS/AVFoundation/AVCaptureDeviceInput.cs")] [TestCase ("/Users/test/xamarin-macios/src/NativeTypes/NMath.cs", "/Users/test/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/Xamarin.iOS/NativeTypes/NMath.cs")] public void TestGetTargetPathiOS (string src, string expectedTarget) { var target = mangler.GetTargetPath (src); Assert.IsTrue (target.StartsWith (destinationDir, StringComparison.InvariantCulture), "Does not contain the install dir."); Assert.AreEqual (expectedTarget, target, "Target is not the expected one."); } [TestCase ("/Users/test/xamarin-macios/src/build/mac/full/AVFoundation/AVMutableMetadataItem.g.cs", "/Users/test/xamarin-macios/_mac-build/Library/Frameworks/Xamarin.Mac.framework/Versions/git/src/Xamarin.Mac/AVFoundation/AVMutableMetadataItem.g.cs")] [TestCase ("/Users/test/xamarin-macios/src/AVFoundation/AVCaptureDeviceInput.cs", "/Users/test/xamarin-macios/_mac-build/Library/Frameworks/Xamarin.Mac.framework/Versions/git/src/Xamarin.Mac/AVFoundation/AVCaptureDeviceInput.cs")] [TestCase ("/Users/test/xamarin-macios/src/NativeTypes/NMath.cs", "/Users/test/xamarin-macios/_mac-build/Library/Frameworks/Xamarin.Mac.framework/Versions/git/src/Xamarin.Mac/NativeTypes/NMath.cs")] public void TestGetTargetPathMac (string src, string expectedTarget) { mangler.FrameworkPath = "Xamarin.Mac.framework"; // dealing with mac sources mangler.InstallDir = "/Library/Frameworks/Xamarin.Mac.framework"; mangler.DestinationDir = "/Users/test/xamarin-macios/_mac-build/Library/Frameworks/Xamarin.Mac.framework/Versions/git"; var target = mangler.GetTargetPath (src); Assert.IsTrue (target.StartsWith (mangler.DestinationDir, StringComparison.InvariantCulture), "Does not contain the install dir."); Assert.AreEqual (expectedTarget, target, "Target is not the expected one."); } [TestCase ("/Library/Frameworks/Xamarin.iOS.framework/Versions/4.1.0.402/src/Xamarin.iOS/Delegates.generated.cs", "/Users/test/xamarin-macios/runtime/Delegates.generated.cs")] [TestCase ("/Users/test/xamarin-macios/src/Xamarin.iOS/runtime/Delegates.generated.cs", "/Users/test/xamarin-macios/src/Xamarin.iOS/runtime/Delegates.generated.cs")] public void TestGetSourcePathRuntime (string path, string expectedPath) { var result = mangler.GetSourcePath (path); Assert.AreEqual (expectedPath, result); } } }