Beispiel #1
0
        public void TestParse()
        {
            var expectedTableProcessor = new TableProcessor();
            var expectedIfProcessor    = new IfProcessor();

            expectedIfProcessor.AddProcessor(new TextProcessor());
            expectedTableProcessor.AddProcessor(new TextProcessor());
            expectedTableProcessor.AddProcessor(expectedIfProcessor);
            var expectedRepeaterProcessor = new RepeaterProcessor();

            expectedRepeaterProcessor.AddProcessor(new TextProcessor());
            var expectedRootProcessor = new RootProcessor();

            expectedRootProcessor.AddProcessor(expectedTableProcessor);
            expectedRootProcessor.AddProcessor(expectedRepeaterProcessor);

            var actualRootProcessor = new RootProcessor();

            generalParser.Parse(actualRootProcessor, this.doc.Root);

            Assert.AreEqual(2, actualRootProcessor.Processors.Count);
            var actualInnerRootProcessors = new List <ITagProcessor>(actualRootProcessor.Processors);

            Assert.AreEqual(typeof(TableProcessor), actualInnerRootProcessors[0].GetType());
            Assert.AreEqual(typeof(RepeaterProcessor), actualInnerRootProcessors[1].GetType());

            var actualTableProcessor = actualInnerRootProcessors[0];

            Assert.AreEqual(2, actualTableProcessor.Processors.Count);
            var actualInnerTableProcessors = new List <ITagProcessor>(actualTableProcessor.Processors);

            Assert.AreEqual(typeof(TextProcessor), actualInnerTableProcessors[0].GetType());
            Assert.AreEqual(typeof(IfProcessor), actualInnerTableProcessors[1].GetType());

            Assert.AreEqual(0, actualInnerTableProcessors[0].Processors.Count);
            var actualIfProcessor = actualInnerTableProcessors[1];

            Assert.AreEqual(1, actualIfProcessor.Processors.Count);
            var actualInnerIfProcessors = new List <ITagProcessor>(actualIfProcessor.Processors);

            Assert.AreEqual(typeof(TextProcessor), actualInnerIfProcessors[0].GetType());

            var actualRepeaterProcessor = actualInnerRootProcessors[1];

            Assert.AreEqual(1, actualRepeaterProcessor.Processors.Count);
            var actualInnerRepeaterProcessors = new List <ITagProcessor>(actualRepeaterProcessor.Processors);

            Assert.AreEqual(typeof(TextProcessor), actualInnerRepeaterProcessors[0].GetType());
            Assert.AreEqual(0, actualInnerRepeaterProcessors[0].Processors.Count);
        }
