示例#1
0
        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");
            }
        }