public void AssociateRACacheDirectory(string raCacheDirectory) { RACacheDirectory = raCacheDirectory; ReadCodeNotes(); ReadPublished(); var fileName = Path.Combine(RACacheDirectory, GameId + "-User.txt"); _localAssets = new LocalAssets(fileName, _fileSystemService); if (String.IsNullOrEmpty(_localAssets.Title)) { _localAssets.Title = Title; } }
public Achievement AddLocalAchievement(int id, string name) { if (_localAssets == null) { _localAssets = new LocalAssets(GameId + "-User.txt", _fileSystemService); } var achievement = new Achievement { Id = id, Title = name, Description = name }; ((List <Achievement>)_localAssets.Achievements).Add(achievement); return(achievement); }
public void RegressionTest(string scriptFileName, string scriptPath) { if (scriptFileName == NoScriptsError) { return; } var parts = scriptPath.Split('\\'); int i = 0; if (!Path.IsPathRooted(scriptPath)) { scriptPath = Path.Combine(RegressionDir, scriptPath); } else { while (parts[i] != "Regressions") { ++i; Assert.That(i < parts.Length); } ++i; Assert.That(i < parts.Length); } if (parts[i] == "scripts") { ++i; } var expectedFileName = Path.GetFileNameWithoutExtension(scriptPath); while (i < parts.Length - 1) { expectedFileName += "-" + parts[i]; ++i; } expectedFileName = Path.Combine(RegressionDir, "results", expectedFileName + ".txt"); var outputFileName = Path.ChangeExtension(expectedFileName, ".updated.txt"); var interpreter = new AchievementScriptInterpreter(); var content = File.ReadAllText(scriptPath); interpreter.Run(Tokenizer.CreateTokenizer(content)); if (!String.IsNullOrEmpty(interpreter.ErrorMessage)) { using (var file = File.Open(outputFileName, FileMode.Create)) { using (var fileWriter = new StreamWriter(file)) fileWriter.Write(interpreter.ErrorMessage); } if (!File.Exists(expectedFileName)) { Assert.IsNull(interpreter.ErrorMessage); } } else { var mockFileSystemService = new Mock <IFileSystemService>(); mockFileSystemService.Setup(s => s.CreateFile(It.IsAny <string>())).Returns((string path) => File.Create(path)); var localAchievements = new LocalAssets(outputFileName, mockFileSystemService.Object); localAchievements.Title = Path.GetFileNameWithoutExtension(scriptFileName); foreach (var achievement in interpreter.Achievements) { localAchievements.Replace(null, achievement); } foreach (var leaderboard in interpreter.Leaderboards) { localAchievements.Replace(null, leaderboard); } localAchievements.Commit("Author", null, null); if (!String.IsNullOrEmpty(interpreter.RichPresence)) { using (var file = File.Open(outputFileName, FileMode.Append)) { using (var fileWriter = new StreamWriter(file)) { fileWriter.WriteLine("=== Rich Presence ==="); var minimumVersion = Double.Parse(localAchievements.Version, System.Globalization.NumberFormatInfo.InvariantInfo); if (minimumVersion < 0.80) { interpreter.RichPresenceBuilder.DisableBuiltInMacros = true; if (minimumVersion < 0.79) { interpreter.RichPresenceBuilder.DisableLookupCollapsing = true; } fileWriter.WriteLine(interpreter.RichPresenceBuilder.ToString()); } else { fileWriter.WriteLine(interpreter.RichPresence); } } } } Assert.IsTrue(File.Exists(expectedFileName), expectedFileName + " not found"); } var expectedFileContents = File.ReadAllText(expectedFileName); var outputFileContents = File.ReadAllText(outputFileName); // file didn't match, report first difference if (expectedFileContents != outputFileContents) { var expectedFileTokenizer = Tokenizer.CreateTokenizer(expectedFileContents); var outputFileTokenizer = Tokenizer.CreateTokenizer(outputFileContents); var line = 1; do { var expectedFileLine = expectedFileTokenizer.ReadTo('\n').TrimRight(); var outputFileLine = outputFileTokenizer.ReadTo('\n').TrimRight(); if (expectedFileLine != outputFileLine) { Assert.AreEqual(expectedFileLine.ToString(), outputFileLine.ToString(), "Line " + line); } expectedFileTokenizer.Advance(); outputFileTokenizer.Advance(); ++line; } while (expectedFileTokenizer.NextChar != '\0' || outputFileTokenizer.NextChar != '\0'); // failed to find differing line, fallback to nunit assertion FileAssert.AreEqual(expectedFileName, outputFileName); } // file matched, delete temporary file File.Delete(outputFileName); }