예제 #1
0
 public void SetData(IDataSourceAdapter adapter, DoomLauncher.AppConfiguration appConfig)
 {
     this.DataSourceAdapter = adapter;
     this.AppConfiguration  = appConfig;
     this.PopulateDefaultSettings(adapter);
     this.PopulateConfiguration();
 }
        public void TestInitialize()
        {
            _movies = new List <MovieDto>();

            var movie = new MovieDto();

            movie.Title = "Tom";
            movie.Cast  = new List <string> {
                "Bird", "Penguin"
            };

            _movies.Add(movie);

            movie       = new MovieDto();
            movie.Title = "Tom Tom";
            movie.Cast  = new List <string> {
                "Abstraction", "NonConcreation"
            };

            _movies.Add(movie);

            _dataSource = Mock.Of <IDataSourceAdapter>();
            _searcher   = Mock.Of <ISearchingService>();
            _sorter     = Mock.Of <ISortingService>();
            _cache      = Mock.Of <ICachingService>();

            _dataService = new DataService(_dataSource, _sorter, _searcher, _cache);
        }
예제 #3
0
        public void TestIWadSelect()
        {
            IDataSourceAdapter adapter = TestUtil.CreateAdapter();
            var iwads = CreateTestIWadList();

            Assert.IsTrue(adapter.GetIWads().Count() == iwads.Count);
        }
예제 #4
0
 public void Initialize(IDataSourceAdapter adapter, ITabView tabView, IEnumerable <IGameFileDataSource> gameFilesBind)
 {
     ITabView[] views = new ITabView[] { tabView };
     this.Initialize(adapter, views);
     this.m_tabHandler.TabViews[0].SetGameFilesData(gameFilesBind);
     this.m_bOverrideInit = true;
 }
예제 #5
0
        public static List <IIWadData> GetIWadsDataSource(IDataSourceAdapter adapter)
        {
            List <IIWadData> iwads = adapter.GetIWads().ToList();

            iwads.ForEach(x => x.FileName = Path.GetFileNameWithoutExtension(x.FileName));
            return(iwads);
        }
예제 #6
0
        public void TestUpdate()
        {
            IDataSourceAdapter adapter = TestUtil.CreateAdapter();

            List <ISourcePortData> allSourcePorts = new List <ISourcePortData>();

            allSourcePorts.AddRange(adapter.GetSourcePorts());
            allSourcePorts.AddRange(adapter.GetUtilities());

            int somenumber = 100;

            foreach (var sourcePort in allSourcePorts)
            {
                sourcePort.Directory            = new LauncherPath(sourcePort.Directory.GetPossiblyRelativePath() + somenumber.ToString());
                sourcePort.Name                += somenumber.ToString();
                sourcePort.SettingsFiles       += somenumber.ToString();
                sourcePort.SupportedExtensions += somenumber.ToString();

                adapter.UpdateSourcePort(sourcePort);

                var dbPort = adapter.GetSourcePort(sourcePort.SourcePortID);
                Assert.IsNotNull(dbPort);
                Assert.IsTrue(TestUtil.AllFieldsEqual(sourcePort, dbPort));
            }
        }
        protected async Task<List<IDataItem>> ReadDataAsync(IDataSourceAdapter sourceAdapter)
        {
            var results = new List<IDataItem>();

            IDataItem dataItem;
            var readOutput = new ReadOutputByRef();

            while (true)
            {
                try
                {
                    dataItem = await sourceAdapter.ReadNextAsync(readOutput, CancellationToken.None);
                }
                catch (NonFatalReadException)
                {
                    continue;
                }

                if (dataItem == null)
                    break;

                results.Add(dataItem);

                Assert.IsNotNull(readOutput.DataItemId, CommonTestResources.MissingDataItemId);
                readOutput.Wipe();
            }

            return results;
        }
예제 #8
0
 public void Init(IDataSourceAdapter adapter)
 {
     this.m_adapter          = adapter;
     this.dgvTags.DataSource = (from x in adapter.GetTags()
                                orderby x.Name
                                select x).ToList <ITagDataSource>();
 }
