Exemple #1
0
        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);
            }
Exemple #3
0
        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);
        }