public void TestSelectMultipleScores() { var firstScore = new TestScoreInfo(new OsuRuleset().RulesetInfo); var secondScore = new TestScoreInfo(new OsuRuleset().RulesetInfo); createListStep(() => new ScorePanelList()); AddStep("add scores and select first", () => { list.AddScore(firstScore); list.AddScore(secondScore); list.SelectedScore.Value = firstScore; }); assertScoreState(firstScore, true); assertScoreState(secondScore, false); AddStep("select second score", () => { InputManager.MoveMouseTo(list.ChildrenOfType <ScorePanel>().Single(p => p.Score == secondScore)); InputManager.Click(MouseButton.Left); }); assertScoreState(firstScore, false); assertScoreState(secondScore, true); assertExpandedPanelCentred(); }
public void TestAddManyScoresAfterExpandedPanel() { var initialScore = new TestScoreInfo(new OsuRuleset().RulesetInfo); createListStep(() => new ScorePanelList()); AddStep("add initial panel and select", () => { list.AddScore(initialScore); list.SelectedScore.Value = initialScore; }); AddStep("add many scores", () => { for (int i = 0; i < 20; i++) { list.AddScore(new TestScoreInfo(new OsuRuleset().RulesetInfo) { TotalScore = initialScore.TotalScore - i - 1 }); } }); assertScoreState(initialScore, true); assertExpandedPanelCentred(); }
public void TestFetchWhenScrolledToTheLeft() { ScoreInfo userScore = null; AddStep("bind user score info handler", () => { userScore = new TestScoreInfo(new OsuRuleset().RulesetInfo) { OnlineScoreID = currentScoreId++ }; bindHandler(userScore: userScore); }); createResults(() => userScore); waitForDisplay(); AddStep("bind delayed handler", () => bindHandler(3000)); for (int i = 0; i < 2; i++) { int beforePanelCount = 0; AddStep("get panel count", () => beforePanelCount = this.ChildrenOfType <ScorePanel>().Count()); AddStep("scroll to left", () => resultsScreen.ScorePanelList.ChildrenOfType <OsuScrollContainer>().Single().ScrollToStart(false)); AddAssert("left loading spinner shown", () => resultsScreen.LeftSpinner.State.Value == Visibility.Visible); waitForDisplay(); AddAssert($"count increased by {scores_per_result}", () => this.ChildrenOfType <ScorePanel>().Count() == beforePanelCount + scores_per_result); AddAssert("left loading spinner hidden", () => resultsScreen.LeftSpinner.State.Value == Visibility.Hidden); } }
public void TestContractedPanel() { var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Accuracy = 0.925, Rank = ScoreRank.A }; addPanelStep(score, PanelState.Contracted); }
public void TestSSRank() { var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Accuracy = 1, Rank = ScoreRank.X }; addPanelStep(score); }
public void TestAllHitResults() { var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Statistics = { [HitResult.Perfect] = 350, [HitResult.Ok] = 200 } }; addPanelStep(score); }
public void TestScoreWithPositionStatistics() { var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { HitEvents = createPositionDistributedHitEvents() }; loadPanel(score); }
public void TestScoreWithStatistics() { var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { HitEvents = TestSceneHitEventTimingDistributionGraph.CreateDistributedHitEvents() }; loadPanel(score); }
public void TestAddPanelAfterSelectingScore() { var score = new TestScoreInfo(new OsuRuleset().RulesetInfo); createListStep(() => new ScorePanelList { SelectedScore = { Value = score } }); AddStep("add panel", () => list.AddScore(score)); assertScoreState(score, true); assertExpandedPanelCentred(); }
public void TestResultsWithPlayer(double accuracy, ScoreRank rank) { TestResultsScreen screen = null; var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Accuracy = accuracy, Rank = rank }; AddStep("load results", () => Child = new TestResultsContainer(screen = createResultsScreen(score))); AddUntilStep("wait for loaded", () => screen.IsLoaded); AddAssert("retry overlay present", () => screen.RetryOverlay != null); }
protected override APIRequest FetchScores(Action <IEnumerable <ScoreInfo> > scoresCallback) { var scores = new List <ScoreInfo>(); for (int i = 0; i < 20; i++) { var score = new TestScoreInfo(new OsuRuleset().RulesetInfo); score.TotalScore += 10 - i; scores.Add(score); } scoresCallback?.Invoke(scores); return(null); }
public void TestAddScoreImmediately() { var score = new TestScoreInfo(new OsuRuleset().RulesetInfo); createListStep(() => { var newList = new ScorePanelList { SelectedScore = { Value = score } }; newList.AddScore(score); return(newList); }); assertScoreState(score, true); assertExpandedPanelCentred(); }
public void TestAddPanelBeforeSelectingScore() { var score = new TestScoreInfo(new OsuRuleset().RulesetInfo); createListStep(() => new ScorePanelList()); AddStep("add panel", () => list.AddScore(score)); assertScoreState(score, false); assertFirstPanelCentred(); AddStep("select score", () => list.SelectedScore.Value = score); assertScoreState(score, true); assertExpandedPanelCentred(); }
public void TestExpandAndContract() { var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Accuracy = 0.925, Rank = ScoreRank.A }; addPanelStep(score, PanelState.Contracted); AddWaitStep("wait for transition", 10); AddStep("expand panel", () => panel.State = PanelState.Expanded); AddWaitStep("wait for transition", 10); AddStep("contract panel", () => panel.State = PanelState.Contracted); AddWaitStep("wait for transition", 10); }
public void TestCultureInvariance() { var ruleset = new OsuRuleset().RulesetInfo; var scoreInfo = new TestScoreInfo(ruleset); var beatmap = new TestBeatmap(ruleset); var score = new Score { ScoreInfo = scoreInfo, Replay = new Replay { Frames = new List <ReplayFrame> { new OsuReplayFrame(2000, OsuPlayfield.BASE_SIZE / 2, OsuAction.LeftButton) } } }; // the "se" culture is used here, as it encodes the negative number sign as U+2212 MINUS SIGN, // rather than the classic ASCII U+002D HYPHEN-MINUS. CultureInfo.CurrentCulture = new CultureInfo("se"); var encodeStream = new MemoryStream(); var encoder = new LegacyScoreEncoder(score, beatmap); encoder.Encode(encodeStream); var decodeStream = new MemoryStream(encodeStream.GetBuffer()); var decoder = new TestLegacyScoreDecoder(); var decodedAfterEncode = decoder.Parse(decodeStream); Assert.Multiple(() => { Assert.That(decodedAfterEncode, Is.Not.Null); Assert.That(decodedAfterEncode.ScoreInfo.User.Username, Is.EqualTo(scoreInfo.User.Username)); Assert.That(decodedAfterEncode.ScoreInfo.BeatmapInfoID, Is.EqualTo(scoreInfo.BeatmapInfoID)); Assert.That(decodedAfterEncode.ScoreInfo.Ruleset, Is.EqualTo(scoreInfo.Ruleset)); Assert.That(decodedAfterEncode.ScoreInfo.TotalScore, Is.EqualTo(scoreInfo.TotalScore)); Assert.That(decodedAfterEncode.ScoreInfo.MaxCombo, Is.EqualTo(scoreInfo.MaxCombo)); Assert.That(decodedAfterEncode.ScoreInfo.Date, Is.EqualTo(scoreInfo.Date)); Assert.That(decodedAfterEncode.Replay.Frames.Count, Is.EqualTo(1)); }); }
public void TestShowWithUserScore() { ScoreInfo userScore = null; AddStep("bind user score info handler", () => { userScore = new TestScoreInfo(new OsuRuleset().RulesetInfo) { OnlineScoreID = currentScoreId++ }; bindHandler(userScore: userScore); }); createResults(() => userScore); AddAssert("user score selected", () => this.ChildrenOfType <ScorePanel>().Single(p => p.Score.OnlineScoreID == userScore.OnlineScoreID).State == PanelState.Expanded); }
public void TestShowUserScoreWithDelay() { ScoreInfo userScore = null; AddStep("bind user score info handler", () => { userScore = new TestScoreInfo(new OsuRuleset().RulesetInfo) { OnlineScoreID = currentScoreId++ }; bindHandler(3000, userScore); }); createResults(() => userScore); waitForDisplay(); AddAssert("more than 1 panel displayed", () => this.ChildrenOfType <ScorePanel>().Count() > 1); AddAssert("user score selected", () => this.ChildrenOfType <ScorePanel>().Single(p => p.Score.OnlineScoreID == userScore.OnlineScoreID).State == PanelState.Expanded); }
protected override APIRequest FetchScores(Action <IEnumerable <ScoreInfo> > scoresCallback) { Task.Run(async() => { await Task.Delay(TimeSpan.FromMilliseconds(delay)); var scores = new List <ScoreInfo>(); for (int i = 0; i < 20; i++) { var score = new TestScoreInfo(new OsuRuleset().RulesetInfo); score.TotalScore += 10 - i; scores.Add(score); } scoresCallback?.Invoke(scores); Schedule(() => FetchCompleted = true); }); return(null); }
public void TestKeyboardNavigation() { var lowestScore = new TestScoreInfo(new OsuRuleset().RulesetInfo) { MaxCombo = 100 }; var middleScore = new TestScoreInfo(new OsuRuleset().RulesetInfo) { MaxCombo = 200 }; var highestScore = new TestScoreInfo(new OsuRuleset().RulesetInfo) { MaxCombo = 300 }; createListStep(() => new ScorePanelList()); AddStep("add scores and select middle", () => { // order of addition purposefully scrambled. list.AddScore(middleScore); list.AddScore(lowestScore); list.AddScore(highestScore); list.SelectedScore.Value = middleScore; }); AddUntilStep("wait for all scores to be visible", () => list.ChildrenOfType <ScorePanelTrackingContainer>().All(t => t.IsPresent)); assertScoreState(highestScore, false); assertScoreState(middleScore, true); assertScoreState(lowestScore, false); AddStep("press left", () => InputManager.Key(Key.Left)); assertScoreState(highestScore, true); assertScoreState(middleScore, false); assertScoreState(lowestScore, false); assertExpandedPanelCentred(); AddStep("press left at start of list", () => InputManager.Key(Key.Left)); assertScoreState(highestScore, true); assertScoreState(middleScore, false); assertScoreState(lowestScore, false); assertExpandedPanelCentred(); AddStep("press right", () => InputManager.Key(Key.Right)); assertScoreState(highestScore, false); assertScoreState(middleScore, true); assertScoreState(lowestScore, false); assertExpandedPanelCentred(); AddStep("press right again", () => InputManager.Key(Key.Right)); assertScoreState(highestScore, false); assertScoreState(middleScore, false); assertScoreState(lowestScore, true); assertExpandedPanelCentred(); AddStep("press right at end of list", () => InputManager.Key(Key.Right)); assertScoreState(highestScore, false); assertScoreState(middleScore, false); assertScoreState(lowestScore, true); assertExpandedPanelCentred(); AddStep("press left", () => InputManager.Key(Key.Left)); assertScoreState(highestScore, false); assertScoreState(middleScore, true); assertScoreState(lowestScore, false); assertExpandedPanelCentred(); }