예제 #9
0
        public void TestGetFile()
        {
            IDataSourceAdapter adapter = TestUtil.CreateAdapter();
            var testFiles = CreateTestFiles();

            var gameFileIDs = testFiles.Select(x => x.GameFileID).Distinct();

            foreach (var id in gameFileIDs)
            {
                var dbFiles = adapter.GetFiles(new DoomLauncher.DataSources.GameFile()
                {
                    GameFileID = id
                });
                Assert.IsTrue(testFiles.Count(x => x.GameFileID == id) == dbFiles.Count());

                foreach (var dbFile in dbFiles)
                {
                    Assert.IsTrue(TestUtil.AllFieldsEqual(dbFile, testFiles.First(x => x.FileID == dbFile.FileID)));
                }

                for (int i = 1; i < 4; i++)
                {
                    dbFiles = adapter.GetFiles(new DoomLauncher.DataSources.GameFile()
                    {
                        GameFileID = id
                    }, (FileType)i);

                    foreach (var dbFile in dbFiles)
                    {
                        Assert.IsNotNull(testFiles.FirstOrDefault(x => x.FileID == dbFile.FileID && x.FileTypeID == (FileType)i));
                    }
                }
            }
        }
예제 #10
0
        public void TestUpdateFields()
        {
            IDataSourceAdapter adapter = TestUtil.CreateAdapter();
            var gameFiles = CreateTestFileList();

            List <GameFileFieldType> fields = new List <GameFileFieldType>();

            foreach (var enumValue in Enum.GetValues(typeof(GameFileFieldType)))
            {
                fields.Add((GameFileFieldType)enumValue);
            }

            var names = fields.Select(x => x.ToString());

            PropertyInfo[] properties = typeof(TestGameFile).GetProperties().Where(x => names.Contains(x.Name)).ToArray();
            SetRandomFileValues(gameFiles, properties);

            foreach (var gameFile in gameFiles)
            {
                adapter.UpdateGameFile(gameFile, fields.ToArray());
                IGameFile gameFileFind = adapter.GetGameFile(gameFile.FileName);
                Assert.IsTrue(gameFileFind != null);
                Assert.IsTrue(TestUtil.AllFieldsEqual <IGameFile>(gameFile, gameFileFind));
            }
        }
예제 #11
0
        public void TestGetGameFileIWads()
        {
            IDataSourceAdapter adapter = TestUtil.CreateAdapter();
            var gameFileIwads          = CreateTestIWadList();

            Assert.IsTrue(adapter.GetGameFileIWads().Count() == gameFileIwads.Count);
        }
예제 #12
0
        public void TestIWadExclude()
        {
            //if the iwad has a file attached to it because of a source port, that file should not be included when the iwad is selected
            //e.g. GZDoom has noendgame.wad User launched DOOM2.WAD with GZDoom. This adds noendgame to the additional files of DOOM2.WAD.
            //if the user selects DOOM2.WAD with another file (and not GZDoom as the port), noendgame.wad should not be added

            IDataSourceAdapter adapter = TestUtil.CreateAdapter();
            var             mainFile   = adapter.GetGameFile("COOLGAMEFILE.WAD");
            FileLoadHandler handler    = new FileLoadHandler(adapter, mainFile);

            Assert.AreEqual(3, handler.GetCurrentAdditionalFiles().Count);

            var iwad       = adapter.GetGameFileIWads().First(x => x.FileName == "DOOM2.WAD");
            var sourceport = adapter.GetSourcePorts().First(x => x.Name == "zdoom.exe");

            iwad.SettingsFiles = "MOD4.WAD";
            adapter.UpdateGameFile(iwad);

            handler.CalculateAdditionalFiles(iwad, sourceport);
            var gameFiles = handler.GetCurrentAdditionalFiles();

            Assert.AreEqual(5, gameFiles.Count);
            Assert.IsNotNull(gameFiles.FirstOrDefault(x => x.FileName == "MOD4.WAD"));

            //now set up the file so it should be excluded
            iwad.SettingsFilesSourcePort = "MOD4.WAD";
            adapter.UpdateGameFile(iwad);

            handler = new FileLoadHandler(adapter, mainFile);
            handler.CalculateAdditionalFiles(iwad, sourceport);
            gameFiles = handler.GetCurrentAdditionalFiles();
            Assert.AreEqual(4, gameFiles.Count);
            Assert.IsNull(gameFiles.FirstOrDefault(x => x.FileName == "MOD4.WAD"));
        }
