Filter:   InfoImg
download FileGenerator.cs
Language: C#
License: MSVSSDK
LOC: 71
Project Info
C# Common.UnitTest
Server: Visual Studio SDK
Type: filesystem
...mon\Source\CSharp\UnitTest\
   BaseMock.cs
   ConnectionPointHelper.cs
   FileGenerator.cs
   GenericMockFactory.cs
   LocalRegistryMock.cs
   ....UnitTestLibrary.csproj
   ...SDK.UnitTestLibrary.sln
   MockBuildEngine.cs
   OleServiceProvider.cs
   OutputWindowPane.cs
   OutputWindowService.cs
   RegistrationContextMock.cs
   RegistrationKeyMock.cs
   TextWriterMock.cs

/***************************************************************************

Copyright (c) Microsoft Corporation. All rights reserved.
This code is licensed under the Visual Studio SDK license terms.
THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.

***************************************************************************/

using System;
using System.Xml;
using System.IO;
using System.Text;
using System.Reflection;

namespace Microsoft.VsSDK.UnitTestLibrary
{
	public sealed class FileGenerator
	{
		private string path;

		public FileGenerator(string relativePath)
		{
			// Generate temp directory name
			path = Path.Combine(Path.GetTempPath(), relativePath);

			// Delete it if it already exist to prevent being affected by previous runs
			try
			{
				if (Directory.Exists(path))
					Directory.Delete(path, true);
			}
			catch (IOException)
			{ }

			// Create the directory
			Directory.CreateDirectory(path);
		}

		/// <summary>
		/// Create the specified path under a temp directory
		/// The file will have some content
		/// </summary>
		/// <param name="fileName">FileName, can include relative path</param>
		public string CreateFile(string fileName)
		{
			return CreateFileWithSpecificContent(fileName, fileName);
		}

		public string CreateFileFromEmbeddedContent(string fileName, string content)
		{
			return CreateFileWithSpecificContent(fileName, content);
		}

		public string CreateXmlFileFromEmbeddedContent(string fileName, string content)
		{
			// Create an XML document with the specific content
			XmlDocument doc = new XmlDocument();
			doc.LoadXml(content);

			string outputPath = this.GetFullPath(fileName);
			doc.Save(outputPath);

			return outputPath;
		}

		/// <summary>
		/// Create the specified path under a temp directory
		/// Add the specified content to the file
		/// </summary>
		/// <param name="fileName">FileName, can include relative path</param>
		/// <param name="content">Content to add to the file</param>
		public string CreateFileWithSpecificContent(string fileName, string content)
		{
			string filePath = this.GetFullPath(fileName);
			string directory = Path.GetDirectoryName(filePath);
			if (!Directory.Exists(directory))
				Directory.CreateDirectory(directory);
			using (StreamWriter file = File.CreateText(filePath))
			{
				file.WriteLine(content);
			}

			return filePath;
		}

		/// <summary>
		/// Verify that the files have the same content
		/// </summary>
		/// <param name="path1">Full path of one of the file</param>
		/// <param name="path2">Full path of the other file</param>
		/// <param name="comparaisonType">What kind of comparaison to use</param>
		/// <returns></returns>
		public static bool FilesContentIsSame(string path1, string path2, StringComparison comparisonType)
		{
			string content1;
			string content2;
			using (StreamReader contentReader = File.OpenText(path1))
			{
				content1 = contentReader.ReadToEnd();
			}
			using (StreamReader contentReader = File.OpenText(path2))
			{
				content2 = contentReader.ReadToEnd();
			}

			return String.Equals(content1, content2, comparisonType);
		}

		private string GetFullPath(string fileName)
		{
			string filePath = Path.Combine(path, fileName);

			return filePath;
		}
	}
}