using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.IO;
using Microsoft.Cci;
using Microsoft.Cci.MetadataReader;
using Microsoft.Cci.MutableCodeModel;
using Microsoft.Cci.Contracts;
using Microsoft.Cci.ILToCodeModel;
using BytecodeTranslator;
namespace TranslationTest {
///
/// Summary description for UnitTest0
///
[TestClass]
public class UnitTest0 {
public UnitTest0() {
//
// TODO: Add constructor logic here
//
}
private TestContext testContextInstance;
///
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///
public TestContext TestContext {
get {
return testContextInstance;
}
set {
testContextInstance = value;
}
}
#region Additional test attributes
//
// You can use the following additional attributes as you write your tests:
//
// Use ClassInitialize to run code before running the first test in the class
// [ClassInitialize()]
// public static void MyClassInitialize(TestContext testContext) { }
//
// Use ClassCleanup to run code after all tests in a class have run
// [ClassCleanup()]
// public static void MyClassCleanup() { }
//
// Use TestInitialize to run code before running each test
// [TestInitialize()]
// public void MyTestInitialize() { }
//
// Use TestCleanup to run code after each test has run
// [TestCleanup()]
// public void MyTestCleanup() { }
//
#endregion
private string ExecuteTest(string assemblyName, HeapFactory heapFactory) {
BCT.TranslateAssembly(assemblyName, heapFactory, null);
var fileName = Path.ChangeExtension(assemblyName, "bpl");
var s = File.ReadAllText(fileName);
return s;
}
[TestMethod]
public void TwoDIntHeap() {
string dir = TestContext.DeploymentDirectory;
var fullPath = Path.Combine(dir, "RegressionTestInput.dll");
Stream resource = typeof(UnitTest0).Assembly.GetManifestResourceStream("TranslationTest.TwoDIntHeapInput.txt");
StreamReader reader = new StreamReader(resource);
string expected = reader.ReadToEnd();
var result = ExecuteTest(fullPath, new TwoDIntHeap());
if (result != expected) {
string resultFile = Path.GetFullPath("TwoDIntHeapOutput.txt");
File.WriteAllText(resultFile, result);
Assert.Fail("Output didn't match TwoDIntHeapInput.txt: " + resultFile);
}
}
[TestMethod]
public void SplitFieldsHeap() {
string dir = TestContext.DeploymentDirectory;
var fullPath = Path.Combine(dir, "RegressionTestInput.dll");
Stream resource = typeof(UnitTest0).Assembly.GetManifestResourceStream("TranslationTest.SplitFieldsHeapInput.txt");
StreamReader reader = new StreamReader(resource);
string expected = reader.ReadToEnd();
var result = ExecuteTest(fullPath, new SplitFieldsHeap());
if (result != expected) {
string resultFile = Path.GetFullPath("SplitFieldsHeapOutput.txt");
File.WriteAllText(resultFile, result);
Assert.Fail("Output didn't match SplitFieldsHeapInput.txt: " + resultFile);
}
}
[TestMethod]
public void TwoDBoxHeap() {
string dir = TestContext.DeploymentDirectory;
var fullPath = Path.Combine(dir, "RegressionTestInput.dll");
Stream resource = typeof(UnitTest0).Assembly.GetManifestResourceStream("TranslationTest.TwoDBoxHeapInput.txt");
StreamReader reader = new StreamReader(resource);
string expected = reader.ReadToEnd();
var result = ExecuteTest(fullPath, new TwoDBoxHeap());
if (result != expected) {
string resultFile = Path.GetFullPath("TwoDBoxHeapOutput.txt");
File.WriteAllText(resultFile, result);
Assert.Fail("Output didn't match TwoDBoxHeapHeapInput.txt: " + resultFile);
}
}
}
}