예제 #13
0
        public void Initialize(IDataSourceAdapter adapter, AppConfiguration config)
        {
            DataSourceAdapter   = adapter;
            ScreenshotDirectory = config.ScreenshotDirectory;
            SaveGameDirectory   = config.SaveGameDirectory;

            ctrlScreenshotView.DataSourceAdapter = DataSourceAdapter;
            ctrlScreenshotView.DataDirectory     = ScreenshotDirectory;
            ctrlScreenshotView.FileType          = FileType.Screenshot;
            ctrlScreenshotView.SetContextMenu(BuildContextMenuStrip(ctrlScreenshotView));
            ctrlScreenshotView.SetPictureWidth(Util.GetPreviewScreenshotWidth(config.ScreenshotPreviewSize));

            ctrlSaveGameView.DataSourceAdapter = DataSourceAdapter;
            ctrlSaveGameView.DataDirectory     = SaveGameDirectory;
            ctrlSaveGameView.FileType          = FileType.SaveGame;
            ctrlSaveGameView.SetContextMenu(BuildContextMenuStrip(ctrlSaveGameView));

            ctrlDemoView.DataSourceAdapter = DataSourceAdapter;
            ctrlDemoView.DataDirectory     = config.DemoDirectory;
            ctrlDemoView.FileType          = FileType.Demo;
            ctrlDemoView.SetContextMenu(BuildContextMenuStrip(ctrlDemoView));

            ctrlViewStats.DataSourceAdapter = DataSourceAdapter;
            ctrlViewStats.SetContextMenu(BuildContextMenuStrip(ctrlViewStats));

            SetButtonsEnabled(CurrentView);
        }
예제 #14
0
        public void TestSelectFields()
        {
            IDataSourceAdapter adapter = TestUtil.CreateAdapter();
            var gameFiles = CreateTestFileList();

            var selectGameFiles = adapter.GetGameFiles(new GameFileGetOptions(s_fields));

            foreach (var gameFile in gameFiles)
            {
                var selectGameFile = selectGameFiles.FirstOrDefault(x => x.GameFileID == gameFile.GameFileID);
                Assert.IsNotNull(selectGameFile);
                Assert.IsTrue(selectGameFile.SettingsExtraParams.Length == 0);
                Assert.IsTrue(selectGameFile.SettingsFiles.Length == 0);
                Assert.IsTrue(selectGameFile.SettingsMap.Length == 0);
                Assert.IsTrue(selectGameFile.SettingsSkill.Length == 0);
                Assert.IsTrue(selectGameFile.SettingsSpecificFiles.Length == 0);

                Assert.IsTrue(selectGameFile.FileName.Equals(gameFile.FileName));
                Assert.IsTrue(selectGameFile.Author.Equals(gameFile.Author));
                Assert.IsTrue(selectGameFile.Title.Equals(gameFile.Title));
                Assert.IsTrue(selectGameFile.Description.Equals(gameFile.Description));
                Assert.IsTrue(selectGameFile.Downloaded.Equals(gameFile.Downloaded));
                Assert.IsTrue(selectGameFile.LastPlayed.Equals(gameFile.LastPlayed));
                Assert.IsTrue(selectGameFile.ReleaseDate.Equals(gameFile.ReleaseDate));
                Assert.IsTrue(selectGameFile.Comments.Equals(gameFile.Comments));
                Assert.IsTrue(selectGameFile.Rating.Equals(gameFile.Rating));
                Assert.IsTrue(selectGameFile.MapCount.Equals(gameFile.MapCount));
                Assert.IsTrue(selectGameFile.MinutesPlayed.Equals(gameFile.MinutesPlayed));
                Assert.IsTrue(selectGameFile.IWadID.Equals(gameFile.IWadID));
            }
        }
