public void TestDefinition() { var def = new RichPresenceMacroFunction(); Assert.That(def.Name.Name, Is.EqualTo("rich_presence_macro")); Assert.That(def.Parameters.Count, Is.EqualTo(2)); Assert.That(def.Parameters.ElementAt(0).Name, Is.EqualTo("macro")); Assert.That(def.Parameters.ElementAt(1).Name, Is.EqualTo("expression")); }
public override string ToString() { if (String.IsNullOrEmpty(DisplayString)) { return("[No display string]"); } var builder = new StringBuilder(); foreach (var lookup in _lookupFields) { builder.Append("Lookup:"); builder.AppendLine(lookup.Key); var fallback = (lookup.Value.Fallback != null && lookup.Value.Fallback.Value.Length > 0) ? lookup.Value.Fallback.Value : null; AppendRichPresenceLookupEntries(builder, lookup.Value.Entries, fallback); if (fallback != null) { builder.Append("*="); builder.AppendLine(fallback); } builder.AppendLine(); } foreach (var value in _valueFields) { if (!DisableBuiltInMacros) { if (RichPresenceMacroFunction.GetValueFormat(value.Key) == value.Value.Format) { continue; } } builder.Append("Format:"); builder.AppendLine(value.Key); builder.Append("FormatType="); builder.AppendLine(Leaderboard.GetFormatString(value.Value.Format)); builder.AppendLine(); } builder.AppendLine("Display:"); foreach (var conditionalString in _conditionalDisplayStrings) { builder.AppendLine(conditionalString); } builder.AppendLine(DisplayString); return(builder.ToString()); }
private RichPresenceBuilder Evaluate(string input, string expectedError = null) { var funcDef = new RichPresenceMacroFunction(); var expression = ExpressionBase.Parse(new PositionalTokenizer(Tokenizer.CreateTokenizer(input))); Assert.That(expression, Is.InstanceOf <FunctionCallExpression>()); var funcCall = (FunctionCallExpression)expression; ExpressionBase error; var scope = funcCall.GetParameters(funcDef, AchievementScriptInterpreter.GetGlobalScope(), out error); var context = new RichPresenceDisplayFunction.RichPresenceDisplayContext { RichPresence = new RichPresenceBuilder() }; scope.Context = context; ExpressionBase evaluated; if (expectedError != null) { Assert.That(funcDef.ReplaceVariables(scope, out evaluated), Is.False); var parseError = evaluated as ParseErrorExpression; Assert.That(parseError, Is.Not.Null); Assert.That(parseError.Message, Is.EqualTo(expectedError)); return(context.RichPresence); } ExpressionBase result; Assert.That(funcDef.ReplaceVariables(scope, out evaluated), Is.True); Assert.That(funcDef.BuildMacro(context, scope, out result), Is.True); context.RichPresence.DisplayString = ((StringConstantExpression)result).Value; return(context.RichPresence); }