1 using System; 2 using System.Collections.Generic; 3 using System.Diagnostics; 4 using System.IO; 5 using System.Linq; 6 using System.Text; 7 using System.Threading.Tasks; 8 using System.Windows.Forms; 9 using Mesen.GUI.Config; 10 11 namespace Mesen.GUI.Forms 12 { 13 public partial class frmMain 14 { mnuTestRun_Click(object sender, EventArgs e)15 private void mnuTestRun_Click(object sender, EventArgs e) 16 { 17 using(OpenFileDialog ofd = new OpenFileDialog()) { 18 ofd.SetFilter(ResourceHelper.GetMessage("FilterTest")); 19 ofd.InitialDirectory = ConfigManager.TestFolder; 20 ofd.Multiselect = true; 21 if(ofd.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { 22 List<string> passedTests = new List<string>(); 23 List<string> failedTests = new List<string>(); 24 List<int> failedFrameCount = new List<int>(); 25 26 this.menuStrip.Enabled = false; 27 28 Task.Run(() => { 29 foreach(string filename in ofd.FileNames) { 30 int result = InteropEmu.RunRecordedTest(filename); 31 32 if(result == 0) { 33 passedTests.Add(Path.GetFileNameWithoutExtension(filename)); 34 } else { 35 failedTests.Add(Path.GetFileNameWithoutExtension(filename)); 36 failedFrameCount.Add(result); 37 } 38 } 39 40 this.BeginInvoke((MethodInvoker)(() => { 41 if(failedTests.Count == 0) { 42 MessageBox.Show("All tests passed.", "", MessageBoxButtons.OK, MessageBoxIcon.Information); 43 } else { 44 StringBuilder message = new StringBuilder(); 45 if(passedTests.Count > 0) { 46 message.AppendLine("Passed tests:"); 47 foreach(string test in passedTests) { 48 message.AppendLine(" -" + test); 49 } 50 message.AppendLine(""); 51 } 52 message.AppendLine("Failed tests:"); 53 for(int i = 0, len = failedTests.Count; i < len; i++) { 54 message.AppendLine(" -" + failedTests[i] + " (" + failedFrameCount[i] + ")"); 55 } 56 MessageBox.Show(message.ToString(), "", MessageBoxButtons.OK, MessageBoxIcon.Error); 57 } 58 59 this.menuStrip.Enabled = true; 60 })); 61 }); 62 } 63 } 64 } 65 mnuTestRecordStart_Click(object sender, EventArgs e)66 private void mnuTestRecordStart_Click(object sender, EventArgs e) 67 { 68 RecordTest(true); 69 } 70 mnuTestRecordNow_Click(object sender, EventArgs e)71 private void mnuTestRecordNow_Click(object sender, EventArgs e) 72 { 73 RecordTest(false); 74 } 75 RecordTest(bool resetEmu)76 private void RecordTest(bool resetEmu) 77 { 78 using(SaveFileDialog sfd = new SaveFileDialog()) { 79 sfd.SetFilter(ResourceHelper.GetMessage("FilterTest")); 80 sfd.InitialDirectory = ConfigManager.TestFolder; 81 sfd.FileName = InteropEmu.GetRomInfo().GetRomName() + ".mtp"; 82 if(sfd.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { 83 InteropEmu.RomTestRecord(sfd.FileName, resetEmu); 84 } 85 } 86 } 87 mnuTestRecordMovie_Click(object sender, EventArgs e)88 private void mnuTestRecordMovie_Click(object sender, EventArgs e) 89 { 90 using(OpenFileDialog ofd = new OpenFileDialog()) { 91 ofd.SetFilter(ResourceHelper.GetMessage("FilterMovie")); 92 ofd.InitialDirectory = ConfigManager.MovieFolder; 93 if(ofd.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { 94 SaveFileDialog sfd = new SaveFileDialog(); 95 sfd.SetFilter(ResourceHelper.GetMessage("FilterTest")); 96 sfd.InitialDirectory = ConfigManager.TestFolder; 97 sfd.FileName = Path.GetFileNameWithoutExtension(ofd.FileName) + ".mtp"; 98 if(sfd.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { 99 InteropEmu.RomTestRecordFromMovie(sfd.FileName, ofd.FileName); 100 } 101 } 102 } 103 } 104 mnuTestRecordTest_Click(object sender, EventArgs e)105 private void mnuTestRecordTest_Click(object sender, EventArgs e) 106 { 107 using(OpenFileDialog ofd = new OpenFileDialog()) { 108 ofd.SetFilter(ResourceHelper.GetMessage("FilterTest")); 109 ofd.InitialDirectory = ConfigManager.TestFolder; 110 111 if(ofd.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { 112 SaveFileDialog sfd = new SaveFileDialog(); 113 sfd.SetFilter(ResourceHelper.GetMessage("FilterTest")); 114 sfd.InitialDirectory = ConfigManager.TestFolder; 115 sfd.FileName = Path.GetFileNameWithoutExtension(ofd.FileName) + ".mtp"; 116 if(sfd.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { 117 InteropEmu.RomTestRecordFromTest(sfd.FileName, ofd.FileName); 118 } 119 } 120 } 121 } 122 mnuRunAutomaticTest_Click(object sender, EventArgs e)123 private void mnuRunAutomaticTest_Click(object sender, EventArgs e) 124 { 125 using(OpenFileDialog ofd = new OpenFileDialog()) { 126 ofd.SetFilter("*.nes|*.nes"); 127 if(ofd.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { 128 string filename = ofd.FileName; 129 130 Task.Run(() => { 131 InteropEmu.RunAutomaticTest(filename); 132 }); 133 } 134 } 135 } 136 mnuRunAllTests_Click(object sender, EventArgs e)137 private void mnuRunAllTests_Click(object sender, EventArgs e) 138 { 139 string workingDirectory = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)); 140 ProcessStartInfo startInfo = new ProcessStartInfo(); 141 startInfo.FileName = "TestHelper.exe"; 142 startInfo.WorkingDirectory = workingDirectory; 143 Process.Start(startInfo); 144 } 145 mnuRunAllGameTests_Click(object sender, EventArgs e)146 private void mnuRunAllGameTests_Click(object sender, EventArgs e) 147 { 148 string workingDirectory = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)); 149 ProcessStartInfo startInfo = new ProcessStartInfo(); 150 startInfo.FileName = "TestHelper.exe"; 151 startInfo.Arguments = "\"" + Path.Combine(ConfigManager.HomeFolder, "TestGames") + "\""; 152 startInfo.WorkingDirectory = workingDirectory; 153 Process.Start(startInfo); 154 } 155 mnuTestStopRecording_Click(object sender, EventArgs e)156 private void mnuTestStopRecording_Click(object sender, EventArgs e) 157 { 158 InteropEmu.RomTestStop(); 159 } 160 } 161 } 162