예제 #15
0
        public void TestHandlerIWad()
        {
            IDataSourceAdapter adapter = TestUtil.CreateAdapter();
            FileLoadHandler    handler = new FileLoadHandler(adapter, adapter.GetGameFile("COOLGAMEFILE.WAD"));

            Assert.AreEqual(3, handler.GetCurrentAdditionalFiles().Count);

            var iwad       = adapter.GetGameFileIWads().First(x => x.FileName == "PLUTONIA.WAD");
            var sourceport = adapter.GetSourcePorts().First(x => x.Name == "odamex.exe"); //no additional files for port

            handler.CalculateAdditionalFiles(iwad, sourceport);
            var gameFiles = handler.GetCurrentAdditionalFiles();

            Assert.AreEqual(4, gameFiles.Count);
            Assert.IsNotNull(gameFiles.FirstOrDefault(x => x.FileName == "IWADMOD1.WAD"));

            //no change
            handler.CalculateAdditionalFiles(iwad, sourceport);
            gameFiles = handler.GetCurrentAdditionalFiles();

            Assert.IsNotNull(gameFiles.FirstOrDefault(x => x.FileName == "IWADMOD1.WAD"));

            Assert.IsTrue(handler.IsIWadFile(gameFiles.First(x => x.FileName == "IWADMOD1.WAD")));
            Assert.IsFalse(handler.IsSourcePortFile(gameFiles.First(x => x.FileName == "IWADMOD1.WAD")));
        }
예제 #16
0
        public void TestTagSelect()
        {
            IDataSourceAdapter adapter = TestUtil.CreateAdapter();
            var tags = CreateTestTagList();

            Assert.IsTrue(adapter.GetTags().Count() == tags.Count);
        }
예제 #17
0
        public void TestGameProfileUpdate()
        {
            IDataSourceAdapter adapter = TestUtil.CreateAdapter();
            var profiles = CreateTestProfiles();

            foreach (var profile in profiles)
            {
                profile.Name                    += profile.Name;
                profile.SourcePortID            += profile.SourcePortID;
                profile.IWadID                  += profile.IWadID;
                profile.SettingsExtraParams     += profile.SettingsExtraParams;
                profile.SettingsFiles           += profile.SettingsFiles;
                profile.SettingsFilesIWAD       += profile.SettingsFilesIWAD;
                profile.SettingsFilesSourcePort += profile.SettingsFilesSourcePort;
                profile.SettingsMap             += profile.SettingsMap;
                profile.SettingsSkill           += profile.SettingsSkill;
                profile.SettingsSpecificFiles   += profile.SettingsSpecificFiles;
                profile.SettingsStat             = !profile.SettingsStat;
                profile.SettingsSaved            = !profile.SettingsSaved;

                adapter.UpdateGameProfile(profile);

                var testProfiles = adapter.GetGameProfiles(profile.GameFileID.Value).ToList();
                Assert.AreEqual(1, testProfiles.Count);
                Assert.IsTrue(TestUtil.AllFieldsEqual(profile, testProfiles.First()));
            }
        }
예제 #18
0
        public void TestUpdateWhere()
        {
            //Note: This function is only used in SourcePortViewForm.cs
            IDataSourceAdapter adapter = TestUtil.CreateAdapter();
            var gameFiles = CreateTestFileList();
            int test      = 1000;

            foreach (var gameFile in gameFiles)
            {
                adapter.UpdateGameFile(gameFile); //Make sure we're in sync with our test list first...

                //Test setting a real value
                adapter.UpdateGameFiles(GameFileFieldType.SourcePortID, GameFileFieldType.SourcePortID, gameFile.SourcePortID, test);
                gameFile.SourcePortID = test;

                IGameFile gameFileFind = adapter.GetGameFile(gameFile.FileName);
                Assert.IsTrue(gameFileFind != null);
                Assert.IsTrue(TestUtil.AllFieldsEqual <IGameFile>(gameFile, gameFileFind));

                //Test setting value to null
                adapter.UpdateGameFiles(GameFileFieldType.SourcePortID, GameFileFieldType.SourcePortID, gameFile.SourcePortID, null);
                gameFile.SourcePortID = null;

                gameFileFind = adapter.GetGameFile(gameFile.FileName);
                Assert.IsTrue(gameFileFind != null);
                Assert.IsTrue(TestUtil.AllFieldsEqual <IGameFile>(gameFile, gameFileFind));

                test++;
            }
        }
예제 #19
0
 public TagTabView(object key, string title, IDataSourceAdapter adapter, GameFileFieldType[] selectFields, ITagData tag)
     : base(key, title, adapter, selectFields)
 {
     InitializeComponent();
     TagDataSource = tag;
     m_tagAdapter  = adapter;
 }
