示例#1
0
        public void should_be_able_to_read_all_files_and_run_the_most()
        {
            var directories = new DirectoryInfo(_directory).EnumerateDirectories();
            var messages    = new List <string>();

            foreach (var directory in directories)
            {
                _sbmlTask = IoC.Resolve <ISbmlTask>().DowncastTo <SbmlTask>();
                var caseName = directory.Name;
                Debug.Print(caseName);
                var fileName = Path.Combine(directory.FullName, $"{caseName}-sbml-l3v1.xml");
                var context  = IoC.Resolve <IMoBiContext>();
                context.NewProject();
                var          project = context.CurrentProject;
                IMoBiCommand command;
                try
                {
                    command = _sbmlTask.ImportModelFromSbml(fileName, project);
                }
                catch (Exception e)
                {
                    messages.Add($"Import: {caseName} {e.Message}:");
                    continue;
                }

                if (command.IsEmpty())
                {
                    messages.Add($"Import: {caseName}");
                    continue;
                }

                addjEmptyBBIfneeded(project);
                addSettings(project, Path.Combine(directory.FullName, $"{caseName}-settings.txt"));
                var buildConfigurtion = genreateBuildConfiguration(project);
                var result            = _modelConstructor.CreateModelFrom(buildConfigurtion, caseName);
                if (result.IsInvalid)
                {
                    messages.Add(caseName);
                    continue;
                }

                var simulation = new MoBiSimulation {
                    BuildConfiguration = buildConfigurtion, Model = result.Model
                };
                var simModelManager = new SimModelManager(_simModelExporter, new SimModelSimulationFactory(),
                                                          new DataFactory(IoC.Resolve <IMoBiDimensionFactory>(), new SBMLTestDataNamingService(), IoC.Resolve <IObjectPathFactory>(), IoC.Resolve <IDisplayUnitRetriever>(), IoC.Resolve <IDataRepositoryTask>()));
                var runResults = simModelManager.RunSimulation(simulation);
                if (!runResults.Success)
                {
                    messages.Add(caseName);
                    continue;
                }

                var dt = _dateRepositoryTask.ToDataTable(runResults.Results);
                dt.First().ExportToCSV(Path.Combine(directory.FullName, $"{caseName}-result_mobi.csv"));
                _sbmlTask = null;
            }

            messages.Count.ShouldBeEqualTo(0, messages.ToString("\n"));
        }
        public override void GlobalContext()
        {
            base.GlobalContext();
            _simModelExporter     = IoC.Resolve <ISimModelExporter>();
            _withIdRepository     = IoC.Resolve <IWithIdRepository>();
            _namingFactory        = A.Fake <IDataNamingService>();
            _dimensionFactory     = IoC.Resolve <IDimensionFactory>();
            _objectPathFactory    = IoC.Resolve <IObjectPathFactory>();
            _displayUnitRetriever = IoC.Resolve <IDisplayUnitRetriever>();

            _simulation = IoC.Resolve <SimulationHelperForSpecs>().CreateSimulation();
            new RegisterTaskForSpecs(_withIdRepository).RegisterAllIn(_simulation.Model.Root);
            var schemaPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "OSPSuite.SimModel.xsd");

            XMLSchemaCache.InitializeFromFile(schemaPath);
            sut = new SimModelManager(_simModelExporter, new SimModelSimulationFactory(), new DataFactory(_dimensionFactory, _namingFactory, _objectPathFactory, _displayUnitRetriever));
        }