public void IfArith()
        {
            TestFunction("#if: 1==2|Yes|No", "Yes");

            ParserFunctionProcessor proc = new ParserFunctionProcessor();
            List<KeyValuePair<string, string>> args = new List<KeyValuePair<string, string>>(4)
                {
                    new KeyValuePair<string, string>("1", "1==2"),
                    new KeyValuePair<string, string>("2", "Yes"),
                    new KeyValuePair<string, string>("3", "No")
                };

            string output;
            Assert.AreEqual(VariableProcessor.Result.Found, proc.Execute("#if:", args, out output));
            Assert.AreEqual("Yes", output);
        }
        private static string ProcessMagicWord(string wikicode)
        {
            int endIndex;
            int startIndex = MagicParser.FindMagicBlock(wikicode, out endIndex);
            if (startIndex < 0)
            {
                return wikicode;
            }

            wikicode = wikicode.Substring(startIndex + 2, endIndex - startIndex - 4 + 1);

            List<KeyValuePair<string, string>> args;
            string command = MagicParser.GetMagicWordAndParams(wikicode, out args);

            ParserFunctionProcessor proc = new ParserFunctionProcessor(ProcessMagicWord);
            string output;
            proc.Execute(command, args, out output);
            return output;
        }
        private static void TestFunction(string input, string expected)
        {
            List<KeyValuePair<string, string>> args;
            string command = MagicParser.GetMagicWordAndParams(input, out args);

            ParserFunctionProcessor proc = new ParserFunctionProcessor(ProcessMagicWord);
            string output;

            Assert.AreEqual(VariableProcessor.Result.Found, proc.Execute(command, args, out output));
            Assert.AreEqual(expected, output);
        }
        public void IfMissingNo()
        {
            TestFunction("#if: |Yes", string.Empty);

            ParserFunctionProcessor proc = new ParserFunctionProcessor();
            List<KeyValuePair<string, string>> args = new List<KeyValuePair<string, string>>(4)
                {
                    new KeyValuePair<string, string>("1", string.Empty),
                    new KeyValuePair<string, string>("2", "Yes"),
                };

            string output;
            Assert.AreEqual(VariableProcessor.Result.Found, proc.Execute("#if:", args, out output));
            Assert.AreEqual(string.Empty, output);
        }