summaryrefslogtreecommitdiff
path: root/BCT/RegressionTests/TranslationTest/UnitTest0.cs
blob: dadeb4e5f062a2845d3a593a4c2509630973d52a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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>
  /// Summary description for UnitTest0
  /// </summary>
  [TestClass]
  public class UnitTest0 {
    public UnitTest0() {
      //
      // TODO: Add constructor logic here
      //
    }

    private TestContext testContextInstance;

    /// <summary>
    ///Gets or sets the test context which provides
    ///information about and functionality for the current test run.
    ///</summary>
    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(new List<string>{assemblyName}, heapFactory, null, false, 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 TwoDBoxHeapInput.txt: " + resultFile);
      }
    }

    [TestMethod]
    public void GeneralHeap() {
      string dir = TestContext.DeploymentDirectory;
      var fullPath = Path.Combine(dir, "RegressionTestInput.dll");
      Stream resource = typeof(UnitTest0).Assembly.GetManifestResourceStream("TranslationTest.GeneralHeapInput.txt");
      StreamReader reader = new StreamReader(resource);
      string expected = reader.ReadToEnd();
      var result = ExecuteTest(fullPath, new GeneralHeap());
      if (result != expected) {
        string resultFile = Path.GetFullPath("GeneralHeapOutput.txt");
        File.WriteAllText(resultFile, result);
        Assert.Fail("Output didn't match GeneralHeapInput.txt: " + resultFile);
      }
    }

  }
}