Beispiel #2
0
        /// <summary>
        ///     Parses a string of code into a program node.
        /// </summary>
        public Node Parse(string code = "")
        {
            if (code != string.Empty)
            {
                _code = code;
            }

            //Files[""] = code;

            Stopwatch = Stopwatch.StartNew();

            // Tokenize code
            _tokens = Tokenizer.Tokenize(_code);
            if (_tokens == null)
            {
                return(null);
            }

            // Pre-process tokens so their values are correct
            TokenProcessor.ProcessTokens(_tokens);

            Stopwatch.Stop();
            double token = Stopwatch.ElapsedMilliseconds;

            //foreach (var t in _tokens) Console.WriteLine(t);

            // Generate the program node
            Stopwatch = Stopwatch.StartNew();
            var programNode = GeneralParser.Parse(_tokens);

            Stopwatch.Stop();
            double parse = Stopwatch.ElapsedMilliseconds;

            // Debug program node
            //Console.WriteLine("Program:\n" + programNode);
            //programNode.Print();

            //Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(programNode, Newtonsoft.Json.Formatting.Indented));

            Stopwatch = Stopwatch.StartNew();
            //GlobalScope = Executor.ExecuteBlock(programNode, GlobalScope);
            //ILGen.BasicGenerator.GenerateMethodFromNode(programNode);
            Stopwatch.Stop();
            double execute = Stopwatch.Elapsed.TotalMilliseconds;

            ExecutionTime = execute;

            if (!Settings.HasFlag(EngineSettings.NoLogs))
            {
                Console.WriteLine($"\nExecution: {execute}ms, Parsing: {parse}ms, Tokenization: {token}ms, Total: {execute + parse + token}ms");
            }

            return(programNode);
        }
        public void ShouldSuccess()
        {
            var servers = parser.Parse(File.ReadAllText(GetFixturePath("General.conf")));

            Assert.IsType <ShadowsocksRServer>(servers[0]);
            Assert.Equal("127.0.0.1", servers[0].Host);
            Assert.Equal(1234, servers[0].Port);
            Assert.Equal("aaabbb", ((ShadowsocksRServer)servers[0]).Password);
            Assert.Equal("测试中文", servers[0].Name);
            Assert.Equal("aes-128-cfb", ((ShadowsocksRServer)servers[0]).Method);
            Assert.Equal("auth_aes128_md5", ((ShadowsocksRServer)servers[0]).Protocol);
            Assert.Null(((ShadowsocksRServer)servers[0]).ProtocolParameter);
            Assert.Equal("tls1.2_ticket_auth", ((ShadowsocksRServer)servers[0]).Obfuscation);
            Assert.Equal("breakwa11.moe", ((ShadowsocksRServer)servers[0]).ObfuscationParameter);
            Assert.False(((ShadowsocksRServer)servers[0]).UDPOverTCP);
            Assert.Equal(0, ((ShadowsocksRServer)servers[0]).UDPPort);

            Assert.IsType <ShadowsocksRServer>(servers[1]);
            Assert.Equal("127.0.0.1", servers[1].Host);
            Assert.Equal(1234, servers[1].Port);
            Assert.Equal("aaabbb", ((ShadowsocksRServer)servers[1]).Password);
            Assert.Equal("aes-128-cfb", ((ShadowsocksRServer)servers[1]).Method);
            Assert.Equal("auth_aes128_md5", ((ShadowsocksRServer)servers[1]).Protocol);
            Assert.Null(((ShadowsocksRServer)servers[1]).ProtocolParameter);
            Assert.Equal("tls1.2_ticket_auth", ((ShadowsocksRServer)servers[1]).Obfuscation);
            Assert.Equal("breakwa11.moe", ((ShadowsocksRServer)servers[1]).ObfuscationParameter);
            Assert.False(((ShadowsocksRServer)servers[1]).UDPOverTCP);
            Assert.Equal(0, ((ShadowsocksRServer)servers[1]).UDPPort);

            Assert.IsType <ShadowsocksServer>(servers[2]);
            Assert.Equal("192.168.100.1", servers[2].Host);
            Assert.Equal(8888, servers[2].Port);
            Assert.Equal("test", ((ShadowsocksServer)servers[2]).Password);
            Assert.Equal("Example1", servers[2].Name);
            Assert.Equal("aes-128-gcm", ((ShadowsocksServer)servers[2]).Method);

            Assert.IsType <ShadowsocksServer>(servers[3]);
            Assert.Equal("192.168.100.1", servers[3].Host);
            Assert.Equal(8888, servers[3].Port);
            Assert.Equal("passwd", ((ShadowsocksServer)servers[3]).Password);
            Assert.Equal("Example2", servers[3].Name);
            Assert.Equal("rc4-md5", ((ShadowsocksServer)servers[3]).Method);
            Assert.IsType <SimpleObfsPluginOptions>(((ShadowsocksServer)servers[3]).PluginOptions);
            Assert.Equal(SimpleObfsPluginMode.HTTP, ((SimpleObfsPluginOptions)((ShadowsocksServer)servers[3]).PluginOptions).Mode);

            Assert.IsType <ShadowsocksServer>(servers[4]);
            Assert.Equal("192.168.100.1", servers[4].Host);
            Assert.Equal(8888, servers[4].Port);
            Assert.Equal("test", ((ShadowsocksServer)servers[4]).Password);
            Assert.Equal("Dummy profile name", servers[4].Name);
            Assert.Equal("bf-cfb", ((ShadowsocksServer)servers[4]).Method);
        }
