private void load() { PlaySongSelect songSelect; if (manager == null) { var storage = new TestStorage(@"TestCasePlaySongSelect"); // this is by no means clean. should be replacing inside of OsuGameBase somehow. var context = new OsuDbContext(); Func <OsuDbContext> contextFactory = () => context; dependencies.Cache(rulesets = new RulesetStore(contextFactory)); dependencies.Cache(manager = new BeatmapManager(storage, contextFactory, rulesets, null)); for (int i = 0; i < 100; i += 10) { manager.Import(createTestBeatmapSet(i)); } } Add(songSelect = new PlaySongSelect()); AddStep(@"Sort by Artist", delegate { songSelect.FilterControl.Sort = SortMode.Artist; }); AddStep(@"Sort by Title", delegate { songSelect.FilterControl.Sort = SortMode.Title; }); AddStep(@"Sort by Author", delegate { songSelect.FilterControl.Sort = SortMode.Author; }); AddStep(@"Sort by Difficulty", delegate { songSelect.FilterControl.Sort = SortMode.Difficulty; }); }
private void load(BeatmapManager baseManager) { TestSongSelect songSelect = null; var storage = new TestStorage(@"TestCasePlaySongSelect"); // this is by no means clean. should be replacing inside of OsuGameBase somehow. var context = new OsuDbContext(); Func <OsuDbContext> contextFactory = () => context; dependencies.Cache(rulesets = new RulesetStore(contextFactory)); dependencies.Cache(manager = new BeatmapManager(storage, contextFactory, rulesets, null) { DefaultBeatmap = defaultBeatmap = baseManager.GetWorkingBeatmap(null) }); void loadNewSongSelect(bool deleteMaps = false) => AddStep("reload song select", () => { if (deleteMaps) { manager.DeleteAll(); } if (songSelect != null) { Remove(songSelect); songSelect.Dispose(); } Add(songSelect = new TestSongSelect()); }); loadNewSongSelect(true); AddWaitStep(3); AddAssert("dummy selected", () => songSelect.CurrentBeatmap == defaultBeatmap); AddStep("import test maps", () => { for (int i = 0; i < 100; i += 10) { manager.Import(createTestBeatmapSet(i)); } }); AddWaitStep(3); AddAssert("random map selected", () => songSelect.CurrentBeatmap != defaultBeatmap); loadNewSongSelect(); AddWaitStep(3); AddAssert("random map selected", () => songSelect.CurrentBeatmap != defaultBeatmap); AddStep(@"Sort by Artist", delegate { songSelect.FilterControl.Sort = SortMode.Artist; }); AddStep(@"Sort by Title", delegate { songSelect.FilterControl.Sort = SortMode.Title; }); AddStep(@"Sort by Author", delegate { songSelect.FilterControl.Sort = SortMode.Author; }); AddStep(@"Sort by Difficulty", delegate { songSelect.FilterControl.Sort = SortMode.Difficulty; }); }
private void dereference(OsuDbContext context, FileInfo[] files) { foreach (var f in files.GroupBy(f => f.ID)) { var refetch = context.FileInfo.Find(f.Key); refetch.ReferenceCount -= f.Count(); context.FileInfo.Update(refetch); } context.SaveChanges(); }
protected override void Purge(List <BeatmapSetInfo> items, OsuDbContext context) { // metadata is M-N so we can't rely on cascades context.BeatmapMetadata.RemoveRange(items.Select(s => s.Metadata)); context.BeatmapMetadata.RemoveRange(items.SelectMany(s => s.Beatmaps.Select(b => b.Metadata).Where(m => m != null))); // todo: we can probably make cascades work here with a FK in BeatmapDifficulty. just make to make it work correctly. context.BeatmapDifficulty.RemoveRange(items.SelectMany(s => s.Beatmaps.Select(b => b.BaseDifficulty))); base.Purge(items, context); }
private IEnumerable <KeyBinding> query(OsuDbContext context, int?rulesetId = null, int?variant = null) => context.DatabasedKeyBinding.Where(b => b.RulesetID == rulesetId && b.Variant == variant);
public SingletonContextFactory(OsuDbContext context) { this.context = context; }