public void ModuleIfOmitCapacity()
        {
            var wareXml  = @"
            <wares>
                <ware id=""module_arg_prod_foodrations_01"" name=""{20104,13401}"" tags=""module"">
                    <component ref=""prod_arg_foodrations_macro"" />
                </ware>
            </wares>
            ".ToXDocument();
            var macroXml = @"
            <macros>
                <macro class=""production"">
                    <properties>
                        <workforce max=""90"" />
                    </properties>
                </macro>
            </macros>
            ".ToXDocument();
            var exporter = new ModuleExporter(new DummyCat(macroXml), wareXml);

            Assert.Equal(exporter.GetRecords(), new[] { new Module(
                                                            moduleID: "module_arg_prod_foodrations_01",
                                                            moduleTypeID: "production",
                                                            macro: "prod_arg_foodrations_macro",
                                                            maxWorkers: 90,
                                                            workersCapacity: 0,
                                                            noBlueprint: false,
                                                            thumbnail: null
                                                            ) });
        }
        public void ModuleIfOmitMaxWorkers()
        {
            var wareXml  = @"
            <wares>
                <ware id=""module_arg_hab_l_01""  name=""{20104,30301}"" tags=""module"">
                    <component ref=""hab_arg_l_01_macro"" />
                </ware>
            </wares>
            ".ToXDocument();
            var macroXml = @"
            <macros>
                <macro class=""habitation"">
                    <properties>
                        <workforce capacity=""1000"" />
                    </properties>
                </macro>
            </macros>
            ".ToXDocument();
            var exporter = new ModuleExporter(new DummyCat(macroXml), wareXml);

            Assert.Equal(exporter.GetRecords(), new[] { new Module(
                                                            moduleID: "module_arg_hab_l_01",
                                                            moduleTypeID: "habitation",
                                                            macro: "hab_arg_l_01_macro",
                                                            maxWorkers: 0,
                                                            workersCapacity: 1000,
                                                            noBlueprint: false,
                                                            thumbnail: null
                                                            ) });
        }
Beispiel #3
0
        public void Initialize(Microsoft.Vbe.Interop.VBE vbe)
        {
            if (_parser != null)
            {
                throw new InvalidOperationException("ParserState is already initialized.");
            }

            _vbe       = new VBE(vbe);
            _vbeEvents = VBEEvents.Initialize(_vbe);
            var declarationFinderFactory = new ConcurrentlyConstructedDeclarationFinderFactory();
            var projectRepository        = new ProjectsRepository(_vbe);

            _state = new RubberduckParserState(null, projectRepository, declarationFinderFactory, _vbeEvents);
            _state.StateChanged += _state_StateChanged;

            var exporter = new ModuleExporter();

            Func <IVBAPreprocessor> preprocessorFactory = () => new VBAPreprocessor(double.Parse(_vbe.Version, CultureInfo.InvariantCulture));

            _attributeParser = new AttributeParser(exporter, preprocessorFactory, _state.ProjectsProvider);
            var projectManager = new RepositoryProjectManager(projectRepository);
            var moduleToModuleReferenceManager = new ModuleToModuleReferenceManager();
            var parserStateManager             = new ParserStateManager(_state);
            var referenceRemover         = new ReferenceRemover(_state, moduleToModuleReferenceManager);
            var supertypeClearer         = new SupertypeClearer(_state);
            var comSynchronizer          = new COMReferenceSynchronizer(_state, parserStateManager);
            var builtInDeclarationLoader = new BuiltInDeclarationLoader(
                _state,
                new List <ICustomDeclarationLoader>
            {
                new DebugDeclarations(_state),
                new SpecialFormDeclarations(_state),
                new FormEventDeclarations(_state),
                new AliasDeclarations(_state),
                //new RubberduckApiDeclarations(_state)
            }
                );
            var parseRunner = new ParseRunner(
                _state,
                parserStateManager,
                preprocessorFactory,
                _attributeParser,
                exporter);
            var declarationResolveRunner = new DeclarationResolveRunner(
                _state,
                parserStateManager,
                comSynchronizer);
            var referenceResolveRunner = new ReferenceResolveRunner(
                _state,
                parserStateManager,
                moduleToModuleReferenceManager,
                referenceRemover);
            var parsingStageService = new ParsingStageService(
                comSynchronizer,
                builtInDeclarationLoader,
                parseRunner,
                declarationResolveRunner,
                referenceResolveRunner
                );
            var parsingCacheService = new ParsingCacheService(
                _state,
                moduleToModuleReferenceManager,
                referenceRemover,
                supertypeClearer
                );

            _parser = new ParseCoordinator(
                _state,
                parsingStageService,
                parsingCacheService,
                projectManager,
                parserStateManager
                );
        }