From 55a96ca6775d4fc596713d40228d14d472d3c00e Mon Sep 17 00:00:00 2001 From: givememystuffplease Date: Tue, 14 Jul 2009 19:38:18 +0000 Subject: [PATCH] Initial structure of contents editor added. Overwriting is not yet implemented, however manipulating the contents is. Also bugfixes... --- LocalTestRun.testrunconfig | 5 + NUS Downloader.vsmdi | 6 + NUS Downloader/Form1.Designer.cs | 213 +++- NUS Downloader/Form1.cs | 290 ++++- NUS Downloader/NUS Downloader.csproj | 7 + .../Properties/Resources.Designer.cs | 42 + NUS Downloader/Properties/Resources.resx | 18 + NUS Downloader/Resources/arrow_down.png | Bin 0 -> 379 bytes NUS Downloader/Resources/arrow_up.png | Bin 0 -> 372 bytes NUS Downloader/Resources/bug_add.png | Bin 0 -> 806 bytes NUS Downloader/Resources/connect.png | Bin 0 -> 748 bytes NUS Downloader/Resources/package_add.png | Bin 0 -> 899 bytes NUS Downloader/Resources/package_delete.png | Bin 0 -> 891 bytes NUS Downloader/Resources/pencil.png | Bin 0 -> 450 bytes NUSDTEST/AuthoringTests.txt | 136 +++ NUSDTEST/Form1Test.cs | 1055 +++++++++++++++++ NUSDTEST/NUSDTEST.csproj | 72 ++ NUSDTEST/ProgramTest.cs | 77 ++ NUSDTEST/Properties/AssemblyInfo.cs | 35 + NUSDTEST/ResourcesTest.cs | 185 +++ NUSDTEST/SettingsTest.cs | 89 ++ .../Test References/NUS Downloader.accessor | 2 + 22 files changed, 2163 insertions(+), 69 deletions(-) create mode 100644 LocalTestRun.testrunconfig create mode 100644 NUS Downloader.vsmdi create mode 100644 NUS Downloader/Resources/arrow_down.png create mode 100644 NUS Downloader/Resources/arrow_up.png create mode 100644 NUS Downloader/Resources/bug_add.png create mode 100644 NUS Downloader/Resources/connect.png create mode 100644 NUS Downloader/Resources/package_add.png create mode 100644 NUS Downloader/Resources/package_delete.png create mode 100644 NUS Downloader/Resources/pencil.png create mode 100644 NUSDTEST/AuthoringTests.txt create mode 100644 NUSDTEST/Form1Test.cs create mode 100644 NUSDTEST/NUSDTEST.csproj create mode 100644 NUSDTEST/ProgramTest.cs create mode 100644 NUSDTEST/Properties/AssemblyInfo.cs create mode 100644 NUSDTEST/ResourcesTest.cs create mode 100644 NUSDTEST/SettingsTest.cs create mode 100644 NUSDTEST/Test References/NUS Downloader.accessor diff --git a/LocalTestRun.testrunconfig b/LocalTestRun.testrunconfig new file mode 100644 index 0000000..5561d35 --- /dev/null +++ b/LocalTestRun.testrunconfig @@ -0,0 +1,5 @@ + + + This is a default test run configuration for a local test run. + + \ No newline at end of file diff --git a/NUS Downloader.vsmdi b/NUS Downloader.vsmdi new file mode 100644 index 0000000..b120e32 --- /dev/null +++ b/NUS Downloader.vsmdi @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/NUS Downloader/Form1.Designer.cs b/NUS Downloader/Form1.Designer.cs index b7ea77c..b386bfd 100644 --- a/NUS Downloader/Form1.Designer.cs +++ b/NUS Downloader/Form1.Designer.cs @@ -52,16 +52,16 @@ this.IOSMenuList = new System.Windows.Forms.ToolStripMenuItem(); this.VCMenuList = new System.Windows.Forms.ToolStripMenuItem(); this.C64MenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.GenesisMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.MSXMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.N64MenuList = new System.Windows.Forms.ToolStripMenuItem(); this.NeoGeoMenuList = new System.Windows.Forms.ToolStripMenuItem(); this.NESMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.SNESMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.N64MenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.MSXMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.TurboGrafx16MenuList = new System.Windows.Forms.ToolStripMenuItem(); this.SegaMSMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.GenesisMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.VCArcadeMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.SNESMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.TurboGrafx16MenuList = new System.Windows.Forms.ToolStripMenuItem(); this.TurboGrafxCDMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.VCArcadeMenuList = new System.Windows.Forms.ToolStripMenuItem(); this.WiiWareMenuList = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.RegionCodesList = new System.Windows.Forms.ToolStripMenuItem(); @@ -94,11 +94,22 @@ this.label12 = new System.Windows.Forms.Label(); this.shamelessvariablelabel = new System.Windows.Forms.Label(); this.button3 = new System.Windows.Forms.Button(); + this.contentsEdit = new System.Windows.Forms.ListBox(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.button13 = new System.Windows.Forms.Button(); + this.button15 = new System.Windows.Forms.Button(); + this.button14 = new System.Windows.Forms.Button(); + this.button12 = new System.Windows.Forms.Button(); + this.button8 = new System.Windows.Forms.Button(); + this.button11 = new System.Windows.Forms.Button(); + this.button9 = new System.Windows.Forms.Button(); + this.button10 = new System.Windows.Forms.Button(); this.radioButton1 = new System.Windows.Forms.RadioButton(); this.radioButton2 = new System.Windows.Forms.RadioButton(); this.databaseStrip.SuspendLayout(); this.tmdgpbox.SuspendLayout(); this.ticketgpbox.SuspendLayout(); + this.groupBox1.SuspendLayout(); this.SuspendLayout(); // // TMDButton @@ -286,7 +297,7 @@ this.RegionCodesList}); this.databaseStrip.Name = "databaseStrip"; this.databaseStrip.ShowItemToolTips = false; - this.databaseStrip.Size = new System.Drawing.Size(155, 142); + this.databaseStrip.Size = new System.Drawing.Size(155, 120); // // SystemMenuList // @@ -325,6 +336,24 @@ this.C64MenuList.Size = new System.Drawing.Size(194, 22); this.C64MenuList.Text = "Commodore 64"; // + // GenesisMenuList + // + this.GenesisMenuList.Name = "GenesisMenuList"; + this.GenesisMenuList.Size = new System.Drawing.Size(194, 22); + this.GenesisMenuList.Text = "Mega Drive/Genesis"; + // + // MSXMenuList + // + this.MSXMenuList.Name = "MSXMenuList"; + this.MSXMenuList.Size = new System.Drawing.Size(194, 22); + this.MSXMenuList.Text = "MSX"; + // + // N64MenuList + // + this.N64MenuList.Name = "N64MenuList"; + this.N64MenuList.Size = new System.Drawing.Size(194, 22); + this.N64MenuList.Text = "Nintendo 64"; + // // NeoGeoMenuList // this.NeoGeoMenuList.Name = "NeoGeoMenuList"; @@ -337,41 +366,29 @@ this.NESMenuList.Size = new System.Drawing.Size(194, 22); this.NESMenuList.Text = "NES"; // + // SegaMSMenuList + // + this.SegaMSMenuList.Name = "SegaMSMenuList"; + this.SegaMSMenuList.Size = new System.Drawing.Size(194, 22); + this.SegaMSMenuList.Text = "Sega Master System"; + // // SNESMenuList // this.SNESMenuList.Name = "SNESMenuList"; this.SNESMenuList.Size = new System.Drawing.Size(194, 22); this.SNESMenuList.Text = "SNES"; // - // N64MenuList - // - this.N64MenuList.Name = "N64MenuList"; - this.N64MenuList.Size = new System.Drawing.Size(194, 22); - this.N64MenuList.Text = "Nintendo 64"; - // - // MSXMenuList - // - this.MSXMenuList.Name = "MSXMenuList"; - this.MSXMenuList.Size = new System.Drawing.Size(194, 22); - this.MSXMenuList.Text = "MSX"; - // // TurboGrafx16MenuList // this.TurboGrafx16MenuList.Name = "TurboGrafx16MenuList"; this.TurboGrafx16MenuList.Size = new System.Drawing.Size(194, 22); this.TurboGrafx16MenuList.Text = "TruboGrafx-16"; // - // SegaMSMenuList + // TurboGrafxCDMenuList // - this.SegaMSMenuList.Name = "SegaMSMenuList"; - this.SegaMSMenuList.Size = new System.Drawing.Size(194, 22); - this.SegaMSMenuList.Text = "Sega Master System"; - // - // GenesisMenuList - // - this.GenesisMenuList.Name = "GenesisMenuList"; - this.GenesisMenuList.Size = new System.Drawing.Size(194, 22); - this.GenesisMenuList.Text = "Mega Drive/Genesis"; + this.TurboGrafxCDMenuList.Name = "TurboGrafxCDMenuList"; + this.TurboGrafxCDMenuList.Size = new System.Drawing.Size(194, 22); + this.TurboGrafxCDMenuList.Text = "TurboGrafx-CD"; // // VCArcadeMenuList // @@ -379,12 +396,6 @@ this.VCArcadeMenuList.Size = new System.Drawing.Size(194, 22); this.VCArcadeMenuList.Text = "Virtual Console Arcade"; // - // TurboGrafxCDMenuList - // - this.TurboGrafxCDMenuList.Name = "TurboGrafxCDMenuList"; - this.TurboGrafxCDMenuList.Size = new System.Drawing.Size(194, 22); - this.TurboGrafxCDMenuList.Text = "TurboGrafx-CD"; - // // WiiWareMenuList // this.WiiWareMenuList.Name = "WiiWareMenuList"; @@ -674,7 +685,7 @@ // this.button7.FlatStyle = System.Windows.Forms.FlatStyle.Popup; this.button7.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.button7.Location = new System.Drawing.Point(278, 290); + this.button7.Location = new System.Drawing.Point(278, 459); this.button7.Name = "button7"; this.button7.Size = new System.Drawing.Size(249, 27); this.button7.TabIndex = 28; @@ -685,9 +696,9 @@ // label12 // this.label12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.label12.Location = new System.Drawing.Point(278, 335); + this.label12.Location = new System.Drawing.Point(239, 465); this.label12.Name = "label12"; - this.label12.Size = new System.Drawing.Size(249, 148); + this.label12.Size = new System.Drawing.Size(23, 15); this.label12.TabIndex = 29; this.label12.Text = resources.GetString("label12.Text"); this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -712,6 +723,118 @@ this.button3.UseVisualStyleBackColor = true; this.button3.Click += new System.EventHandler(this.button3_Click_1); // + // contentsEdit + // + this.contentsEdit.FormattingEnabled = true; + this.contentsEdit.Location = new System.Drawing.Point(9, 19); + this.contentsEdit.Name = "contentsEdit"; + this.contentsEdit.Size = new System.Drawing.Size(138, 134); + this.contentsEdit.TabIndex = 32; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.button13); + this.groupBox1.Controls.Add(this.button15); + this.groupBox1.Controls.Add(this.button14); + this.groupBox1.Controls.Add(this.button12); + this.groupBox1.Controls.Add(this.contentsEdit); + this.groupBox1.Controls.Add(this.button8); + this.groupBox1.Controls.Add(this.button11); + this.groupBox1.Controls.Add(this.button9); + this.groupBox1.Controls.Add(this.button10); + this.groupBox1.Location = new System.Drawing.Point(278, 290); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(249, 160); + this.groupBox1.TabIndex = 41; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Edit Title Contents"; + // + // button13 + // + this.button13.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.button13.Image = global::NUS_Downloader.Properties.Resources.bug_add; + this.button13.Location = new System.Drawing.Point(217, 53); + this.button13.Name = "button13"; + this.button13.Size = new System.Drawing.Size(26, 26); + this.button13.TabIndex = 43; + this.button13.UseVisualStyleBackColor = true; + // + // button15 + // + this.button15.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.button15.Location = new System.Drawing.Point(153, 95); + this.button15.Name = "button15"; + this.button15.Size = new System.Drawing.Size(90, 26); + this.button15.TabIndex = 42; + this.button15.Text = "Revert"; + this.button15.UseVisualStyleBackColor = true; + this.button15.Click += new System.EventHandler(this.button15_Click); + // + // button14 + // + this.button14.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.button14.Location = new System.Drawing.Point(153, 127); + this.button14.Name = "button14"; + this.button14.Size = new System.Drawing.Size(90, 26); + this.button14.TabIndex = 41; + this.button14.Text = "Overwrite"; + this.button14.UseVisualStyleBackColor = true; + // + // button12 + // + this.button12.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.button12.Image = global::NUS_Downloader.Properties.Resources.connect; + this.button12.Location = new System.Drawing.Point(217, 19); + this.button12.Name = "button12"; + this.button12.Size = new System.Drawing.Size(26, 26); + this.button12.TabIndex = 40; + this.button12.UseVisualStyleBackColor = true; + this.button12.Click += new System.EventHandler(this.button12_Click); + // + // button8 + // + this.button8.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.button8.Image = global::NUS_Downloader.Properties.Resources.arrow_up; + this.button8.Location = new System.Drawing.Point(153, 19); + this.button8.Name = "button8"; + this.button8.Size = new System.Drawing.Size(26, 26); + this.button8.TabIndex = 33; + this.button8.UseVisualStyleBackColor = true; + this.button8.Click += new System.EventHandler(this.button8_Click); + // + // button11 + // + this.button11.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.button11.Image = global::NUS_Downloader.Properties.Resources.package_add; + this.button11.Location = new System.Drawing.Point(185, 19); + this.button11.Name = "button11"; + this.button11.Size = new System.Drawing.Size(26, 26); + this.button11.TabIndex = 36; + this.button11.UseVisualStyleBackColor = true; + this.button11.Click += new System.EventHandler(this.button11_Click); + // + // button9 + // + this.button9.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.button9.Image = global::NUS_Downloader.Properties.Resources.arrow_down; + this.button9.Location = new System.Drawing.Point(153, 53); + this.button9.Name = "button9"; + this.button9.Size = new System.Drawing.Size(26, 26); + this.button9.TabIndex = 34; + this.button9.UseVisualStyleBackColor = true; + this.button9.Click += new System.EventHandler(this.button9_Click); + // + // button10 + // + this.button10.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.button10.Image = global::NUS_Downloader.Properties.Resources.package_delete; + this.button10.Location = new System.Drawing.Point(185, 53); + this.button10.Name = "button10"; + this.button10.Size = new System.Drawing.Size(26, 26); + this.button10.TabIndex = 35; + this.button10.UseVisualStyleBackColor = true; + this.button10.Click += new System.EventHandler(this.button10_Click); + // // radioButton1 // this.radioButton1.BackColor = System.Drawing.Color.Transparent; @@ -741,18 +864,19 @@ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(539, 492); + this.Controls.Add(this.groupBox1); this.Controls.Add(this.button3); this.Controls.Add(this.shamelessvariablelabel); this.Controls.Add(this.label12); this.Controls.Add(this.button6); this.Controls.Add(this.button1); - this.Controls.Add(this.button7); this.Controls.Add(this.ticketgpbox); this.Controls.Add(this.button5); this.Controls.Add(this.button4); this.Controls.Add(this.tmdgpbox); this.Controls.Add(this.truchabox); this.Controls.Add(this.databaseButton); + this.Controls.Add(this.button7); this.Controls.Add(this.decryptbox); this.Controls.Add(this.ignoreticket); this.Controls.Add(this.wadnamebox); @@ -783,6 +907,7 @@ this.tmdgpbox.PerformLayout(); this.ticketgpbox.ResumeLayout(false); this.ticketgpbox.PerformLayout(); + this.groupBox1.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout(); @@ -856,6 +981,16 @@ private System.Windows.Forms.Label label12; private System.Windows.Forms.Label shamelessvariablelabel; private System.Windows.Forms.Button button3; + private System.Windows.Forms.ListBox contentsEdit; + private System.Windows.Forms.Button button8; + private System.Windows.Forms.Button button9; + private System.Windows.Forms.Button button10; + private System.Windows.Forms.Button button11; + private System.Windows.Forms.Button button12; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button button14; + private System.Windows.Forms.Button button15; + private System.Windows.Forms.Button button13; } } diff --git a/NUS Downloader/Form1.cs b/NUS Downloader/Form1.cs index bc122a7..e31188e 100644 --- a/NUS Downloader/Form1.cs +++ b/NUS Downloader/Form1.cs @@ -18,6 +18,8 @@ namespace NUS_Downloader static RijndaelManaged rijndaelCipher; static bool dsidecrypt = false; const string certs_MD5 = "7677AD47BAA5D6E3E313E72661FBDC16"; + + // Images do not compare unless globalized... Image green = Properties.Resources.bullet_green; @@ -270,30 +272,26 @@ namespace NUS_Downloader titleversion.Text = Convert.ToString(int.Parse(tmdversion, System.Globalization.NumberStyles.HexNumber)); // Read System Version (Needed IOS) - string sysversion = ""; - for (int i = 0; i < 8; i++) - { - sysversion += MakeProperLength(ConvertToHex(Convert.ToString(tmd[0x184 + i]))); - } - sysversion = Convert.ToString(int.Parse(sysversion.Substring(14, 2), System.Globalization.NumberStyles.HexNumber)); + string sysversion = IOSNeededFromTMD(tmd); if (sysversion != "0") WriteStatus("Requires: IOS" + sysversion); // Read Content #... - string contentstrnum = ""; + int nbr_cont = ContentCount(tmd); + /*string contentstrnum = ""; for (int x = 478; x < 480; x++) { contentstrnum += TrimLeadingZeros(Convert.ToString(tmd[x])); - } - WriteStatus("Content Count: " + contentstrnum); + }*/ + WriteStatus("Content Count: " + nbr_cont); - string[] tmdcontents = GetContentNames(tmd, Convert.ToInt32(contentstrnum)); - string[] tmdsizes = GetContentSizes(tmd, Convert.ToInt32(contentstrnum)); - byte[] tmdhashes = GetContentHashes(tmd, Convert.ToInt32(contentstrnum)); - byte[] tmdindices = GetContentIndices(tmd, Convert.ToInt32(contentstrnum)); + string[] tmdcontents = GetContentNames(tmd, nbr_cont); + string[] tmdsizes = GetContentSizes(tmd, nbr_cont); + byte[] tmdhashes = GetContentHashes(tmd, nbr_cont); + byte[] tmdindices = GetContentIndices(tmd, nbr_cont); // Loop through each content and display name, hash, index - for (int i = 0; i < Convert.ToInt32(contentstrnum); i++) + for (int i = 0; i < nbr_cont; i++) { WriteStatus(" Content " + (i + 1) + ": " + tmdcontents[i] + " (" + Convert.ToString(int.Parse(tmdsizes[i], System.Globalization.NumberStyles.HexNumber)) + " bytes)"); byte[] hash = new byte[20]; @@ -308,6 +306,33 @@ namespace NUS_Downloader } } + private string IOSNeededFromTMD(byte[] tmd) + { + string sysversion = ""; + for (int i = 0; i < 8; i++) + { + sysversion += MakeProperLength(ConvertToHex(Convert.ToString(tmd[0x184 + i]))); + } + sysversion = Convert.ToString(int.Parse(sysversion.Substring(14, 2), System.Globalization.NumberStyles.HexNumber)); + return sysversion; + } + + private int ContentCount(byte[] tmd) + { + // nbr_cont (0xDE) len=0x02 + int nbr_cont = 0; + nbr_cont = (tmd[0x1DE] * 256) + tmd[0x1DF]; + return nbr_cont; + } + + private int BootIndex(byte[] tmd) + { + // nbr_cont (0xE0) len=0x02 + int bootidx = 0; + bootidx = (tmd[0x1E0] * 256) + tmd[0x1E1]; + return bootidx; + } + private void WriteStatus(string Update) { // Small function for writing text to the statusbox... @@ -545,8 +570,15 @@ namespace NUS_Downloader } else { - if (!statusbox.Lines[0].StartsWith(" ---")) + try + { + if (!statusbox.Lines[0].StartsWith(" ---")) + statusbox.Text = " --- " + titleidbox.Text + " ---"; + } + catch // No lines present... + { statusbox.Text = " --- " + titleidbox.Text + " ---"; + } } // Running Downloads in background so no form freezing @@ -695,13 +727,8 @@ namespace NUS_Downloader } titleversion.Text = Convert.ToString(int.Parse(tmdversion, System.Globalization.NumberStyles.HexNumber)); - // Read System Version (Needed IOS) - string sysversion = ""; - for (int i = 0; i < 8; i++) - { - sysversion += MakeProperLength(ConvertToHex(Convert.ToString(tmd[0x184 + i]))); - } - sysversion = Convert.ToString(int.Parse(sysversion.Substring(14, 2), System.Globalization.NumberStyles.HexNumber)); + //Read System Version (Needed IOS) + string sysversion = IOSNeededFromTMD(tmd); if (sysversion != "0") WriteStatus("Requires: IOS" + sysversion); @@ -792,7 +819,7 @@ namespace NUS_Downloader // Create decrypted file string zeros = "000000"; - FileStream decfs = new FileStream(titledirectory + @"\" + zeros + i.ToString("X2") + ".app", FileMode.Create); + FileStream decfs = new FileStream(RemoveIllegalCharacters(titledirectory + @"\" + zeros + i.ToString("X2") + ".app"), FileMode.Create); decfs.Write(Decrypt(contbuf), 0, int.Parse(tmdsizes[i], System.Globalization.NumberStyles.HexNumber)); decfs.Close(); WriteStatus(" - Decrypted: " + zeros + i.ToString("X2") + ".app"); @@ -830,6 +857,9 @@ namespace NUS_Downloader tmdversiontrucha.Text = Convert.ToString((tmd[0x1DC]*256) + tmd[0x1DD]); newtitleidbox.Text = titleid; + // Add contents to contentEdit... + FillContentInfo(tmd); + // Setup for NO IOS if (requiredIOSbox.Text == "0") requiredIOSbox.Enabled = false; @@ -1030,7 +1060,7 @@ namespace NUS_Downloader wadnamebox.Text = wadnamebox.Text.Replace("[v]", "v" + titleversion.Text); // Create wad file - FileStream wadfs = new FileStream(totaldirectory + @"\" + wadnamebox.Text, FileMode.Create); + FileStream wadfs = new FileStream(RemoveIllegalCharacters(totaldirectory + @"\" + wadnamebox.Text), FileMode.Create); // Add wad stuffs WADHeader wad = new WADHeader(); @@ -1257,7 +1287,7 @@ namespace NUS_Downloader currentdir += Path.DirectorySeparatorChar; // Create certs file - FileStream certsfs = new FileStream(currentdir + @"\cert.sys", FileMode.Create); + FileStream certsfs = new FileStream(RemoveIllegalCharacters(currentdir + @"\cert.sys"), FileMode.Create); // Getting it from SystemMenu 3.2 DownloadNUSFile("0000000100000002", "tmd.289", currentdir + @"\", 0, true); @@ -1498,7 +1528,6 @@ namespace NUS_Downloader string titleID = ""; string descname = ""; - string stticket = ""; bool dangerous = false; bool ticket = true; @@ -1547,7 +1576,7 @@ namespace NUS_Downloader break; } XMLToolStripItem.Image = SelectItemImage(ticket, dangerous); - XMLToolStripItem.Text = titleID + " " + stticket + " " + descname; + XMLToolStripItem.Text = String.Format("{0} - {1}", titleID, descname); } AddToolStripItemToStrip(i, XMLToolStripItem, XMLAttributes); @@ -1792,6 +1821,17 @@ namespace NUS_Downloader titleidbox.Text = titleidbox.Text.Substring(0, 14) + e.ClickedItem.Text.Substring(0, 2); } + private string RemoveIllegalCharacters(string databasestr) + { + // Database strings must contain filename-legal characters. + foreach (char illegalchar in System.IO.Path.GetInvalidFileNameChars()) + { + if (databasestr.Contains(illegalchar.ToString())) + databasestr = databasestr.Replace(illegalchar, '-'); + } + return databasestr; + } + private byte[] ZeroSignature(byte[] tmdortik) { // Write all 0x00 to signature... @@ -1970,7 +2010,7 @@ namespace NUS_Downloader tmd = ZeroSignature(tmd); tmd = TruchaSign(tmd); - FileStream testtmd = new FileStream(fileinfo[0] + fileinfo[1], FileMode.Open); + FileStream testtmd = new FileStream(RemoveIllegalCharacters(fileinfo[0] + fileinfo[1]), FileMode.Open); testtmd.Write(tmd, 0, tmd.Length); testtmd.Close(); } @@ -2017,7 +2057,7 @@ namespace NUS_Downloader byte[] limitseconds = new byte[4]; limitseconds = InttoByteArray(Convert.ToInt32(timelimitsecs.Text), 4); //DEBUG - WriteStatus(DisplayBytes(limitseconds, " ")); + //WriteStatus(DisplayBytes(limitseconds, " ")); for (int i = 0; i < 4; i++) { cetkbuff[0x248 + i] = limitseconds[i]; @@ -2028,7 +2068,7 @@ namespace NUS_Downloader cetkbuff = TruchaSign(cetkbuff); // Write changes to cetk. - FileStream testtik = new FileStream(fileinfo[0] + "cetk", FileMode.Open); + FileStream testtik = new FileStream(RemoveIllegalCharacters(fileinfo[0] + "cetk"), FileMode.Open); testtik.Write(cetkbuff, 0, cetkbuff.Length); testtik.Close(); } @@ -2129,6 +2169,196 @@ namespace NUS_Downloader wadnamebox.Text = titleidbox.Text + "-NUS-[v]" + titleversion.Text + ".wad"; } } + wadnamebox.Text = RemoveIllegalCharacters(wadnamebox.Text); } + + // This is WIP code/theory... + private byte[] GenerateTicket(byte[] EncTitleKey, byte[] TitleID) + { + byte[] Ticket = new byte[0x2A4]; + + // RSA Signature Heading... + Ticket[1] = 0x01; Ticket[3] = 0x01; + + // Signature Issuer... (Root-CA00000001-XS00000003) + byte[] SignatureIssuer = new byte[0x1A] { 0x52, 0x6F, 0x6F, 0x74, 0x2D, 0x43, 0x41, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x2D, 0x58, 0x53, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x33 }; + for (int a = 0; a < 0x40; a++) + { + Ticket[0x140 + a] = SignatureIssuer[a]; + } + + // Encrypted TitleKey... + for (int b = 0; b < 0x10; b++) + { + Ticket[0x1BF + b] = EncTitleKey[b]; + } + + // Ticket ID... + for (int c = 0; c < 0x08; c++) + { + Ticket[0x1D0 + c] = 0x49; + } + + // Title ID... + for (int d = 0; d < 0x08; d++) + { + Ticket[0x1DC + d] = TitleID[d]; + } + + // Misc FF... + Ticket[0x1E4] = 0xFF; Ticket[0x1E5] = 0xFF; + Ticket[0x1E6] = 0xFF; Ticket[0x1E7] = 0xFF; + + // Unknown 0x01... + Ticket[0x221] = 0x01; + + // Misc FF... + for (int e = 0; e < 0x20; e++) + { + Ticket[0x222 + e] = 0xFF; + } + + return Ticket; + } + + private void button15_Click(object sender, EventArgs e) + { + // Read Content info from TMD again (revert) + string[] fileinfo = shamelessvariablelabel.Text.Split(','); + + // Read the tmd as a stream... + byte[] tmd = FileLocationToByteArray(fileinfo[0] + fileinfo[1]); + + FillContentInfo(tmd); + } + + private void FillContentInfo(byte[] tmd) + { + // Clear anything existing... + contentsEdit.Items.Clear(); + + // # of Contents and BootIndex + int nbr_cont = ContentCount(tmd); + int boot_idx = BootIndex(tmd); + + string[] tmdcontents = GetContentNames(tmd, nbr_cont); + byte[] tmdindices = GetContentIndices(tmd, nbr_cont); + + // Loop and add contents to listbox... + for (int a = 0; a < nbr_cont; a++) + { + contentsEdit.Items.Add(String.Format("[{0}] [{1}]", tmdindices[a], tmdcontents[a])); + } + + // Identify Boot Content... + contentsEdit.Items[boot_idx] += " [BOOT]"; + + } + + private void button8_Click(object sender, EventArgs e) + { + // Move selected content upwards (down an index)... + if (contentsEdit.SelectedIndex <= 0) + return; + + int sel_idx = contentsEdit.SelectedIndex; + string sel_item = contentsEdit.Items[sel_idx].ToString(); + string lower_item = contentsEdit.Items[sel_idx - 1].ToString(); + + contentsEdit.Items[sel_idx] = String.Format("[{0}]{1}", sel_idx, lower_item.Substring(3, lower_item.Length - 3)); + contentsEdit.Items[sel_idx - 1] = String.Format("[{0}]{1}", sel_idx - 1, sel_item.Substring(3, sel_item.Length - 3)); + + contentsEdit.SelectedIndex = sel_idx - 1; + } + + private void button9_Click(object sender, EventArgs e) + { + // Move selected content down (up an index)... + if (contentsEdit.SelectedIndex >= contentsEdit.Items.Count - 1) + return; + + int sel_idx = contentsEdit.SelectedIndex; + string sel_item = contentsEdit.Items[sel_idx].ToString(); + string upper_item = contentsEdit.Items[sel_idx + 1].ToString(); + + contentsEdit.Items[sel_idx] = String.Format("[{0}]{1}", sel_idx, upper_item.Substring(3, upper_item.Length - 3)); + contentsEdit.Items[sel_idx + 1] = String.Format("[{0}]{1}", sel_idx + 1, sel_item.Substring(3, sel_item.Length - 3)); + + contentsEdit.SelectedIndex = sel_idx + 1; + } + + private void button12_Click(object sender, EventArgs e) + { + // Set a new boot index... + if (contentsEdit.SelectedIndex <= 0) + return; + + for (int a = 0; a < contentsEdit.Items.Count; a++) + { + if (contentsEdit.Items[a].ToString().Contains(" [BOOT]")) + contentsEdit.Items[a] = contentsEdit.Items[a].ToString().Substring(0, contentsEdit.Items[a].ToString().Length - 7); + } + + contentsEdit.Items[contentsEdit.SelectedIndex] += " [BOOT]"; + } + + private void button11_Click(object sender, EventArgs e) + { + // Add a file to the contents... + OpenFileDialog opencont = new OpenFileDialog(); + opencont.Filter = "All Files|*"; + opencont.Multiselect = false; + opencont.Title = "Locate a Content"; + if (opencont.ShowDialog() != DialogResult.Cancel) + { + if ((opencont.SafeFileName.Length != 8) && (OnlyHexInString(opencont.SafeFileName) == false)) + { + MessageBox.Show("Please locate/rename a file to be (8 HEX CHARACTERS) long!", "Bad!", MessageBoxButtons.OK); + return; + } + + for (int i = 0; i < contentsEdit.Items.Count; i++) + { + if (contentsEdit.Items[i].ToString().Contains(opencont.SafeFileName)) + { + MessageBox.Show("A file already exists in the title with that filename!", "Bad!", MessageBoxButtons.OK); + return; + } + } + + // D: TODO? + string[] fileinfo = shamelessvariablelabel.Text.Split(','); + + if (fileinfo[0] + opencont.SafeFileName != opencont.FileName) + { + // Move the file into the directory... + File.Copy(opencont.FileName, fileinfo[0] + opencont.SafeFileName); + } + contentsEdit.Items.Add(String.Format("[{0}] [{1}]", contentsEdit.Items.Count, opencont.SafeFileName)); + } + } + + public bool OnlyHexInString(string test) + { + return System.Text.RegularExpressions.Regex.IsMatch(test, @"\A\b[0-9a-fA-F]+\b\Z"); + } + + private void button10_Click(object sender, EventArgs e) + { + // Remove a content from the list... + if ((contentsEdit.SelectedIndex <= 0) || (contentsEdit.Items.Count <= 1)) + return; + + string[] fileinfo = shamelessvariablelabel.Text.Split(','); + DialogResult question = MessageBox.Show("Delete the actual file as well?", "Delete content?", MessageBoxButtons.YesNoCancel); + + if (question == DialogResult.Yes) + File.Delete(fileinfo[0] + contentsEdit.SelectedItem.ToString().Substring(contentsEdit.SelectedItem.ToString().IndexOf("] [") + 3, 8)); + + if (question != DialogResult.Cancel) + contentsEdit.Items.RemoveAt(contentsEdit.SelectedIndex); + } + + } } diff --git a/NUS Downloader/NUS Downloader.csproj b/NUS Downloader/NUS Downloader.csproj index cf67e5c..9302500 100644 --- a/NUS Downloader/NUS Downloader.csproj +++ b/NUS Downloader/NUS Downloader.csproj @@ -102,6 +102,13 @@ + + + + + + + diff --git a/NUS Downloader/Properties/Resources.Designer.cs b/NUS Downloader/Properties/Resources.Designer.cs index 2286bbc..0dca0dd 100644 --- a/NUS Downloader/Properties/Resources.Designer.cs +++ b/NUS Downloader/Properties/Resources.Designer.cs @@ -60,6 +60,27 @@ namespace NUS_Downloader.Properties { } } + internal static System.Drawing.Bitmap arrow_down { + get { + object obj = ResourceManager.GetObject("arrow_down", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap arrow_up { + get { + object obj = ResourceManager.GetObject("arrow_up", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap bug_add { + get { + object obj = ResourceManager.GetObject("bug_add", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap bullet_green { get { object obj = ResourceManager.GetObject("bullet_green", resourceCulture); @@ -95,6 +116,13 @@ namespace NUS_Downloader.Properties { } } + internal static System.Drawing.Bitmap connect { + get { + object obj = ResourceManager.GetObject("connect", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap dsi { get { object obj = ResourceManager.GetObject("dsi", resourceCulture); @@ -102,6 +130,20 @@ namespace NUS_Downloader.Properties { } } + internal static System.Drawing.Bitmap package_add { + get { + object obj = ResourceManager.GetObject("package_add", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap package_delete { + get { + object obj = ResourceManager.GetObject("package_delete", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap wilolgoi { get { object obj = ResourceManager.GetObject("wilolgoi", resourceCulture); diff --git a/NUS Downloader/Properties/Resources.resx b/NUS Downloader/Properties/Resources.resx index 3757dc4..52cff2a 100644 --- a/NUS Downloader/Properties/Resources.resx +++ b/NUS Downloader/Properties/Resources.resx @@ -139,4 +139,22 @@ ..\Resources\bullet_redgreen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\arrow_down.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_up.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\connect.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\package_add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\package_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\bug_add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/NUS Downloader/Resources/arrow_down.png b/NUS Downloader/Resources/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4e279377bf348f9cf53894e76bb673ccf067bd GIT binary patch literal 379 zcmV->0fhdEP)RB*?~^j!LKVQ>(O&A{Xr%)RXLn#U zs4LtZ6rCMFY5|B2$)yG$6aaIF6w#wHUuW*nL5>vZR zlg{G&%mT~|kL3ei%GW0*UOHUMs5XI$4uxe-L?I@SAefq*207}Iqtjm#e5*fP53AiC z)C|RQfwzxx<#_WfANRGZx{+tFDl8~Q?;~Ve=lM^*8UTTnVL?HTDz8uta0D@d28E9S z_)i8aLz^UE6PPKymi;2GJ`34{eIia-CtfAt0H61rk0 SPTNud00001KIqEP)`=&gfiynuLKNZXG^E&{Pmo=c@q3lv(pO2HUs^S=b~RK*#7&0iej;CY0$=&!}s zlPnn>f-S)ydndO_sP#!8nj+R?CkfAP%XVTzFwO9TP1xb;uc#KsVI@l}Q45e-dhki*R$I z2-9muy!q^gVO|BPfeBvOF`d^nvNfldX*DM?__P--&T^EHL~V~MQP7!$$#>nDeBT4g zbPGxt7D_0BtwZmh)yP<8H860+R0_4Z46G^!QX3=jcx?dt&Gptu5gh%A!qs$BNJZe! zpi8Gf>I6~l|Lc}p0gYR}o2;3W`|jYN2NngaMkxJ}tqVn$`{Hh8DpL5+419Tj?8J72 k;<$%Q*reM26FaHB-zR>QH2KN`fNj zBHaWZEgiB#>49kYe(borqx+hj`JS_1d)R}7LjHa+tu+qg(TC+eO4&q(D;ZL8C8o8; zLEfZxiIlQ~iE1b1qBZ2=VhsA0V`*@y@M|Sc2@Wtadv3g0hOc*O(ADVFjPTWAYz(JXS z8MBaa%aCO{h8lvp*ONKIh5Bg|-DNo^;jg=q=uDZ@vodOJXfu;GK`ze`H-VrWK!nUg zje)ufRUJ&ouB2nYB2_pI=gji&GcuBL=+DM-wBZ)fbc7&a9AP1Ztk5)S4Ah03bqXOt zxx}VdK|CIVljyc=oqO1G{;Qew7T~%?tSw{^mi$E(2^Td6>M8+m4H!qrBtj~%w(Y~Q zVrXkVOEN#2&@(U(cX3H&S97B(;-}{)?<>?0)RjVZqrJ&ONChgCgE9%PC}CSBp!+d1 z`bkAqacXYz!94aLsJZ!K=3b*?T#ge1nL>bsZNf4&8mt(EkXYZ?MK0YwH2ZOI9{(VN z&%WPH*v6AY+yG?)mZ`CxE@5ZK2lW}4Pr-ctMRE2V`yf8$PurT4&^p3q*2kt>M8OM& zl@MbQ=U&8BS_$dSjo(q&2Pyd!8`}{~Xr#A_DDL|G({Ha$;Xe@?&|@q4QbvV}D#ixB ey}zEqA^Zgf(1+rQ>#k7%0000i-HS{zx9u^IUGw>*=$qi z4z(fju8Kxf4E>slBg^es4|nAN~@NV_SFj zT24(nZf1>C;s&Oa#mmJBSw-p_cY~Y6U)hMyiI9#@b2~OpJ~{tQK#e@V>&ZUL%dC-& z4K3ksgdE?;g2XJ7a-IC z{t7T9P!AB)6MkIq=xo`8@fr4Pe+pxHJkq|8i#gBoi7`)S7Dry495@-9|NUzWL5S=I zI}8e@=#j{*V_TIRYJCHM<4>HSsjdT~`23%KH*e}YU%C<>JM(QmG2_K2&b4Ftok-)u zSoT&#!hAJ4MD=!?;n}ksXzJm;^DmMqtaEL0%KcAFfAn>=sgaW^@?6tnFI$DxIX=HQ z$n|KMeH{mAuJ2-I1BCpEP)*e`r0GmDdCv3B-24AN7nLkDp7r6!fpdkQ_POs-o|x$lEQQg9%evW;K1esG{Gik*}W^x_p02 zz@7605mh~*BB$cp`?|L6d!3LNikV3wPMD?CDC_s8?yATc75TAuc)YR+NS+_)L-b>( zsrQ9#j~&5n>ISV5tlihzvj6 zHDtNXPvRAp*~s0*)Qb3}431T$tz$2EYlIs*2)S|cnIwy;Davbif3elb@jZvmT7F@f zVrCSn<#Eb6%J~fW`2`LReM=-(52Z9(N@3-bw6yQ1u^Fa+pFL`;NJ+68qpm}|xr0jX z26asd5=}8;l);+=69sPpD)W@H6BN@|aCaR+jg)K^0RgNik;ZN!P8@G(5-Bbb34>Lh zfsj(mUZRj+Cx|5=>Y#prieRe|9`s;9t61=5{Se?kq8ij zU+()P`Q4A8{?PogZ2858X21%`-aNe960R|t^-p8 z^#MVBA#){3_e)1{XGXDpK1SW_uk7k*rZ%@8*ka79h57N}Tj{Y=&7Ft39^KzhIKCIk zDey{|s*hQ#;kNCD{`WQ~Y=8O)Ay1smDNq0KY^#dAt47{xe`+An-rEnpM}Gb))1Q6G zGp`I%KX;C5B}*A7;LY2^-NEnihO`bR7JkxdbOvtdjHL^v38oUE+~BW@`d1wzX5cwxst&W RBUk_c002ovPDHLkV1h=xq}~7k literal 0 HcmV?d00001 diff --git a/NUS Downloader/Resources/pencil.png b/NUS Downloader/Resources/pencil.png new file mode 100644 index 0000000000000000000000000000000000000000..0bfecd50ee9f5bc5828f0c0745aa3e0effcbe250 GIT binary patch literal 450 zcmV;z0X_bSP)Rq1}l<=psl5*5Xz9i;M}s*NP=ugs7Q#8Z;Dyx|}!`#}xw_C3!B-yaPC&0j)XcpuX@rNfq|q}N(wJOjA& z>u+z?dfJEuLePrqzy!)73pvLjxk4d6XNZt?hm_iYES{i}J5y3l?}PPNYDBR7oPc~6 zL^d)Bi4Q2L3pnp!nFxN9c2E+=@XAl&+;2m6a~kZj1r3Mz3C=hmUG<{+vWR@t4q?fJ zhFc(ozZD#Mx`^Q~g1v=K6!QnfuqyD4>U4EjF0eamL}Jx| z%&`kR-H+3GBYr*Qx}frLU4`%n9(`uSomzw)t%%NagXkA*R5Mbv9VLDp1wMo$cOMa~ s3Wm%r7^bwK$2$}-<~D8p`#1iScU4^XCLAA~0ssI207*qoM6N<$g3sK(Qvd(} literal 0 HcmV?d00001 diff --git a/NUSDTEST/AuthoringTests.txt b/NUSDTEST/AuthoringTests.txt new file mode 100644 index 0000000..64bab94 --- /dev/null +++ b/NUSDTEST/AuthoringTests.txt @@ -0,0 +1,136 @@ +========================================================================== + Visual Studio Team System: Overview of Authoring and Running Tests +========================================================================== + +This overview describes the features for authoring and running tests in +Visual Studio Team System and Visual Studio Team Edition for Software Testers. + +Opening Tests +------------- +To open a test, open a test project or a test metadata file (a file with +extension .vsmdi) that contains the definition of the test. You can find +test projects and metadata files in Solution Explorer. + +Viewing Tests +------------- +To see which tests are available to you, open the Test View window. Or, +if you have installed Team Edition for Software Testers, you can also open +the Test List Editor window to view tests. + +To open the Test View window, click the Test menu, point to Windows, and +then click Test View. To open the Test List Editor window (if you have +installed Team Edition for Software Testers), click Test, point to Windows, +and then click Test List Editor. + +Running Tests +------------- +You can run tests from the Test View window and the Test List Editor window. +See Viewing Tests to learn how to open these windows. To run one or more +tests displayed in the Test View window, first select the tests in that +window; to select multiple tests, hold either the Shift or CTRL key while +clicking tests. Then click the Run Tests button in the Test View window +toolbar. + +If you have installed Visual Studio Team Edition for Software Testers, you can +also use the Test List Editor window to run tests. To run tests in Test List Editor, +select the check box next to each test that you want to run. Then click the +Run Tests button in the Test List Editor window toolbar. + +Viewing Test Results +-------------------- +When you run a test or a series of tests, the results of the test run will be +shown in the Test Results window. Each individual test in the run is shown on +a separate line so that you can see its status. The window contains an +embedded status bar in the top half of the window that provides you with +summary details of the complete test run. + +To see more detailed results for a particular test result, double-click it in +the Test Results window. This opens a window that provides more information +about the particular test result, such as any specific error messages returned +by the test. + +Changing the way that tests are run +----------------------------------- +Each time you run one or more tests, a collection of settings is used to +determine how those tests are run. These settings are contained in a “test +run configuration” file. + +Here is a partial list of the changes you can make with a test run +configuration file: + + - Change the naming scheme for each test run. + - Change the test controller that the tests are run on so that you can run + tests remotely. + - Gather code coverage data for the code being tested so that you can see + which lines of code are covered by your tests. + - Enable and disable test deployment. + - Specify additional files to deploy before tests are run. + - Select a different host, ASP.NET, for running ASP.NET unit tests. + - Select a different host, the smart device test host, for running smart device unit tests. + - Set various properties for the test agents that run your tests. + - Run custom scripts at the start and end of each test run so that you can + set up the test environment exactly as required each time tests are run. + - Set time limits for tests and test runs. + - Set the browser mix and the number of times to repeat Web tests in the + test run. + +By default, a test run configuration file is created whenever you create a +new test project. You make changes to this file by double-clicking it in +Solution Explorer and then changing its settings. (Test run configuration +files have the extension .testrunconfig.) + +A solution can contain multiple test run configuration files. Only one of +those files, known as the “Active” test run configuration file, is used to +determine the settings that are currently used for test runs. You select +the active test run configuration by clicking Select Active Test Run +Configuration on the Test menu. + +------------------------------------------------------------------------------- + +Test Types +---------- +Using Visual Studio Team Edition for Software Testers, you can create a number +of different test types: + +Unit test: Use a unit test to create a programmatic test in C++, Visual C# or +Visual Basic that exercises source code. A unit test calls the methods of a +class, passing suitable parameters, and verifies that the returned value is +what you expect. +There are three specialized variants of unit tests: + - Data-driven unit tests are created when you configure a unit test to be + called repeatedly for each row of a data source. The data from each row + is used by the unit test as input data. + - ASP.NET unit tests are unit tests that exercise code in an ASP.NET Web + application. + - Smart device unit tests are unit tests that are deployed to a smart device + or emulator and then executed by the smart device test host. + +Web Test: Web tests consist of an ordered series of HTTP requests that you +record in a browser session using Microsoft Internet Explorer. You can have +the test report specific details about the pages or sites it requests, such +as whether a particular page contains a specified string. + +Load Test: You use a load test to encapsulate non-manual tests, such as +unit, Web, and generic tests, and then run them simultaneously by using +virtual users. Running these tests under load generates test results, +including performance and other counters, in tables and in graphs. + +Generic test: A generic test is an existing program wrapped to function as a +test in Visual Studio. The following are examples of tests or programs that +you can turn into generic tests: + - An existing test that uses process exit codes to communicate whether the + test passed or failed. 0 indicates passing and any other value indicates + a failure. + - A general program to obtain specific functionality during a test scenario. + - A test or program that uses a special XML file (called a “summary results + file”), to communicate detailed results. + +Manual test: The manual test type is used when the test tasks are to be +completed by a test engineer as opposed to an automated script. + +Ordered test: Use an ordered test to execute a set of tests in an order you +specify. + +------------------------------------------------------------------------------- + + diff --git a/NUSDTEST/Form1Test.cs b/NUSDTEST/Form1Test.cs new file mode 100644 index 0000000..2b295d7 --- /dev/null +++ b/NUSDTEST/Form1Test.cs @@ -0,0 +1,1055 @@ +using NUS_Downloader; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System.Windows.Forms; +using System.Xml; +using System; +using System.ComponentModel; +using System.IO; +using System.Drawing; + +namespace NUSDTEST +{ + + + /// + ///This is a test class for Form1Test and is intended + ///to contain all Form1Test Unit Tests + /// + [TestClass()] + public class Form1Test + { + + + 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 + + + /// + ///A test for ZeroSignature + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void ZeroSignatureTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + byte[] tmdortik = null; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = target.ZeroSignature(tmdortik); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for wwitem_regionclicked + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void wwitem_regionclickedTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + ToolStripItemClickedEventArgs e = null; // TODO: Initialize to an appropriate value + target.wwitem_regionclicked(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for WriteStatus + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void WriteStatusTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + string Update = string.Empty; // TODO: Initialize to an appropriate value + target.WriteStatus(Update); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for verifyMd5Hash + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void verifyMd5HashTest() + { + string input = string.Empty; // TODO: Initialize to an appropriate value + string hash = string.Empty; // TODO: Initialize to an appropriate value + bool expected = false; // TODO: Initialize to an appropriate value + bool actual; + actual = Form1_Accessor.verifyMd5Hash(input, hash); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for UpdatePackedName + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void UpdatePackedNameTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + target.UpdatePackedName(); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for TruchaSign + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void TruchaSignTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + byte[] tmdortik = null; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = target.TruchaSign(tmdortik); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for TrimLeadingZeros + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void TrimLeadingZerosTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + string num = string.Empty; // TODO: Initialize to an appropriate value + string expected = string.Empty; // TODO: Initialize to an appropriate value + string actual; + actual = target.TrimLeadingZeros(num); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for titleversion_TextChanged + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void titleversion_TextChangedTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.titleversion_TextChanged(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for titleidbox_TextChanged + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void titleidbox_TextChangedTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.titleidbox_TextChanged(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for sysitem_versionclicked + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void sysitem_versionclickedTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + ToolStripItemClickedEventArgs e = null; // TODO: Initialize to an appropriate value + target.sysitem_versionclicked(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for StrToByteArray + /// + [TestMethod()] + public void StrToByteArrayTest() + { + string str = string.Empty; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = Form1.StrToByteArray(str); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for ShowInnerToolTips + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void ShowInnerToolTipsTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + bool enabled = false; // TODO: Initialize to an appropriate value + target.ShowInnerToolTips(enabled); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for SetEnableforDownload + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void SetEnableforDownloadTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + bool enabled = false; // TODO: Initialize to an appropriate value + target.SetEnableforDownload(enabled); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for SelectItemImage + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void SelectItemImageTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + bool ticket = false; // TODO: Initialize to an appropriate value + bool danger = false; // TODO: Initialize to an appropriate value + Image expected = null; // TODO: Initialize to an appropriate value + Image actual; + actual = target.SelectItemImage(ticket, danger); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for RemoveIllegalCharacters + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void RemoveIllegalCharactersTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + string databasestr = string.Empty; // TODO: Initialize to an appropriate value + string expected = string.Empty; // TODO: Initialize to an appropriate value + string actual; + actual = target.RemoveIllegalCharacters(databasestr); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for RegionFromIndex + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void RegionFromIndexTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + int index = 0; // TODO: Initialize to an appropriate value + XmlDocument databasexml = null; // TODO: Initialize to an appropriate value + string expected = string.Empty; // TODO: Initialize to an appropriate value + string actual; + actual = target.RegionFromIndex(index, databasexml); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for RegionCodesList_DropDownItemClicked + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void RegionCodesList_DropDownItemClickedTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + ToolStripItemClickedEventArgs e = null; // TODO: Initialize to an appropriate value + target.RegionCodesList_DropDownItemClicked(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for ReadIDType + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void ReadIDTypeTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + string ttlid = string.Empty; // TODO: Initialize to an appropriate value + target.ReadIDType(ttlid); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for ReadFully + /// + [TestMethod()] + public void ReadFullyTest1() + { + Stream stream = null; // TODO: Initialize to an appropriate value + int initialLength = 0; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = Form1.ReadFully(stream, initialLength); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for ReadFully + /// + [TestMethod()] + public void ReadFullyTest() + { + Form1 target = new Form1(); // TODO: Initialize to an appropriate value + Stream stream = null; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = target.ReadFully(stream); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for radioButton2_CheckedChanged + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void radioButton2_CheckedChangedTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.radioButton2_CheckedChanged(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for radioButton1_CheckedChanged + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void radioButton1_CheckedChangedTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.radioButton1_CheckedChanged(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for PackWAD + /// + [TestMethod()] + public void PackWADTest() + { + Form1 target = new Form1(); // TODO: Initialize to an appropriate value + string titleid = string.Empty; // TODO: Initialize to an appropriate value + string tmdfilename = string.Empty; // TODO: Initialize to an appropriate value + int contentcount = 0; // TODO: Initialize to an appropriate value + string[] contentnames = null; // TODO: Initialize to an appropriate value + string[] contentsizes = null; // TODO: Initialize to an appropriate value + string totaldirectory = string.Empty; // TODO: Initialize to an appropriate value + target.PackWAD(titleid, tmdfilename, contentcount, contentnames, contentsizes, totaldirectory); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for packbox_CheckedChanged + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void packbox_CheckedChangedTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.packbox_CheckedChanged(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for NUSDownloader_DoWork + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void NUSDownloader_DoWorkTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + DoWorkEventArgs e = null; // TODO: Initialize to an appropriate value + target.NUSDownloader_DoWork(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for MakeProperLength + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void MakeProperLengthTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + string hex = string.Empty; // TODO: Initialize to an appropriate value + string expected = string.Empty; // TODO: Initialize to an appropriate value + string actual; + actual = target.MakeProperLength(hex); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for LoadRegionCodes + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void LoadRegionCodesTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + target.LoadRegionCodes(); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for LoadCommonKey + /// + [TestMethod()] + public void LoadCommonKeyTest() + { + Form1 target = new Form1(); // TODO: Initialize to an appropriate value + string keyfile = string.Empty; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = target.LoadCommonKey(keyfile); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for IOSNeededFromTMD + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void IOSNeededFromTMDTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + byte[] tmd = null; // TODO: Initialize to an appropriate value + string expected = string.Empty; // TODO: Initialize to an appropriate value + string actual; + actual = target.IOSNeededFromTMD(tmd); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for InttoByteArray + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void InttoByteArrayTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + int inte = 0; // TODO: Initialize to an appropriate value + int arraysize = 0; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = target.InttoByteArray(inte, arraysize); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for InitializeComponent + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void InitializeComponentTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + target.InitializeComponent(); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for initCrypt + /// + [TestMethod()] + public void initCryptTest() + { + Form1 target = new Form1(); // TODO: Initialize to an appropriate value + byte[] iv = null; // TODO: Initialize to an appropriate value + byte[] key = null; // TODO: Initialize to an appropriate value + target.initCrypt(iv, key); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for incrementAtIndex + /// + [TestMethod()] + public void incrementAtIndexTest() + { + byte[] array = null; // TODO: Initialize to an appropriate value + int index = 0; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = Form1.incrementAtIndex(array, index); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for HandleMismatch + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void HandleMismatchTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + int contentsize = 0; // TODO: Initialize to an appropriate value + int actualsize = 0; // TODO: Initialize to an appropriate value + target.HandleMismatch(contentsize, actualsize); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for getMd5Hash + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void getMd5HashTest() + { + string input = string.Empty; // TODO: Initialize to an appropriate value + string expected = string.Empty; // TODO: Initialize to an appropriate value + string actual; + actual = Form1_Accessor.getMd5Hash(input); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for GetContentSizes + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void GetContentSizesTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + byte[] tmdfile = null; // TODO: Initialize to an appropriate value + int length = 0; // TODO: Initialize to an appropriate value + string[] expected = null; // TODO: Initialize to an appropriate value + string[] actual; + actual = target.GetContentSizes(tmdfile, length); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for GetContentNames + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void GetContentNamesTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + byte[] tmdfile = null; // TODO: Initialize to an appropriate value + int length = 0; // TODO: Initialize to an appropriate value + string[] expected = null; // TODO: Initialize to an appropriate value + string[] actual; + actual = target.GetContentNames(tmdfile, length); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for GetContentIndices + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void GetContentIndicesTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + byte[] tmdfile = null; // TODO: Initialize to an appropriate value + int length = 0; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = target.GetContentIndices(tmdfile, length); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for GetContentHashes + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void GetContentHashesTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + byte[] tmdfile = null; // TODO: Initialize to an appropriate value + int length = 0; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = target.GetContentHashes(tmdfile, length); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for getcerts_Click + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void getcerts_ClickTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.getcerts_Click(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for Form1_Load + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void Form1_LoadTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.Form1_Load(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for FillDatabaseStrip + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void FillDatabaseStripTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + target.FillDatabaseStrip(); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for FileLocationToByteArray + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void FileLocationToByteArrayTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + string filename = string.Empty; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = target.FileLocationToByteArray(filename); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for Encrypt + /// + [TestMethod()] + public void EncryptTest() + { + Form1 target = new Form1(); // TODO: Initialize to an appropriate value + byte[] plainBytes = null; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = target.Encrypt(plainBytes); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for DownloadNUSFile + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void DownloadNUSFileTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + string titleid = string.Empty; // TODO: Initialize to an appropriate value + string filename = string.Empty; // TODO: Initialize to an appropriate value + string placementdir = string.Empty; // TODO: Initialize to an appropriate value + int sizeinbytes = 0; // TODO: Initialize to an appropriate value + bool iswiititle = false; // TODO: Initialize to an appropriate value + target.DownloadNUSFile(titleid, filename, placementdir, sizeinbytes, iswiititle); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for Dispose + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void DisposeTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + bool disposing = false; // TODO: Initialize to an appropriate value + target.Dispose(disposing); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for DisplayBytes + /// + [TestMethod()] + public void DisplayBytesTest() + { + Form1 target = new Form1(); // TODO: Initialize to an appropriate value + byte[] bytes = null; // TODO: Initialize to an appropriate value + string spacer = string.Empty; // TODO: Initialize to an appropriate value + string expected = string.Empty; // TODO: Initialize to an appropriate value + string actual; + actual = target.DisplayBytes(bytes, spacer); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for DeleteTitleDirectory + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void DeleteTitleDirectoryTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + target.DeleteTitleDirectory(); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for Decrypt + /// + [TestMethod()] + public void DecryptTest() + { + Form1 target = new Form1(); // TODO: Initialize to an appropriate value + byte[] encryptedData = null; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = target.Decrypt(encryptedData); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for CreateTitleDirectory + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void CreateTitleDirectoryTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + target.CreateTitleDirectory(); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for ConvertToHex + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void ConvertToHexTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + string decval = string.Empty; // TODO: Initialize to an appropriate value + string expected = string.Empty; // TODO: Initialize to an appropriate value + string actual; + actual = target.ConvertToHex(decval); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for ComputeSHA + /// + [TestMethod()] + public void ComputeSHATest() + { + byte[] data = null; // TODO: Initialize to an appropriate value + byte[] expected = null; // TODO: Initialize to an appropriate value + byte[] actual; + actual = Form1.ComputeSHA(data); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for ClearDatabaseStrip + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void ClearDatabaseStripTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + target.ClearDatabaseStrip(); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for ByteBoundary + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void ByteBoundaryTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + int currentlength = 0; // TODO: Initialize to an appropriate value + long expected = 0; // TODO: Initialize to an appropriate value + long actual; + actual = target.ByteBoundary(currentlength); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for button7_Click + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void button7_ClickTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.button7_Click(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for button6_Click + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void button6_ClickTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.button6_Click(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for button5_Click + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void button5_ClickTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.button5_Click(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for button4_Click_1 + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void button4_Click_1Test() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.button4_Click_1(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for button4_Click + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void button4_ClickTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.button4_Click(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for button3_Click_1 + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void button3_Click_1Test() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.button3_Click_1(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for button3_Click + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void button3_ClickTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.button3_Click(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for button2_Click + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void button2_ClickTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.button2_Click(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for button1_Click_1 + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void button1_Click_1Test() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.button1_Click_1(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for button1_Click + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void button1_ClickTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + object sender = null; // TODO: Initialize to an appropriate value + EventArgs e = null; // TODO: Initialize to an appropriate value + target.button1_Click(sender, e); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for BootChecks + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void BootChecksTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + bool expected = false; // TODO: Initialize to an appropriate value + bool actual; + actual = target.BootChecks(); + Assert.AreEqual(expected, actual); + Assert.Inconclusive("Verify the correctness of this test method."); + } + + /// + ///A test for AddToolStripItemToStrip + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void AddToolStripItemToStripTest() + { + Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value + int type = 0; // TODO: Initialize to an appropriate value + ToolStripMenuItem additionitem = null; // TODO: Initialize to an appropriate value + XmlAttributeCollection attributes = null; // TODO: Initialize to an appropriate value + target.AddToolStripItemToStrip(type, additionitem, attributes); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + + /// + ///A test for Form1 Constructor + /// + [TestMethod()] + public void Form1ConstructorTest1() + { + Form1 target = new Form1(); + Assert.Inconclusive("TODO: Implement code to verify target"); + } + + /// + ///A test for Form1 Constructor + /// + [TestMethod()] + public void Form1ConstructorTest() + { + string[] args = null; // TODO: Initialize to an appropriate value + Form1 target = new Form1(args); + Assert.Inconclusive("TODO: Implement code to verify target"); + } + } +} diff --git a/NUSDTEST/NUSDTEST.csproj b/NUSDTEST/NUSDTEST.csproj new file mode 100644 index 0000000..c3d9790 --- /dev/null +++ b/NUSDTEST/NUSDTEST.csproj @@ -0,0 +1,72 @@ + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {BC13EE75-CAC3-4CB4-A67F-C8B3CCDFD63B} + Library + Properties + NUSDTEST + NUSDTEST + v3.5 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + 3.5 + + + + + + + + + + + + + + + + + + + + {DB1289FA-BA83-408F-A576-326E5EC4CC6D} + NUS Downloader + + + + + + + + \ No newline at end of file diff --git a/NUSDTEST/ProgramTest.cs b/NUSDTEST/ProgramTest.cs new file mode 100644 index 0000000..73f069e --- /dev/null +++ b/NUSDTEST/ProgramTest.cs @@ -0,0 +1,77 @@ +using NUS_Downloader; +using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace NUSDTEST +{ + + + /// + ///This is a test class for ProgramTest and is intended + ///to contain all ProgramTest Unit Tests + /// + [TestClass()] + public class ProgramTest + { + + + 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 + + + /// + ///A test for Main + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void MainTest() + { + string[] args = null; // TODO: Initialize to an appropriate value + Program_Accessor.Main(args); + Assert.Inconclusive("A method that does not return a value cannot be verified."); + } + } +} diff --git a/NUSDTEST/Properties/AssemblyInfo.cs b/NUSDTEST/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ed8827a --- /dev/null +++ b/NUSDTEST/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("NUSDTEST")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("NUSDTEST")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM componenets. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("21ad20c3-5bda-47ed-875a-bd7274986e95")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/NUSDTEST/ResourcesTest.cs b/NUSDTEST/ResourcesTest.cs new file mode 100644 index 0000000..311e265 --- /dev/null +++ b/NUSDTEST/ResourcesTest.cs @@ -0,0 +1,185 @@ +using NUS_Downloader.Properties; +using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace NUSDTEST +{ + + + /// + ///This is a test class for ResourcesTest and is intended + ///to contain all ResourcesTest Unit Tests + /// + [TestClass()] + public class ResourcesTest + { + + + 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 + + + /// + ///A test for wilolgoi + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void wilolgoiTest() + { + // Private Accessor for NUS_Downloader.Properties.Resources is not found. Please rebuild the containing project or run the Publicize.exe manually. + Assert.Inconclusive("Private Accessor for NUS_Downloader.Properties.Resources is not found. Please reb" + + "uild the containing project or run the Publicize.exe manually."); + } + + /// + ///A test for ResourceManager + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void ResourceManagerTest() + { + // Private Accessor for NUS_Downloader.Properties.Resources is not found. Please rebuild the containing project or run the Publicize.exe manually. + Assert.Inconclusive("Private Accessor for NUS_Downloader.Properties.Resources is not found. Please reb" + + "uild the containing project or run the Publicize.exe manually."); + } + + /// + ///A test for dsi + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void dsiTest() + { + // Private Accessor for NUS_Downloader.Properties.Resources is not found. Please rebuild the containing project or run the Publicize.exe manually. + Assert.Inconclusive("Private Accessor for NUS_Downloader.Properties.Resources is not found. Please reb" + + "uild the containing project or run the Publicize.exe manually."); + } + + /// + ///A test for Culture + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void CultureTest() + { + // Private Accessor for NUS_Downloader.Properties.Resources is not found. Please rebuild the containing project or run the Publicize.exe manually. + Assert.Inconclusive("Private Accessor for NUS_Downloader.Properties.Resources is not found. Please reb" + + "uild the containing project or run the Publicize.exe manually."); + } + + /// + ///A test for bullet_redorange + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void bullet_redorangeTest() + { + // Private Accessor for NUS_Downloader.Properties.Resources is not found. Please rebuild the containing project or run the Publicize.exe manually. + Assert.Inconclusive("Private Accessor for NUS_Downloader.Properties.Resources is not found. Please reb" + + "uild the containing project or run the Publicize.exe manually."); + } + + /// + ///A test for bullet_redgreen + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void bullet_redgreenTest() + { + // Private Accessor for NUS_Downloader.Properties.Resources is not found. Please rebuild the containing project or run the Publicize.exe manually. + Assert.Inconclusive("Private Accessor for NUS_Downloader.Properties.Resources is not found. Please reb" + + "uild the containing project or run the Publicize.exe manually."); + } + + /// + ///A test for bullet_red + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void bullet_redTest() + { + // Private Accessor for NUS_Downloader.Properties.Resources is not found. Please rebuild the containing project or run the Publicize.exe manually. + Assert.Inconclusive("Private Accessor for NUS_Downloader.Properties.Resources is not found. Please reb" + + "uild the containing project or run the Publicize.exe manually."); + } + + /// + ///A test for bullet_orange + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void bullet_orangeTest() + { + // Private Accessor for NUS_Downloader.Properties.Resources is not found. Please rebuild the containing project or run the Publicize.exe manually. + Assert.Inconclusive("Private Accessor for NUS_Downloader.Properties.Resources is not found. Please reb" + + "uild the containing project or run the Publicize.exe manually."); + } + + /// + ///A test for bullet_green + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void bullet_greenTest() + { + // Private Accessor for NUS_Downloader.Properties.Resources is not found. Please rebuild the containing project or run the Publicize.exe manually. + Assert.Inconclusive("Private Accessor for NUS_Downloader.Properties.Resources is not found. Please reb" + + "uild the containing project or run the Publicize.exe manually."); + } + + /// + ///A test for Resources Constructor + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void ResourcesConstructorTest() + { + // Private Accessor for NUS_Downloader.Properties.Resources is not found. Please rebuild the containing project or run the Publicize.exe manually. + Assert.Inconclusive("Private Accessor for NUS_Downloader.Properties.Resources is not found. Please reb" + + "uild the containing project or run the Publicize.exe manually."); + } + } +} diff --git a/NUSDTEST/SettingsTest.cs b/NUSDTEST/SettingsTest.cs new file mode 100644 index 0000000..729808e --- /dev/null +++ b/NUSDTEST/SettingsTest.cs @@ -0,0 +1,89 @@ +using NUS_Downloader.Properties; +using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace NUSDTEST +{ + + + /// + ///This is a test class for SettingsTest and is intended + ///to contain all SettingsTest Unit Tests + /// + [TestClass()] + public class SettingsTest + { + + + 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 + + + /// + ///A test for Default + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void DefaultTest() + { + // Private Accessor for NUS_Downloader.Properties.Settings is not found. Please rebuild the containing project or run the Publicize.exe manually. + Assert.Inconclusive("Private Accessor for NUS_Downloader.Properties.Settings is not found. Please rebu" + + "ild the containing project or run the Publicize.exe manually."); + } + + /// + ///A test for Settings Constructor + /// + [TestMethod()] + [DeploymentItem("NUS Downloader.exe")] + public void SettingsConstructorTest() + { + // Private Accessor for NUS_Downloader.Properties.Settings is not found. Please rebuild the containing project or run the Publicize.exe manually. + Assert.Inconclusive("Private Accessor for NUS_Downloader.Properties.Settings is not found. Please rebu" + + "ild the containing project or run the Publicize.exe manually."); + } + } +} diff --git a/NUSDTEST/Test References/NUS Downloader.accessor b/NUSDTEST/Test References/NUS Downloader.accessor new file mode 100644 index 0000000..62749df --- /dev/null +++ b/NUSDTEST/Test References/NUS Downloader.accessor @@ -0,0 +1,2 @@ +NUS Downloader.exe +Desktop