예제 #20
0
        protected async Task <List <IDataItem> > ReadDataAsync(IDataSourceAdapter sourceAdapter)
        {
            var results = new List <IDataItem>();

            IDataItem dataItem;
            var       readOutput = new ReadOutputByRef();

            while (true)
            {
                try
                {
                    dataItem = await sourceAdapter.ReadNextAsync(readOutput, CancellationToken.None);
                }
                catch (NonFatalReadException)
                {
                    continue;
                }

                if (dataItem == null)
                {
                    break;
                }

                results.Add(dataItem);

                Assert.IsNotNull(readOutput.DataItemId, CommonTestResources.MissingDataItemId);
                readOutput.Wipe();
            }

            return(results);
        }
예제 #21
0
        public void TestDeleteFile()
        {
            IDataSourceAdapter adapter = TestUtil.CreateAdapter();
            var gameFileIDs            = CreateTestFiles().Select(x => x.GameFileID).Distinct();

            int id = gameFileIDs.First();

            var dbFiles = adapter.GetFiles(new GameFile()
            {
                GameFileID = id
            });
            int count = dbFiles.Count();

            foreach (var dbFile in dbFiles)
            {
                adapter.DeleteFile(dbFile);
                count--;
                Assert.AreEqual(count, adapter.GetFiles(new GameFile()
                {
                    GameFileID = id
                }).Count());
            }


            id = gameFileIDs.Skip(1).First();
            adapter.DeleteFile(new GameFile()
            {
                GameFileID = id
            });
            Assert.AreEqual(0, adapter.GetFiles(new GameFile()
            {
                GameFileID = id
            }).Count());
        }
예제 #22
0
        public PreviewDataDialog(TableData Source)
        {
            InitializeComponent();

            this.Source      = Source;
            this.DataAdapter = new FrontDataAdapter();
        }
예제 #23
0
        public void TestUpdateFile()
        {
            IDataSourceAdapter adapter = TestUtil.CreateAdapter();
            var files = adapter.GetFiles(new DoomLauncher.DataSources.GameFile()
            {
                GameFileID = 1
            });

            foreach (var file in files)
            {
                //we only update these three fields
                file.SourcePortID += 100;
                file.Description  += "100";
                file.FileOrder    += 100;

                adapter.UpdateFile(file);
            }

            var newFiles = adapter.GetFiles(new GameFile()
            {
                GameFileID = 1
            });

            foreach (var file in files)
            {
                var newFile = newFiles.FirstOrDefault(x => x.FileID == file.FileID);
                Assert.IsNotNull(newFile);
                Assert.IsTrue(TestUtil.AllFieldsEqual(file, newFile));
            }
        }
