osu/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlay.cs

236 lines
8.4 KiB
C#
Raw Normal View History

2019-06-27 02:40:22 +00:00
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
2018-04-13 09:19:50 +00:00
using NUnit.Framework;
using osu.Framework.Allocation;
using osu.Game.Beatmaps;
using osu.Game.Overlays;
using osu.Game.Overlays.BeatmapSet;
using osu.Game.Overlays.BeatmapSet.Buttons;
using osu.Game.Overlays.BeatmapSet.Scores;
2018-04-13 09:19:50 +00:00
using osu.Game.Rulesets;
using osu.Game.Users;
2019-02-05 16:32:33 +00:00
using System;
using System.Collections.Generic;
using System.Linq;
2018-04-13 09:19:50 +00:00
2019-03-24 16:02:36 +00:00
namespace osu.Game.Tests.Visual.Online
2018-04-13 09:19:50 +00:00
{
[TestFixture]
public class TestSceneBeatmapSetOverlay : OsuTestScene
2018-04-13 09:19:50 +00:00
{
private readonly TestBeatmapSetOverlay overlay;
2018-04-13 09:19:50 +00:00
public override IReadOnlyList<Type> RequiredTypes => new[]
{
typeof(Header),
2019-03-26 08:38:56 +00:00
typeof(ScoreTable),
typeof(ScoreTableRowBackground),
typeof(DrawableTopScore),
typeof(ScoresContainer),
typeof(AuthorInfo),
typeof(BasicStats),
typeof(BeatmapPicker),
typeof(Details),
typeof(DownloadButton),
typeof(FavouriteButton),
typeof(Header),
typeof(HeaderButton),
typeof(Info),
typeof(PreviewButton),
typeof(SuccessRate),
2019-06-27 02:40:22 +00:00
typeof(BeatmapAvailability),
};
private RulesetInfo taikoRuleset;
private RulesetInfo maniaRuleset;
public TestSceneBeatmapSetOverlay()
2018-04-13 09:19:50 +00:00
{
Add(overlay = new TestBeatmapSetOverlay());
2018-04-13 09:19:50 +00:00
}
[BackgroundDependencyLoader]
private void load(RulesetStore rulesets)
{
taikoRuleset = rulesets.GetRuleset(1);
maniaRuleset = rulesets.GetRuleset(3);
}
2018-04-13 09:19:50 +00:00
[Test]
public void TestLoading()
{
AddStep(@"show loading", () => overlay.ShowBeatmapSet(null));
}
[Test]
public void TestOnline()
{
AddStep(@"show online", () => overlay.FetchAndShowBeatmapSet(55));
}
[Test]
public void TestLocalBeatmaps()
{
2018-04-13 09:19:50 +00:00
AddStep(@"show first", () =>
{
overlay.ShowBeatmapSet(new BeatmapSetInfo
{
OnlineBeatmapSetID = 1235,
2018-04-13 09:19:50 +00:00
Metadata = new BeatmapMetadata
{
Title = @"an awesome beatmap",
Artist = @"naru narusegawa",
Source = @"hinata sou",
Tags = @"test tag tag more tag",
2018-04-13 09:19:50 +00:00
Author = new User
{
Username = @"BanchoBot",
Id = 3,
2018-04-13 09:19:50 +00:00
},
},
OnlineInfo = new BeatmapSetOnlineInfo
{
Preview = @"https://b.ppy.sh/preview/12345.mp3",
2019-06-27 04:48:57 +00:00
PlayCount = 123,
FavouriteCount = 456,
Submitted = DateTime.Now,
Ranked = DateTime.Now,
BPM = 111,
2018-04-13 09:19:50 +00:00
HasVideo = true,
2019-06-27 04:48:57 +00:00
HasStoryboard = true,
Covers = new BeatmapSetOnlineCovers(),
2018-04-13 09:19:50 +00:00
},
2019-06-13 07:52:49 +00:00
Metrics = new BeatmapSetMetrics { Ratings = Enumerable.Range(0, 11).ToArray() },
2018-04-13 09:19:50 +00:00
Beatmaps = new List<BeatmapInfo>
{
new BeatmapInfo
{
2019-06-27 04:48:57 +00:00
StarDifficulty = 9.99,
Version = @"TEST",
Ruleset = maniaRuleset,
2018-04-13 09:19:50 +00:00
BaseDifficulty = new BeatmapDifficulty
{
2019-06-27 04:48:57 +00:00
CircleSize = 1,
DrainRate = 2.3f,
OverallDifficulty = 4.5f,
ApproachRate = 6,
2018-04-13 09:19:50 +00:00
},
OnlineInfo = new BeatmapOnlineInfo
{
2019-06-27 04:48:57 +00:00
Length = 456000,
CircleCount = 111,
SliderCount = 12,
PlayCount = 222,
PassCount = 21,
2018-04-13 09:19:50 +00:00
},
Metrics = new BeatmapMetrics
{
2019-06-13 07:30:38 +00:00
Fails = Enumerable.Range(1, 100).Select(i => i % 12 - 6).ToArray(),
Retries = Enumerable.Range(-2, 100).Select(i => i % 12 - 6).ToArray(),
2018-04-13 09:19:50 +00:00
},
},
},
});
2018-04-13 09:19:50 +00:00
});
2019-06-26 02:17:28 +00:00
2019-06-19 00:37:08 +00:00
downloadAssert(true);
}
2019-06-19 00:37:08 +00:00
[Test]
2019-06-27 04:48:57 +00:00
public void TestAvailability()
{
AddStep(@"show undownloadable", () =>
2018-04-13 09:19:50 +00:00
{
overlay.ShowBeatmapSet(new BeatmapSetInfo
{
OnlineBeatmapSetID = 1234,
2018-04-13 09:19:50 +00:00
Metadata = new BeatmapMetadata
{
2019-06-27 04:48:57 +00:00
Title = @"undownloadable beatmap",
Artist = @"no one",
Source = @"some source",
Tags = @"another test tag tag more test tags",
2018-04-13 09:19:50 +00:00
Author = new User
{
2019-06-27 04:48:57 +00:00
Username = @"BanchoBot",
Id = 3,
2018-04-13 09:19:50 +00:00
},
},
OnlineInfo = new BeatmapSetOnlineInfo
{
Availability = new BeatmapSetOnlineAvailability
{
DownloadDisabled = true,
ExternalLink = "https://osu.ppy.sh",
},
2019-06-27 04:48:57 +00:00
Preview = @"https://b.ppy.sh/preview/1234.mp3",
PlayCount = 123,
FavouriteCount = 456,
Submitted = DateTime.Now,
Ranked = DateTime.Now,
BPM = 111,
HasVideo = true,
HasStoryboard = true,
Covers = new BeatmapSetOnlineCovers(),
2018-04-13 09:19:50 +00:00
},
2019-06-13 07:52:49 +00:00
Metrics = new BeatmapSetMetrics { Ratings = Enumerable.Range(0, 11).ToArray() },
2018-04-13 09:19:50 +00:00
Beatmaps = new List<BeatmapInfo>
{
new BeatmapInfo
{
2019-06-27 04:48:57 +00:00
StarDifficulty = 5.67,
Version = @"ANOTHER TEST",
Ruleset = taikoRuleset,
2018-04-13 09:19:50 +00:00
BaseDifficulty = new BeatmapDifficulty
{
2019-06-27 04:48:57 +00:00
CircleSize = 9,
DrainRate = 8,
OverallDifficulty = 7,
ApproachRate = 6,
2018-04-13 09:19:50 +00:00
},
OnlineInfo = new BeatmapOnlineInfo
{
2019-06-27 04:48:57 +00:00
Length = 123000,
CircleCount = 123,
SliderCount = 45,
PlayCount = 567,
PassCount = 89,
2018-04-13 09:19:50 +00:00
},
Metrics = new BeatmapMetrics
{
2019-06-13 07:30:38 +00:00
Fails = Enumerable.Range(1, 100).Select(i => i % 12 - 6).ToArray(),
Retries = Enumerable.Range(-2, 100).Select(i => i % 12 - 6).ToArray(),
2018-04-13 09:19:50 +00:00
},
},
},
});
2018-04-13 09:19:50 +00:00
});
2019-06-26 02:17:28 +00:00
downloadAssert(false);
}
[Test]
public void TestHide()
{
2018-04-13 09:19:50 +00:00
AddStep(@"hide", overlay.Hide);
}
[Test]
public void TestShowWithNoReload()
{
2018-04-13 09:19:50 +00:00
AddStep(@"show without reload", overlay.Show);
}
private void downloadAssert(bool shown)
{
2019-06-27 03:11:04 +00:00
AddAssert($"is download button {(shown ? "shown" : "hidden")}", () => overlay.DownloadButtonsVisible == shown);
}
private class TestBeatmapSetOverlay : BeatmapSetOverlay
{
2019-06-27 03:47:05 +00:00
public bool DownloadButtonsVisible => Header.DownloadButtonsVisible;
}
2018-04-13 09:19:50 +00:00
}
}