public async Task TestAllLines() { var garcGameText = await ORASConfig.GameConfig.GetGarc(GarcNames.GameText); byte[] tf0Data = await garcGameText.GetFile(0); TextFile tf0 = await ORASConfig.GameConfig.GetTextFile(0); byte[][] encData = TextFileHelper.EncryptLines(tf0, tf0.Lines).Select(el => el.Item2).ToArray(); byte[][] oriData = new byte[tf0.Lines.Count][]; Assert.AreEqual(tf0.Lines.Count, encData.Length, "Number of data blobs returned does not equal number of lines"); for (int l = 0; l < encData.Length; l++) { byte[] testData = encData[l]; TextFile.LineInfo lineInfo = tf0.LineInfos[l]; oriData[l] = tf0Data.Skip((int)lineInfo.Offset + 0x10).Take(lineInfo.Length * 2).ToArray(); if (testData.Length == oriData[l].Length + 2 && testData[testData.Length - 1] == 0 && testData[testData.Length - 2] == 0) { testData = testData.Take(testData.Length - 2).ToArray(); // don't compare the padding thing } Assert.AreEqual(oriData[l], testData, $"Blob for line {l} does not match original file"); } string[] tfhText = TextFileHelper.DecryptLines(tf0, oriData); Assert.AreEqual(tf0.Lines.Count, tfhText.Length, "Number of strings returned does not equal number of lines"); for (int l = 0; l < tfhText.Length; l++) { Assert.AreEqual(tf0.Lines[l], tfhText[l], $"Line {l} does not match original file"); } }