예제 #24
0
 public void Initialize(IDataSourceAdapter adapter, ITabView[] tabViews)
 {
     this.DataAdapter = adapter;
     this.m_tabViews  = tabViews;
     this.SetDataSource(adapter.GetSourcePorts());
     this.dgvSourcePorts.Columns[this.dgvSourcePorts.Columns.Count - 1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
 }
        public async Task ExecuteAsync(IDataSourceAdapter source, IDataSinkAdapter sink, ITransferStatistics statistics, CancellationToken cancellation)
        {
            Guard.NotNull("source", source);
            Guard.NotNull("sink", sink);
            Guard.NotNull("statistics", statistics);

            var writeTasks = Enumerable
                    .Range(0, sink.MaxDegreeOfParallelism)
                    .Select(i => (Task)Task.FromResult<object>(null))
                    .ToArray();

            var fatalExceptions = new List<Exception>();
            var readOutput = new ReadOutputByRef();
            IDataItem dataItem;
            while (!cancellation.IsCancellationRequested)
            {
                readOutput.Wipe();

                try
                {
                    dataItem = await source.ReadNextAsync(readOutput, cancellation);
                }
                catch (NonFatalReadException nonFatalException)
                {
                    statistics.AddError(readOutput.DataItemId, nonFatalException);
                    continue;
                }
                catch (Exception exception)
                {
                    fatalExceptions.Add(exception);
                    break;
                }

                if (dataItem == null || cancellation.IsCancellationRequested)
                    break;

                var completed = await Task.WhenAny(writeTasks);
                writeTasks[Array.IndexOf(writeTasks, completed)] =
                    TransferDataItem(sink, readOutput.DataItemId, dataItem, statistics, cancellation);
            }

            // Report completion to the sink
            try
            {
                await sink.CompleteAsync(cancellation);
            }
            catch (Exception exception)
            {
                fatalExceptions.Add(exception);
            }

            // Wait for all on-going writes to complete
            for (var index = 0; index < writeTasks.Length; ++index)
                await writeTasks[index];

            // Throw fatal exceptions, if any
            if (fatalExceptions.Any())
                throw new AggregateException(fatalExceptions);
        }
예제 #26
0
        public void TestPartialLikeFileName_SqlSyntax()
        {
            IDataSourceAdapter  adapter = TestUtil.CreateAdapter();
            IGameFileGetOptions options = new GameFileGetOptions(new GameFileSearchField(GameFileFieldType.Filename, GameFileSearchOp.Like, "test" + s_garbage));
            var gameFilesFind           = adapter.GetGameFiles(options);

            Assert.AreEqual(3, gameFilesFind.Count());
        }
예제 #27
0
        public void TestTagMapSelect()
        {
            IDataSourceAdapter adapter = TestUtil.CreateAdapter();
            var tagMap = CreateTestTagMapping();

            Assert.IsTrue(adapter.GetTagMappings().Count() == tagMap.Count);
            Assert.IsTrue(adapter.GetGameFiles().Count() == tagMap.Count);
        }
예제 #28
0
        public void TestPartialLikeAuthor()
        {
            IDataSourceAdapter  adapter = TestUtil.CreateAdapter();
            IGameFileGetOptions options = new GameFileGetOptions(new GameFileSearchField(GameFileFieldType.Author, GameFileSearchOp.Like, "test"));
            var gameFilesFind           = adapter.GetGameFiles(options);

            Assert.AreEqual(gameFilesFind.Count(), CreateTestFileList().Count);
        }
예제 #29
0
 public FileLoadHandler(IDataSourceAdapter adapter, IGameFile gameFile)
 {
     m_adapter  = adapter;
     m_gameFile = gameFile;
     SetAdditionalFiles(Util.GetAdditionalFiles(m_adapter, gameFile));
     m_iwadAdditionalFiles       = GetIWadFilesFromGameFile(gameFile);
     m_sourcePortAdditionalFiles = Util.GetSourcePortAdditionalFiles(m_adapter, gameFile);
 }
예제 #30
0
 public static List <IGameFileDataSource> GetAdditionalFiles(IDataSourceAdapter adapter, IGameFileDataSource gameFile)
 {
     if (gameFile != null)
     {
         return(GetAdditionalFiles(adapter, gameFile.SettingsFiles));
     }
     return(new List <IGameFileDataSource>());
 }
예제 #31
0
        private static List <IGameFile> GetAdditionalFiles(IDataSourceAdapter adapter, string property)
        {
            string[]         fileNames = Util.SplitString(property);
            List <IGameFile> gameFiles = new List <IGameFile>();

            Array.ForEach(fileNames, x => gameFiles.Add(adapter.GetGameFile(x)));
            return(gameFiles.Where(x => x != null).ToList());
        }
예제 #32
0
        private static List <IGameFile> GetAdditionalFiles(IDataSourceAdapter adapter, IGameFile gameFile, string property)
        {
            string[]         fileNames = property.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            List <IGameFile> gameFiles = new List <IGameFile>();

            Array.ForEach(fileNames, x => gameFiles.Add(adapter.GetGameFile(x)));
            return(gameFiles.Where(x => x != null).ToList());
        }
        private async Task VerifyRows(IDataSourceAdapter adapter, IReadOnlyDictionary<string, object>[] expectedRows)
        {
            var readOutput = new ReadOutputByRef();

            for (var rowIndex = 0; rowIndex < expectedRows.Length; ++rowIndex)
            {
                var dataItem = await adapter.ReadNextAsync(readOutput, CancellationToken.None);

                Assert.IsNotNull(dataItem, TestResources.MoreDataItemsExpected);

                VerifyDataItem(expectedRows[rowIndex], dataItem);
            }
        }