Beispiel #4
0
        public void ShouldSuccess()
        {
            var servers = parser.Parse(File.ReadAllText(GetFixturePath("General.conf")));

            Assert.AreEqual(ProxyType.ShadowsocksR, servers[0].Type);
            Assert.AreEqual("127.0.0.1", servers[0].Host);
            Assert.AreEqual(1234, servers[0].Port);
            Assert.AreEqual("aaabbb", servers[0].Password);
            Assert.AreEqual("测试中文", servers[0].Name);
            Assert.AreEqual("aes-128-cfb", (servers[0] as ShadowsocksRServer).Method);
            Assert.AreEqual("auth_aes128_md5", (servers[0] as ShadowsocksRServer).Protocol);
            Assert.AreEqual(null, (servers[0] as ShadowsocksRServer).ProtocolParameter);
            Assert.AreEqual("tls1.2_ticket_auth", (servers[0] as ShadowsocksRServer).Obfuscation);
            Assert.AreEqual("breakwa11.moe", (servers[0] as ShadowsocksRServer).ObfuscationParameter);
            Assert.AreEqual(false, (servers[0] as ShadowsocksRServer).UDPOverTCP);
            Assert.AreEqual(0, (servers[0] as ShadowsocksRServer).UDPPort);

            Assert.AreEqual(ProxyType.ShadowsocksR, servers[1].Type);
            Assert.AreEqual("127.0.0.1", servers[1].Host);
            Assert.AreEqual(1234, servers[1].Port);
            Assert.AreEqual("aaabbb", servers[1].Password);
            Assert.AreEqual("aes-128-cfb", (servers[1] as ShadowsocksRServer).Method);
            Assert.AreEqual("auth_aes128_md5", (servers[1] as ShadowsocksRServer).Protocol);
            Assert.AreEqual(null, (servers[1] as ShadowsocksRServer).ProtocolParameter);
            Assert.AreEqual("tls1.2_ticket_auth", (servers[1] as ShadowsocksRServer).Obfuscation);
            Assert.AreEqual("breakwa11.moe", (servers[1] as ShadowsocksRServer).ObfuscationParameter);
            Assert.AreEqual(false, (servers[1] as ShadowsocksRServer).UDPOverTCP);
            Assert.AreEqual(0, (servers[1] as ShadowsocksRServer).UDPPort);

            Assert.AreEqual(ProxyType.Shadowsocks, servers[2].Type);
            Assert.AreEqual("192.168.100.1", servers[2].Host);
            Assert.AreEqual(8888, servers[2].Port);
            Assert.AreEqual("test", servers[2].Password);
            Assert.AreEqual("Example1", servers[2].Name);
            Assert.AreEqual("aes-128-gcm", (servers[2] as ShadowsocksServer).Method);

            Assert.AreEqual(ProxyType.Shadowsocks, servers[3].Type);
            Assert.AreEqual("192.168.100.1", servers[3].Host);
            Assert.AreEqual(8888, servers[3].Port);
            Assert.AreEqual("passwd", servers[3].Password);
            Assert.AreEqual("Example2", servers[3].Name);
            Assert.AreEqual("rc4-md5", (servers[3] as ShadowsocksServer).Method);
            Assert.IsInstanceOfType((servers[3] as ShadowsocksServer).PluginOptions, typeof(SimpleObfsPluginOptions));
            Assert.AreEqual("http", ((servers[3] as ShadowsocksServer).PluginOptions as SimpleObfsPluginOptions).Mode);

            Assert.AreEqual(ProxyType.Shadowsocks, servers[4].Type);
            Assert.AreEqual("192.168.100.1", servers[4].Host);
            Assert.AreEqual(8888, servers[4].Port);
            Assert.AreEqual("test", servers[4].Password);
            Assert.AreEqual("Dummy profile name", servers[4].Name);
            Assert.AreEqual("bf-cfb", (servers[4] as ShadowsocksServer).Method);
        }
Beispiel #5
0
        private ShopData ParseShop()
        {
            var parser = new GeneralParser(
                //_context.DownloadInfo.FilePath,
                //_context.DownloadInfo.NameLatin,
                _context.DownloadInfo,
                _context,
                _settings.EnableExtendedStatistics);
            var shopData = parser.Parse();

            SetProgress(20);
            AddMessage("Parsing complete");
            return(shopData);
        }
Beispiel #6
0
        public Node Parse(string code)
        {
            Code = code;

            Stopwatch stopwatch = Stopwatch.StartNew();

            // Tokenize code
            Tokens = tokenizer.Tokenize(code);
            if (Tokens == null)
            {
                return(null);
            }

            // Pre-process tokens so their values are correct
            TokenProcessor.ProcessTokens(Tokens);

            stopwatch.Stop();
            double T_Token = stopwatch.ElapsedMilliseconds;

            // Generate the program node
            stopwatch = Stopwatch.StartNew();
            Node ProgramNode = generalParser.Parse(Tokens);

            stopwatch.Stop();
            double T_Parse = stopwatch.ElapsedMilliseconds;

            // Debug program node
            //Console.WriteLine("Program:\n" + ProgramNode);

            //ScopeContext AnalizeScope = new ScopeContext();
            //analizer.Analize(ProgramNode, AnalizeScope);

            stopwatch   = Stopwatch.StartNew();
            GlobalScope = executor.ExecuteBlock(ProgramNode, GlobalScope);
            stopwatch.Stop();
            double T_Execute = stopwatch.ElapsedMilliseconds;

            Console.WriteLine("Execution: {0}ms, Parsing: {1}ms, Tokenization: {2}ms", T_Execute, T_Parse, T_Token);

            return(ProgramNode);
        }
Beispiel #7
0
        public BeatmapInfo(string filename)
        {
            //  Load, and parse.
            if (File.Exists(filename))
            {
                if (filename.Split('.')[filename.Split('.').Length - 1] != "osu")
                {
                    throw new InvalidBeatmapException("Unknown file format.");
                }

                Gen    = GeneralParser.Parse(filename);
                Edit   = EditorParser.Parse(filename);
                Meta   = MetadataParser.Parse(filename);
                Diff   = DifficultyParser.Parse(filename);
                Timing = TimingPointParser.Parse(filename);
                Color  = ColourParser.Parse(filename);
            }
            else
            {
                throw new FileNotFoundException();
            }
        }
Beispiel #8
0
 public void MathExpressions()
 {
     GeneralParser TempParser = new GeneralParser();
     INode Node = TempParser.Parse(new FileInfo(@"./TestingData/Application1.txt").Read());
     Assert.Equal("x = 1 + 2\ny = \"ASDF\" + (String)2\nz = 4 * 23.51\na = 7512 + (Number)\"1234\"", Node.ToString());
 }