diff --git a/.idea/.idea.osu/.idea/runConfigurations/VisualTests__net461_.xml b/.idea/.idea.osu/.idea/runConfigurations/VisualTests__net461_.xml
new file mode 100644
index 0000000000..cf4bccfe60
--- /dev/null
+++ b/.idea/.idea.osu/.idea/runConfigurations/VisualTests__net461_.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.osu/.idea/runConfigurations/VisualTests__netcoreapp2_0_.xml b/.idea/.idea.osu/.idea/runConfigurations/VisualTests__netcoreapp2_0_.xml
new file mode 100644
index 0000000000..08b4e38667
--- /dev/null
+++ b/.idea/.idea.osu/.idea/runConfigurations/VisualTests__netcoreapp2_0_.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.osu/.idea/runConfigurations/osu___net461_.xml b/.idea/.idea.osu/.idea/runConfigurations/osu___net461_.xml
new file mode 100644
index 0000000000..971868a81b
--- /dev/null
+++ b/.idea/.idea.osu/.idea/runConfigurations/osu___net461_.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.osu/.idea/runConfigurations/osu___netcoreapp2_0_.xml b/.idea/.idea.osu/.idea/runConfigurations/osu___netcoreapp2_0_.xml
new file mode 100644
index 0000000000..2f5c137631
--- /dev/null
+++ b/.idea/.idea.osu/.idea/runConfigurations/osu___netcoreapp2_0_.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 8c8255db71..624e584f10 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -8,10 +8,7 @@
},
"type": "mono",
"request": "launch",
- "program": "${workspaceRoot}/osu.Desktop/bin/Debug/net461/osu!.exe",
- "args": [
- "--tests"
- ],
+ "program": "${workspaceRoot}/osu.Game.Tests/bin/Debug/net461/osu.Game.Tests.exe",
"cwd": "${workspaceRoot}",
"preLaunchTask": "Build (Debug, msbuild)",
"runtimeExecutable": null,
@@ -25,10 +22,7 @@
},
"type": "mono",
"request": "launch",
- "program": "${workspaceRoot}/osu.Desktop/bin/Release/net461/osu!.exe",
- "args": [
- "--tests"
- ],
+ "program": "${workspaceRoot}/osu.Game.Tests/bin/Debug/net461/osu.Game.Tests.exe",
"cwd": "${workspaceRoot}",
"preLaunchTask": "Build (Release, msbuild)",
"runtimeExecutable": null,
@@ -69,8 +63,7 @@
"request": "launch",
"program": "dotnet",
"args": [
- "${workspaceRoot}/osu.Desktop/bin/Debug/netcoreapp2.0/osu!.dll",
- "--tests"
+ "${workspaceRoot}/osu.Game.Tests/bin/Debug/netcoreapp2.0/osu.Game.Tests.dll"
],
"cwd": "${workspaceRoot}",
"preLaunchTask": "Build (Debug, dotnet)",
@@ -83,8 +76,7 @@
"request": "launch",
"program": "dotnet",
"args": [
- "${workspaceRoot}/osu.Desktop/bin/Release/netcoreapp2.0/osu!.dll",
- "--tests"
+ "${workspaceRoot}/osu.Game.Tests/bin/Debug/netcoreapp2.0/osu.Game.Tests.dll"
],
"cwd": "${workspaceRoot}",
"preLaunchTask": "Build (Release, dotnet)",
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 20af2f68a6..0000000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-// Place your settings in this file to overwrite default and user settings.
-{
-}
\ No newline at end of file
diff --git a/appveyor.yml b/appveyor.yml
index 6388b54db5..4c4b70827f 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -22,10 +22,6 @@ build:
project: osu.sln
parallel: true
verbosity: minimal
-test:
- assemblies:
- only:
- - 'osu.Desktop\**\*.dll'
after_build:
- cmd: inspectcode --o="inspectcodereport.xml" --projects:osu.Game* --caches-home="inspectcode" osu.sln > NUL
- cmd: NVika parsereport "inspectcodereport.xml" --treatwarningsaserrors
\ No newline at end of file
diff --git a/osu-framework b/osu-framework
index b59149e1ce..85b3494117 160000
--- a/osu-framework
+++ b/osu-framework
@@ -1 +1 @@
-Subproject commit b59149e1cebe28675dcd2ebd014e5793d9626c09
+Subproject commit 85b3494117ccef1b396b70957e1cffaba06e2b54
diff --git a/osu.Desktop.Deploy/osu.Desktop.Deploy.csproj b/osu.Desktop.Deploy/osu.Desktop.Deploy.csproj
index eab54bd10b..a18db9477a 100644
--- a/osu.Desktop.Deploy/osu.Desktop.Deploy.csproj
+++ b/osu.Desktop.Deploy/osu.Desktop.Deploy.csproj
@@ -5,10 +5,6 @@
Exe
AnyCPU
true
- ppy Pty Ltd
- ppy Pty Ltd 2007-2017
-
osu.Desktop.Deploy
- osu.Desktop.Deploy
diff --git a/osu.Desktop/Program.cs b/osu.Desktop/Program.cs
index 25beb9a7d4..7258610f90 100644
--- a/osu.Desktop/Program.cs
+++ b/osu.Desktop/Program.cs
@@ -44,9 +44,6 @@ namespace osu.Desktop
{
switch (args.FirstOrDefault() ?? string.Empty)
{
- case "--tests":
- host.Run(new OsuTestBrowser());
- break;
default:
host.Run(new OsuGameDesktop(args));
break;
diff --git a/osu.Desktop/osu.Desktop.csproj b/osu.Desktop/osu.Desktop.csproj
index 2262bbc515..2ad7b67842 100644
--- a/osu.Desktop/osu.Desktop.csproj
+++ b/osu.Desktop/osu.Desktop.csproj
@@ -5,19 +5,13 @@
WinExe
AnyCPU
true
- ppy Pty Ltd
click the circles. to the beat.
- ppy Pty Ltd 2007-2017
osu!
osu!lazer
osu!lazer
lazer.ico
- $(CONFIGURATIONS);VisualTests
0.0.0.0
0.0.0.0
-
- NU1701
$(DefineConstants);NET_FRAMEWORK
@@ -25,23 +19,18 @@
osu.Desktop.Program
-
- --tests
-
+
-
-
-
diff --git a/osu.Game.Rulesets.Catch.Tests/.vscode/launch.json b/osu.Game.Rulesets.Catch.Tests/.vscode/launch.json
new file mode 100644
index 0000000000..5098b78a42
--- /dev/null
+++ b/osu.Game.Rulesets.Catch.Tests/.vscode/launch.json
@@ -0,0 +1,59 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "VisualTests (Debug, net461)",
+ "windows": {
+ "type": "clr"
+ },
+ "type": "mono",
+ "request": "launch",
+ "program": "${workspaceRoot}/bin/Debug/net461/osu.Game.Rulesets.Catch.Tests.exe",
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Debug, msbuild)",
+ "runtimeExecutable": null,
+ "env": {},
+ "console": "internalConsole"
+ },
+ {
+ "name": "VisualTests (Release, net461)",
+ "windows": {
+ "type": "clr"
+ },
+ "type": "mono",
+ "request": "launch",
+ "program": "${workspaceRoot}/bin/Debug/net461/osu.Game.Rulesets.Catch.Tests.exe",
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Release, msbuild)",
+ "runtimeExecutable": null,
+ "env": {},
+ "console": "internalConsole"
+ },
+ {
+ "name": "VisualTests (Debug, netcoreapp2.0)",
+ "type": "coreclr",
+ "request": "launch",
+ "program": "dotnet",
+ "args": [
+ "${workspaceRoot}/bin/Debug/netcoreapp2.0/osu.Game.Rulesets.Catch.Tests.dll"
+ ],
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Debug, dotnet)",
+ "env": {},
+ "console": "internalConsole"
+ },
+ {
+ "name": "VisualTests (Release, netcoreapp2.0)",
+ "type": "coreclr",
+ "request": "launch",
+ "program": "dotnet",
+ "args": [
+ "${workspaceRoot}/bin/Debug/netcoreapp2.0/osu.Game.Rulesets.Catch.Tests.dll"
+ ],
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Release, dotnet)",
+ "env": {},
+ "console": "internalConsole"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Catch.Tests/.vscode/tasks.json b/osu.Game.Rulesets.Catch.Tests/.vscode/tasks.json
new file mode 100644
index 0000000000..d21bb8a69a
--- /dev/null
+++ b/osu.Game.Rulesets.Catch.Tests/.vscode/tasks.json
@@ -0,0 +1,87 @@
+{
+ // See https://go.microsoft.com/fwlink/?LinkId=733558
+ // for the documentation about the tasks.json format
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "Build (Debug, msbuild)",
+ "type": "shell",
+ "command": "msbuild",
+ "args": [
+ "osu.Game.Rulesets.Catch.Tests.csproj",
+ "/p:TargetFramework=net461",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Build (Release, msbuild)",
+ "type": "shell",
+ "command": "msbuild",
+ "args": [
+ "osu.Game.Rulesets.Catch.Tests.csproj",
+ "/p:Configuration=Release",
+ "/p:TargetFramework=net461",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Build (Debug, dotnet)",
+ "type": "shell",
+ "command": "dotnet",
+ "args": [
+ "build",
+ "--no-restore",
+ "osu.Game.Rulesets.Catch.Tests.csproj",
+ "/p:TargetFramework=netcoreapp2.0",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Build (Release, dotnet)",
+ "type": "shell",
+ "command": "dotnet",
+ "args": [
+ "build",
+ "--no-restore",
+ "osu.Game.Rulesets.Catch.Tests.csproj",
+ "/p:TargetFramework=netcoreapp2.0",
+ "/p:Configuration=Release",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Restore (net461)",
+ "type": "shell",
+ "command": "nuget",
+ "args": [
+ "restore"
+ ],
+ "problemMatcher": []
+ },
+ {
+ "label": "Restore (netcoreapp2.0)",
+ "type": "shell",
+ "command": "dotnet",
+ "args": [
+ "restore"
+ ],
+ "problemMatcher": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Catch/Tests/CatchBeatmapConversionTest.cs b/osu.Game.Rulesets.Catch.Tests/CatchBeatmapConversionTest.cs
similarity index 100%
rename from osu.Game.Rulesets.Catch/Tests/CatchBeatmapConversionTest.cs
rename to osu.Game.Rulesets.Catch.Tests/CatchBeatmapConversionTest.cs
diff --git a/osu.Game.Rulesets.Catch/Tests/TestCaseBananaShower.cs b/osu.Game.Rulesets.Catch.Tests/TestCaseBananaShower.cs
similarity index 100%
rename from osu.Game.Rulesets.Catch/Tests/TestCaseBananaShower.cs
rename to osu.Game.Rulesets.Catch.Tests/TestCaseBananaShower.cs
diff --git a/osu.Game.Rulesets.Catch/Tests/TestCaseCatchPlayer.cs b/osu.Game.Rulesets.Catch.Tests/TestCaseCatchPlayer.cs
similarity index 100%
rename from osu.Game.Rulesets.Catch/Tests/TestCaseCatchPlayer.cs
rename to osu.Game.Rulesets.Catch.Tests/TestCaseCatchPlayer.cs
diff --git a/osu.Game.Rulesets.Catch/Tests/TestCaseCatchStacker.cs b/osu.Game.Rulesets.Catch.Tests/TestCaseCatchStacker.cs
similarity index 100%
rename from osu.Game.Rulesets.Catch/Tests/TestCaseCatchStacker.cs
rename to osu.Game.Rulesets.Catch.Tests/TestCaseCatchStacker.cs
diff --git a/osu.Game.Rulesets.Catch/Tests/TestCaseCatcherArea.cs b/osu.Game.Rulesets.Catch.Tests/TestCaseCatcherArea.cs
similarity index 100%
rename from osu.Game.Rulesets.Catch/Tests/TestCaseCatcherArea.cs
rename to osu.Game.Rulesets.Catch.Tests/TestCaseCatcherArea.cs
diff --git a/osu.Game.Rulesets.Catch/Tests/TestCaseFruitObjects.cs b/osu.Game.Rulesets.Catch.Tests/TestCaseFruitObjects.cs
similarity index 100%
rename from osu.Game.Rulesets.Catch/Tests/TestCaseFruitObjects.cs
rename to osu.Game.Rulesets.Catch.Tests/TestCaseFruitObjects.cs
diff --git a/osu.Game.Rulesets.Catch/Tests/TestCaseHyperdash.cs b/osu.Game.Rulesets.Catch.Tests/TestCaseHyperdash.cs
similarity index 100%
rename from osu.Game.Rulesets.Catch/Tests/TestCaseHyperdash.cs
rename to osu.Game.Rulesets.Catch.Tests/TestCaseHyperdash.cs
diff --git a/osu.Game.Rulesets.Catch/Tests/TestCasePerformancePoints.cs b/osu.Game.Rulesets.Catch.Tests/TestCasePerformancePoints.cs
similarity index 100%
rename from osu.Game.Rulesets.Catch/Tests/TestCasePerformancePoints.cs
rename to osu.Game.Rulesets.Catch.Tests/TestCasePerformancePoints.cs
diff --git a/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj b/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj
new file mode 100644
index 0000000000..51c6d18f1f
--- /dev/null
+++ b/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj
@@ -0,0 +1,10 @@
+
+
+
+ WinExe
+ netcoreapp2.0;net461
+
+
+
+
+
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModHardRock.cs b/osu.Game.Rulesets.Catch/Mods/CatchModHardRock.cs
index 9479c9d9b0..ed33bf7124 100644
--- a/osu.Game.Rulesets.Catch/Mods/CatchModHardRock.cs
+++ b/osu.Game.Rulesets.Catch/Mods/CatchModHardRock.cs
@@ -8,5 +8,6 @@ namespace osu.Game.Rulesets.Catch.Mods
public class CatchModHardRock : ModHardRock
{
public override double ScoreMultiplier => 1.12;
+ public override bool Ranked => true;
}
}
diff --git a/osu.Game.Rulesets.Catch/Properties/AssemblyInfo.cs b/osu.Game.Rulesets.Catch/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..00fd8247d8
--- /dev/null
+++ b/osu.Game.Rulesets.Catch/Properties/AssemblyInfo.cs
@@ -0,0 +1,12 @@
+// Copyright (c) 2007-2018 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using System.Runtime.CompilerServices;
+using osu.Framework.Testing;
+
+// We publish our internal attributes to other sub-projects of the framework.
+// Note, that we omit visual tests as they are meant to test the framework
+// behavior "in the wild".
+
+[assembly: InternalsVisibleTo("osu.Game.Rulesets.Catch.Tests")]
+[assembly: InternalsVisibleTo(DynamicClassCompiler.DYNAMIC_ASSEMBLY_NAME)]
diff --git a/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs b/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs
index 39b7ffb387..8bb206543b 100644
--- a/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs
+++ b/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs
@@ -57,7 +57,6 @@ namespace osu.Game.Rulesets.Catch.UI
public override void Add(DrawableHitObject h)
{
- h.Depth = (float)h.HitObject.StartTime;
h.OnJudgement += onJudgement;
base.Add(h);
diff --git a/osu.Game.Rulesets.Catch/osu.Game.Rulesets.Catch.csproj b/osu.Game.Rulesets.Catch/osu.Game.Rulesets.Catch.csproj
index aa4d06cf64..883cac67d1 100644
--- a/osu.Game.Rulesets.Catch/osu.Game.Rulesets.Catch.csproj
+++ b/osu.Game.Rulesets.Catch/osu.Game.Rulesets.Catch.csproj
@@ -5,25 +5,9 @@
Library
AnyCPU
true
- ppy Pty Ltd
- 1.0.0.0
- ppy Pty Ltd 2007-2017
- osu.Game.Rulesets.Catch
catch the fruit. to the beat.
- osu.Game.Rulesets.Catch
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Mania.Tests/.vscode/launch.json b/osu.Game.Rulesets.Mania.Tests/.vscode/launch.json
new file mode 100644
index 0000000000..c71178059b
--- /dev/null
+++ b/osu.Game.Rulesets.Mania.Tests/.vscode/launch.json
@@ -0,0 +1,59 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "VisualTests (Debug, net461)",
+ "windows": {
+ "type": "clr"
+ },
+ "type": "mono",
+ "request": "launch",
+ "program": "${workspaceRoot}/bin/Debug/net461/osu.Game.Rulesets.Mania.Tests.exe",
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Debug, msbuild)",
+ "runtimeExecutable": null,
+ "env": {},
+ "console": "internalConsole"
+ },
+ {
+ "name": "VisualTests (Release, net461)",
+ "windows": {
+ "type": "clr"
+ },
+ "type": "mono",
+ "request": "launch",
+ "program": "${workspaceRoot}/bin/Debug/net461/osu.Game.Rulesets.Mania.Tests.exe",
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Release, msbuild)",
+ "runtimeExecutable": null,
+ "env": {},
+ "console": "internalConsole"
+ },
+ {
+ "name": "VisualTests (Debug, netcoreapp2.0)",
+ "type": "coreclr",
+ "request": "launch",
+ "program": "dotnet",
+ "args": [
+ "${workspaceRoot}/bin/Debug/netcoreapp2.0/osu.Game.Rulesets.Mania.Tests.dll"
+ ],
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Debug, dotnet)",
+ "env": {},
+ "console": "internalConsole"
+ },
+ {
+ "name": "VisualTests (Release, netcoreapp2.0)",
+ "type": "coreclr",
+ "request": "launch",
+ "program": "dotnet",
+ "args": [
+ "${workspaceRoot}/bin/Debug/netcoreapp2.0/osu.Game.Rulesets.Mania.Tests.dll"
+ ],
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Release, dotnet)",
+ "env": {},
+ "console": "internalConsole"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Mania.Tests/.vscode/tasks.json b/osu.Game.Rulesets.Mania.Tests/.vscode/tasks.json
new file mode 100644
index 0000000000..781e89598f
--- /dev/null
+++ b/osu.Game.Rulesets.Mania.Tests/.vscode/tasks.json
@@ -0,0 +1,87 @@
+{
+ // See https://go.microsoft.com/fwlink/?LinkId=733558
+ // for the documentation about the tasks.json format
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "Build (Debug, msbuild)",
+ "type": "shell",
+ "command": "msbuild",
+ "args": [
+ "osu.Game.Rulesets.Mania.Tests.csproj",
+ "/p:TargetFramework=net461",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Build (Release, msbuild)",
+ "type": "shell",
+ "command": "msbuild",
+ "args": [
+ "osu.Game.Rulesets.Mania.Tests.csproj",
+ "/p:Configuration=Release",
+ "/p:TargetFramework=net461",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Build (Debug, dotnet)",
+ "type": "shell",
+ "command": "dotnet",
+ "args": [
+ "build",
+ "--no-restore",
+ "osu.Game.Rulesets.Mania.Tests.csproj",
+ "/p:TargetFramework=netcoreapp2.0",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Build (Release, dotnet)",
+ "type": "shell",
+ "command": "dotnet",
+ "args": [
+ "build",
+ "--no-restore",
+ "osu.Game.Rulesets.Mania.Tests.csproj",
+ "/p:TargetFramework=netcoreapp2.0",
+ "/p:Configuration=Release",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Restore (net461)",
+ "type": "shell",
+ "command": "nuget",
+ "args": [
+ "restore"
+ ],
+ "problemMatcher": []
+ },
+ {
+ "label": "Restore (netcoreapp2.0)",
+ "type": "shell",
+ "command": "dotnet",
+ "args": [
+ "restore"
+ ],
+ "problemMatcher": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Mania/Tests/ManiaBeatmapConversionTest.cs b/osu.Game.Rulesets.Mania.Tests/ManiaBeatmapConversionTest.cs
similarity index 100%
rename from osu.Game.Rulesets.Mania/Tests/ManiaBeatmapConversionTest.cs
rename to osu.Game.Rulesets.Mania.Tests/ManiaBeatmapConversionTest.cs
diff --git a/osu.Game.Rulesets.Mania/Tests/TestCaseAutoGeneration.cs b/osu.Game.Rulesets.Mania.Tests/TestCaseAutoGeneration.cs
similarity index 100%
rename from osu.Game.Rulesets.Mania/Tests/TestCaseAutoGeneration.cs
rename to osu.Game.Rulesets.Mania.Tests/TestCaseAutoGeneration.cs
diff --git a/osu.Game.Rulesets.Mania/Tests/TestCaseManiaHitObjects.cs b/osu.Game.Rulesets.Mania.Tests/TestCaseManiaHitObjects.cs
similarity index 100%
rename from osu.Game.Rulesets.Mania/Tests/TestCaseManiaHitObjects.cs
rename to osu.Game.Rulesets.Mania.Tests/TestCaseManiaHitObjects.cs
diff --git a/osu.Game.Rulesets.Mania/Tests/TestCaseManiaPlayfield.cs b/osu.Game.Rulesets.Mania.Tests/TestCaseManiaPlayfield.cs
similarity index 100%
rename from osu.Game.Rulesets.Mania/Tests/TestCaseManiaPlayfield.cs
rename to osu.Game.Rulesets.Mania.Tests/TestCaseManiaPlayfield.cs
diff --git a/osu.Game.Rulesets.Mania/Tests/TestCasePerformancePoints.cs b/osu.Game.Rulesets.Mania.Tests/TestCasePerformancePoints.cs
similarity index 100%
rename from osu.Game.Rulesets.Mania/Tests/TestCasePerformancePoints.cs
rename to osu.Game.Rulesets.Mania.Tests/TestCasePerformancePoints.cs
diff --git a/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj b/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj
new file mode 100644
index 0000000000..187d5e47b9
--- /dev/null
+++ b/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj
@@ -0,0 +1,10 @@
+
+
+
+ WinExe
+ netcoreapp2.0;net461
+
+
+
+
+
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Mania/Properties/AssemblyInfo.cs b/osu.Game.Rulesets.Mania/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..c2c65433ec
--- /dev/null
+++ b/osu.Game.Rulesets.Mania/Properties/AssemblyInfo.cs
@@ -0,0 +1,12 @@
+// Copyright (c) 2007-2018 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using System.Runtime.CompilerServices;
+using osu.Framework.Testing;
+
+// We publish our internal attributes to other sub-projects of the framework.
+// Note, that we omit visual tests as they are meant to test the framework
+// behavior "in the wild".
+
+[assembly: InternalsVisibleTo("osu.Game.Rulesets.Mania.Tests")]
+[assembly: InternalsVisibleTo(DynamicClassCompiler.DYNAMIC_ASSEMBLY_NAME)]
diff --git a/osu.Game.Rulesets.Mania/UI/Column.cs b/osu.Game.Rulesets.Mania/UI/Column.cs
index 21f00c003b..15c9a83b78 100644
--- a/osu.Game.Rulesets.Mania/UI/Column.cs
+++ b/osu.Game.Rulesets.Mania/UI/Column.cs
@@ -205,7 +205,6 @@ namespace osu.Game.Rulesets.Mania.UI
/// The DrawableHitObject to add.
public override void Add(DrawableHitObject hitObject)
{
- hitObject.Depth = (float)hitObject.HitObject.StartTime;
hitObject.AccentColour = AccentColour;
hitObject.OnJudgement += OnJudgement;
@@ -263,21 +262,13 @@ namespace osu.Game.Rulesets.Mania.UI
public bool OnPressed(ManiaAction action)
{
- // Play the sounds of the next hitobject
- if (HitObjects.AliveObjects.Any())
- {
- // If there are alive hitobjects, we can abuse the fact that AliveObjects are sorted by time (see: Add())
- HitObjects.AliveObjects.First().PlaySamples();
- }
- else
- {
- // If not, we do a slow search - we might want to do a BinarySearch here if this becomes problematic
- // We fallback to LastOrDefault() if we're beyond the last note in the map
- var hitObject = HitObjects.Objects.FirstOrDefault(h => h.HitObject.StartTime > Time.Current) ?? HitObjects.Objects.LastOrDefault();
- hitObject?.PlaySamples();
- }
+ if (action != Action)
+ return false;
- return false;
+ var hitObject = HitObjects.Objects.LastOrDefault(h => h.HitObject.StartTime > Time.Current) ?? HitObjects.Objects.FirstOrDefault();
+ hitObject?.PlaySamples();
+
+ return true;
}
public bool OnReleased(ManiaAction action) => false;
diff --git a/osu.Game.Rulesets.Mania/osu.Game.Rulesets.Mania.csproj b/osu.Game.Rulesets.Mania/osu.Game.Rulesets.Mania.csproj
index a1f08e9299..a086da0565 100644
--- a/osu.Game.Rulesets.Mania/osu.Game.Rulesets.Mania.csproj
+++ b/osu.Game.Rulesets.Mania/osu.Game.Rulesets.Mania.csproj
@@ -5,25 +5,9 @@
Library
AnyCPU
true
- ppy Pty Ltd
- 1.0.0.0
- ppy Pty Ltd 2007-2017
- osu.Game.Rulests.Mania
smash the keys. to the beat.
- osu.Game.Rulests.Mania
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Osu.Tests/.vscode/launch.json b/osu.Game.Rulesets.Osu.Tests/.vscode/launch.json
new file mode 100644
index 0000000000..24431eb8de
--- /dev/null
+++ b/osu.Game.Rulesets.Osu.Tests/.vscode/launch.json
@@ -0,0 +1,59 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "VisualTests (Debug, net461)",
+ "windows": {
+ "type": "clr"
+ },
+ "type": "mono",
+ "request": "launch",
+ "program": "${workspaceRoot}/bin/Debug/net461/osu.Game.Rulesets.Osu.Tests.exe",
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Debug, msbuild)",
+ "runtimeExecutable": null,
+ "env": {},
+ "console": "internalConsole"
+ },
+ {
+ "name": "VisualTests (Release, net461)",
+ "windows": {
+ "type": "clr"
+ },
+ "type": "mono",
+ "request": "launch",
+ "program": "${workspaceRoot}/bin/Debug/net461/osu.Game.Rulesets.Osu.Tests.exe",
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Release, msbuild)",
+ "runtimeExecutable": null,
+ "env": {},
+ "console": "internalConsole"
+ },
+ {
+ "name": "VisualTests (Debug, netcoreapp2.0)",
+ "type": "coreclr",
+ "request": "launch",
+ "program": "dotnet",
+ "args": [
+ "${workspaceRoot}/bin/Debug/netcoreapp2.0/osu.Game.Rulesets.Osu.Tests.dll"
+ ],
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Debug, dotnet)",
+ "env": {},
+ "console": "internalConsole"
+ },
+ {
+ "name": "VisualTests (Release, netcoreapp2.0)",
+ "type": "coreclr",
+ "request": "launch",
+ "program": "dotnet",
+ "args": [
+ "${workspaceRoot}/bin/Debug/netcoreapp2.0/osu.Game.Rulesets.Osu.Tests.dll"
+ ],
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Release, dotnet)",
+ "env": {},
+ "console": "internalConsole"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Osu.Tests/.vscode/tasks.json b/osu.Game.Rulesets.Osu.Tests/.vscode/tasks.json
new file mode 100644
index 0000000000..734e15353b
--- /dev/null
+++ b/osu.Game.Rulesets.Osu.Tests/.vscode/tasks.json
@@ -0,0 +1,87 @@
+{
+ // See https://go.microsoft.com/fwlink/?LinkId=733558
+ // for the documentation about the tasks.json format
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "Build (Debug, msbuild)",
+ "type": "shell",
+ "command": "msbuild",
+ "args": [
+ "osu.Game.Rulesets.Osu.Tests.csproj",
+ "/p:TargetFramework=net461",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Build (Release, msbuild)",
+ "type": "shell",
+ "command": "msbuild",
+ "args": [
+ "osu.Game.Rulesets.Osu.Tests.csproj",
+ "/p:Configuration=Release",
+ "/p:TargetFramework=net461",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Build (Debug, dotnet)",
+ "type": "shell",
+ "command": "dotnet",
+ "args": [
+ "build",
+ "--no-restore",
+ "osu.Game.Rulesets.Osu.Tests.csproj",
+ "/p:TargetFramework=netcoreapp2.0",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Build (Release, dotnet)",
+ "type": "shell",
+ "command": "dotnet",
+ "args": [
+ "build",
+ "--no-restore",
+ "osu.Game.Rulesets.Osu.Tests.csproj",
+ "/p:TargetFramework=netcoreapp2.0",
+ "/p:Configuration=Release",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Restore (net461)",
+ "type": "shell",
+ "command": "nuget",
+ "args": [
+ "restore"
+ ],
+ "problemMatcher": []
+ },
+ {
+ "label": "Restore (netcoreapp2.0)",
+ "type": "shell",
+ "command": "dotnet",
+ "args": [
+ "restore"
+ ],
+ "problemMatcher": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Osu/Tests/OsuBeatmapConversionTest.cs b/osu.Game.Rulesets.Osu.Tests/OsuBeatmapConversionTest.cs
similarity index 100%
rename from osu.Game.Rulesets.Osu/Tests/OsuBeatmapConversionTest.cs
rename to osu.Game.Rulesets.Osu.Tests/OsuBeatmapConversionTest.cs
diff --git a/osu.Game.Rulesets.Osu/Tests/TestCaseEditor.cs b/osu.Game.Rulesets.Osu.Tests/TestCaseEditor.cs
similarity index 100%
rename from osu.Game.Rulesets.Osu/Tests/TestCaseEditor.cs
rename to osu.Game.Rulesets.Osu.Tests/TestCaseEditor.cs
diff --git a/osu.Game.Rulesets.Osu/Tests/TestCaseGameplayCursor.cs b/osu.Game.Rulesets.Osu.Tests/TestCaseGameplayCursor.cs
similarity index 100%
rename from osu.Game.Rulesets.Osu/Tests/TestCaseGameplayCursor.cs
rename to osu.Game.Rulesets.Osu.Tests/TestCaseGameplayCursor.cs
diff --git a/osu.Game.Rulesets.Osu/Tests/TestCaseHitCircle.cs b/osu.Game.Rulesets.Osu.Tests/TestCaseHitCircle.cs
similarity index 100%
rename from osu.Game.Rulesets.Osu/Tests/TestCaseHitCircle.cs
rename to osu.Game.Rulesets.Osu.Tests/TestCaseHitCircle.cs
diff --git a/osu.Game.Rulesets.Osu/Tests/TestCaseHitCircleHidden.cs b/osu.Game.Rulesets.Osu.Tests/TestCaseHitCircleHidden.cs
similarity index 100%
rename from osu.Game.Rulesets.Osu/Tests/TestCaseHitCircleHidden.cs
rename to osu.Game.Rulesets.Osu.Tests/TestCaseHitCircleHidden.cs
diff --git a/osu.Game.Rulesets.Osu/Tests/TestCasePerformancePoints.cs b/osu.Game.Rulesets.Osu.Tests/TestCasePerformancePoints.cs
similarity index 100%
rename from osu.Game.Rulesets.Osu/Tests/TestCasePerformancePoints.cs
rename to osu.Game.Rulesets.Osu.Tests/TestCasePerformancePoints.cs
diff --git a/osu.Game.Rulesets.Osu/Tests/TestCaseSlider.cs b/osu.Game.Rulesets.Osu.Tests/TestCaseSlider.cs
similarity index 100%
rename from osu.Game.Rulesets.Osu/Tests/TestCaseSlider.cs
rename to osu.Game.Rulesets.Osu.Tests/TestCaseSlider.cs
diff --git a/osu.Game.Rulesets.Osu/Tests/TestCaseSliderHidden.cs b/osu.Game.Rulesets.Osu.Tests/TestCaseSliderHidden.cs
similarity index 100%
rename from osu.Game.Rulesets.Osu/Tests/TestCaseSliderHidden.cs
rename to osu.Game.Rulesets.Osu.Tests/TestCaseSliderHidden.cs
diff --git a/osu.Game.Rulesets.Osu/Tests/TestCaseSpinner.cs b/osu.Game.Rulesets.Osu.Tests/TestCaseSpinner.cs
similarity index 100%
rename from osu.Game.Rulesets.Osu/Tests/TestCaseSpinner.cs
rename to osu.Game.Rulesets.Osu.Tests/TestCaseSpinner.cs
diff --git a/osu.Game.Rulesets.Osu/Tests/TestCaseSpinnerHidden.cs b/osu.Game.Rulesets.Osu.Tests/TestCaseSpinnerHidden.cs
similarity index 100%
rename from osu.Game.Rulesets.Osu/Tests/TestCaseSpinnerHidden.cs
rename to osu.Game.Rulesets.Osu.Tests/TestCaseSpinnerHidden.cs
diff --git a/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj b/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj
new file mode 100644
index 0000000000..b2b524a71c
--- /dev/null
+++ b/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj
@@ -0,0 +1,10 @@
+
+
+
+ WinExe
+ netcoreapp2.0;net461
+
+
+
+
+
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModHardRock.cs b/osu.Game.Rulesets.Osu/Mods/OsuModHardRock.cs
index 74c3585d3d..29bf3e248d 100644
--- a/osu.Game.Rulesets.Osu/Mods/OsuModHardRock.cs
+++ b/osu.Game.Rulesets.Osu/Mods/OsuModHardRock.cs
@@ -14,6 +14,7 @@ namespace osu.Game.Rulesets.Osu.Mods
public class OsuModHardRock : ModHardRock, IApplicableToHitObject
{
public override double ScoreMultiplier => 1.06;
+ public override bool Ranked => true;
public void ApplyToHitObject(OsuHitObject hitObject)
{
diff --git a/osu.Game.Rulesets.Osu/Properties/AssemblyInfo.cs b/osu.Game.Rulesets.Osu/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..7532646a32
--- /dev/null
+++ b/osu.Game.Rulesets.Osu/Properties/AssemblyInfo.cs
@@ -0,0 +1,12 @@
+// Copyright (c) 2007-2018 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using System.Runtime.CompilerServices;
+using osu.Framework.Testing;
+
+// We publish our internal attributes to other sub-projects of the framework.
+// Note, that we omit visual tests as they are meant to test the framework
+// behavior "in the wild".
+
+[assembly: InternalsVisibleTo("osu.Game.Rulesets.Osu.Tests")]
+[assembly: InternalsVisibleTo(DynamicClassCompiler.DYNAMIC_ASSEMBLY_NAME)]
diff --git a/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs b/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs
index 98a8096678..0c5d757474 100644
--- a/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs
+++ b/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs
@@ -55,8 +55,6 @@ namespace osu.Game.Rulesets.Osu.UI
public override void Add(DrawableHitObject h)
{
- h.Depth = (float)h.HitObject.StartTime;
-
h.OnJudgement += onJudgement;
var c = h as IDrawableHitObjectWithProxiedApproach;
diff --git a/osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj b/osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj
index a58d3b6795..b0ca314551 100644
--- a/osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj
+++ b/osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj
@@ -5,25 +5,9 @@
Library
AnyCPU
true
- ppy Pty Ltd
- 1.0.0.0
- ppy Pty Ltd 2007-2017
- osu.Game.Rulesets.Osu
click the circles. to the beat.
- osu.Game.Rulesets.Osu
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Taiko.Tests/.vscode/launch.json b/osu.Game.Rulesets.Taiko.Tests/.vscode/launch.json
new file mode 100644
index 0000000000..caa90c32ce
--- /dev/null
+++ b/osu.Game.Rulesets.Taiko.Tests/.vscode/launch.json
@@ -0,0 +1,59 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "VisualTests (Debug, net461)",
+ "windows": {
+ "type": "clr"
+ },
+ "type": "mono",
+ "request": "launch",
+ "program": "${workspaceRoot}/bin/Debug/net461/osu.Game.Rulesets.Taiko.Tests.exe",
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Debug, msbuild)",
+ "runtimeExecutable": null,
+ "env": {},
+ "console": "internalConsole"
+ },
+ {
+ "name": "VisualTests (Release, net461)",
+ "windows": {
+ "type": "clr"
+ },
+ "type": "mono",
+ "request": "launch",
+ "program": "${workspaceRoot}/bin/Debug/net461/osu.Game.Rulesets.Taiko.Tests.exe",
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Release, msbuild)",
+ "runtimeExecutable": null,
+ "env": {},
+ "console": "internalConsole"
+ },
+ {
+ "name": "VisualTests (Debug, netcoreapp2.0)",
+ "type": "coreclr",
+ "request": "launch",
+ "program": "dotnet",
+ "args": [
+ "${workspaceRoot}/bin/Debug/netcoreapp2.0/osu.Game.Rulesets.Taiko.Tests.dll"
+ ],
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Debug, dotnet)",
+ "env": {},
+ "console": "internalConsole"
+ },
+ {
+ "name": "VisualTests (Release, netcoreapp2.0)",
+ "type": "coreclr",
+ "request": "launch",
+ "program": "dotnet",
+ "args": [
+ "${workspaceRoot}/bin/Debug/netcoreapp2.0/osu.Game.Rulesets.Taiko.Tests.dll"
+ ],
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": "Build (Release, dotnet)",
+ "env": {},
+ "console": "internalConsole"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Taiko.Tests/.vscode/tasks.json b/osu.Game.Rulesets.Taiko.Tests/.vscode/tasks.json
new file mode 100644
index 0000000000..13044e1ccb
--- /dev/null
+++ b/osu.Game.Rulesets.Taiko.Tests/.vscode/tasks.json
@@ -0,0 +1,87 @@
+{
+ // See https://go.microsoft.com/fwlink/?LinkId=733558
+ // for the documentation about the tasks.json format
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "Build (Debug, msbuild)",
+ "type": "shell",
+ "command": "msbuild",
+ "args": [
+ "osu.Game.Rulesets.Taiko.Tests.csproj",
+ "/p:TargetFramework=net461",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Build (Release, msbuild)",
+ "type": "shell",
+ "command": "msbuild",
+ "args": [
+ "osu.Game.Rulesets.Taiko.Tests.csproj",
+ "/p:Configuration=Release",
+ "/p:TargetFramework=net461",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Build (Debug, dotnet)",
+ "type": "shell",
+ "command": "dotnet",
+ "args": [
+ "build",
+ "--no-restore",
+ "osu.Game.Rulesets.Taiko.Tests.csproj",
+ "/p:TargetFramework=netcoreapp2.0",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Build (Release, dotnet)",
+ "type": "shell",
+ "command": "dotnet",
+ "args": [
+ "build",
+ "--no-restore",
+ "osu.Game.Rulesets.Taiko.Tests.csproj",
+ "/p:TargetFramework=netcoreapp2.0",
+ "/p:Configuration=Release",
+ "/p:GenerateFullPaths=true",
+ "/m",
+ "/verbosity:m"
+ ],
+ "group": "build",
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "Restore (net461)",
+ "type": "shell",
+ "command": "nuget",
+ "args": [
+ "restore"
+ ],
+ "problemMatcher": []
+ },
+ {
+ "label": "Restore (netcoreapp2.0)",
+ "type": "shell",
+ "command": "dotnet",
+ "args": [
+ "restore"
+ ],
+ "problemMatcher": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Taiko/Tests/TaikoBeatmapConversionTest.cs b/osu.Game.Rulesets.Taiko.Tests/TaikoBeatmapConversionTest.cs
similarity index 100%
rename from osu.Game.Rulesets.Taiko/Tests/TaikoBeatmapConversionTest.cs
rename to osu.Game.Rulesets.Taiko.Tests/TaikoBeatmapConversionTest.cs
diff --git a/osu.Game.Rulesets.Taiko/Tests/TestCaseInputDrum.cs b/osu.Game.Rulesets.Taiko.Tests/TestCaseInputDrum.cs
similarity index 100%
rename from osu.Game.Rulesets.Taiko/Tests/TestCaseInputDrum.cs
rename to osu.Game.Rulesets.Taiko.Tests/TestCaseInputDrum.cs
diff --git a/osu.Game.Rulesets.Taiko/Tests/TestCasePerformancePoints.cs b/osu.Game.Rulesets.Taiko.Tests/TestCasePerformancePoints.cs
similarity index 100%
rename from osu.Game.Rulesets.Taiko/Tests/TestCasePerformancePoints.cs
rename to osu.Game.Rulesets.Taiko.Tests/TestCasePerformancePoints.cs
diff --git a/osu.Game.Rulesets.Taiko/Tests/TestCaseTaikoPlayfield.cs b/osu.Game.Rulesets.Taiko.Tests/TestCaseTaikoPlayfield.cs
similarity index 100%
rename from osu.Game.Rulesets.Taiko/Tests/TestCaseTaikoPlayfield.cs
rename to osu.Game.Rulesets.Taiko.Tests/TestCaseTaikoPlayfield.cs
diff --git a/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj b/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj
new file mode 100644
index 0000000000..df73fa61cb
--- /dev/null
+++ b/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj
@@ -0,0 +1,10 @@
+
+
+
+ WinExe
+ netcoreapp2.0;net461
+
+
+
+
+
\ No newline at end of file
diff --git a/osu.Game.Rulesets.Taiko/Mods/TaikoModHardRock.cs b/osu.Game.Rulesets.Taiko/Mods/TaikoModHardRock.cs
index 435a0c1613..ba304c41d8 100644
--- a/osu.Game.Rulesets.Taiko/Mods/TaikoModHardRock.cs
+++ b/osu.Game.Rulesets.Taiko/Mods/TaikoModHardRock.cs
@@ -8,5 +8,6 @@ namespace osu.Game.Rulesets.Taiko.Mods
public class TaikoModHardRock : ModHardRock
{
public override double ScoreMultiplier => 1.06;
+ public override bool Ranked => true;
}
}
diff --git a/osu.Game.Rulesets.Taiko/Properties/AssemblyInfo.cs b/osu.Game.Rulesets.Taiko/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..b7ed9f86b0
--- /dev/null
+++ b/osu.Game.Rulesets.Taiko/Properties/AssemblyInfo.cs
@@ -0,0 +1,12 @@
+// Copyright (c) 2007-2018 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using System.Runtime.CompilerServices;
+using osu.Framework.Testing;
+
+// We publish our internal attributes to other sub-projects of the framework.
+// Note, that we omit visual tests as they are meant to test the framework
+// behavior "in the wild".
+
+[assembly: InternalsVisibleTo("osu.Game.Rulesets.Taiko.Tests")]
+[assembly: InternalsVisibleTo(DynamicClassCompiler.DYNAMIC_ASSEMBLY_NAME)]
diff --git a/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs b/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs
index 75aaceaecb..effb9eb54f 100644
--- a/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs
+++ b/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs
@@ -208,8 +208,6 @@ namespace osu.Game.Rulesets.Taiko.UI
public override void Add(DrawableHitObject h)
{
- h.Depth = (float)h.HitObject.StartTime;
-
h.OnJudgement += OnJudgement;
base.Add(h);
diff --git a/osu.Game.Rulesets.Taiko/osu.Game.Rulesets.Taiko.csproj b/osu.Game.Rulesets.Taiko/osu.Game.Rulesets.Taiko.csproj
index d7794aaafd..002d6a7e8d 100644
--- a/osu.Game.Rulesets.Taiko/osu.Game.Rulesets.Taiko.csproj
+++ b/osu.Game.Rulesets.Taiko/osu.Game.Rulesets.Taiko.csproj
@@ -5,25 +5,9 @@
Library
AnyCPU
true
- ppy Pty Ltd
- 1.0.0.0
- ppy Pty Ltd 2007-2017
- osu.Game.Rulesets.Taiko
bash the drum. to the beat.
- osu.Game.Rulesets.Taiko
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/osu.Game.Tests/osu.Game.Tests.csproj b/osu.Game.Tests/osu.Game.Tests.csproj
index 5b9a1f11e4..2646e953cf 100644
--- a/osu.Game.Tests/osu.Game.Tests.csproj
+++ b/osu.Game.Tests/osu.Game.Tests.csproj
@@ -1,39 +1,13 @@
-
+
- netstandard2.0
- Library
- AnyCPU
- true
- ppy Pty Ltd
- 1.0.0.0
- ppy Pty Ltd 2007-2017
- osu.Game.Tests
- osu.Game.Tests
-
- NU1701
+ WinExe
+ netcoreapp2.0;net461
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/osu.Game.props b/osu.Game.props
index 07abeb5539..87edafb97f 100644
--- a/osu.Game.props
+++ b/osu.Game.props
@@ -8,4 +8,14 @@
osu.licenseheader
+
+
+
+
+ ppy Pty Ltd
+ ppy Pty Ltd 2007-2018
+
+ NU1701
+
\ No newline at end of file
diff --git a/osu.Game/Rulesets/Mods/ModHardRock.cs b/osu.Game/Rulesets/Mods/ModHardRock.cs
index c998bc123f..c4c0f38faf 100644
--- a/osu.Game/Rulesets/Mods/ModHardRock.cs
+++ b/osu.Game/Rulesets/Mods/ModHardRock.cs
@@ -14,7 +14,6 @@ namespace osu.Game.Rulesets.Mods
public override FontAwesome Icon => FontAwesome.fa_osu_mod_hardrock;
public override ModType Type => ModType.DifficultyIncrease;
public override string Description => "Everything just got a bit harder...";
- public override bool Ranked => true;
public override Type[] IncompatibleMods => new[] { typeof(ModEasy) };
public void ApplyToDifficulty(BeatmapDifficulty difficulty)
diff --git a/osu.Game/Rulesets/UI/HitObjectContainer.cs b/osu.Game/Rulesets/UI/HitObjectContainer.cs
index c26a6cdff0..ecb10dfba2 100644
--- a/osu.Game/Rulesets/UI/HitObjectContainer.cs
+++ b/osu.Game/Rulesets/UI/HitObjectContainer.cs
@@ -3,6 +3,7 @@
using System.Collections.Generic;
using System.Linq;
+using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Rulesets.Objects.Drawables;
@@ -15,5 +16,15 @@ namespace osu.Game.Rulesets.UI
public virtual void Add(DrawableHitObject hitObject) => AddInternal(hitObject);
public virtual bool Remove(DrawableHitObject hitObject) => RemoveInternal(hitObject);
+
+ protected override int Compare(Drawable x, Drawable y)
+ {
+ if (!(x is DrawableHitObject xObj) || !(y is DrawableHitObject yObj))
+ return base.Compare(x, y);
+
+ // Put earlier hitobjects towards the end of the list, so they handle input first
+ int i = yObj.HitObject.StartTime.CompareTo(xObj.HitObject.StartTime);
+ return i == 0 ? CompareReverseChildID(x, y) : i;
+ }
}
}
diff --git a/osu.Desktop/OsuTestBrowser.cs b/osu.Game/Tests/OsuTestBrowser.cs
similarity index 87%
rename from osu.Desktop/OsuTestBrowser.cs
rename to osu.Game/Tests/OsuTestBrowser.cs
index 7aae2604af..6d9b28b5a7 100644
--- a/osu.Desktop/OsuTestBrowser.cs
+++ b/osu.Game/Tests/OsuTestBrowser.cs
@@ -3,12 +3,11 @@
using osu.Framework.Platform;
using osu.Framework.Testing;
-using osu.Game;
using osu.Game.Screens.Backgrounds;
-namespace osu.Desktop
+namespace osu.Game.Tests
{
- internal class OsuTestBrowser : OsuGameBase
+ public class OsuTestBrowser : OsuGameBase
{
protected override void LoadComplete()
{
diff --git a/osu.Game/Tests/VisualTestRunner.cs b/osu.Game/Tests/VisualTestRunner.cs
new file mode 100644
index 0000000000..d8a4143368
--- /dev/null
+++ b/osu.Game/Tests/VisualTestRunner.cs
@@ -0,0 +1,22 @@
+// Copyright (c) 2007-2018 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using System;
+using osu.Framework;
+using osu.Framework.Platform;
+
+namespace osu.Game.Tests
+{
+ public static class VisualTestRunner
+ {
+ [STAThread]
+ public static int Main(string[] args)
+ {
+ using (DesktopGameHost host = Host.GetSuitableHost(@"osu", true))
+ {
+ host.Run(new OsuTestBrowser());
+ return 0;
+ }
+ }
+ }
+}
diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj
index b42d76e331..367c3490d6 100644
--- a/osu.Game/osu.Game.csproj
+++ b/osu.Game/osu.Game.csproj
@@ -5,12 +5,6 @@
Library
AnyCPU
true
- ppy Pty Ltd
- 1.0.0.0
- ppy Pty Ltd 2007-2018
- osu.Game
- click the circles. to the beat.
- osu.Game
0
diff --git a/osu.TestProject.props b/osu.TestProject.props
new file mode 100644
index 0000000000..cb841f1940
--- /dev/null
+++ b/osu.TestProject.props
@@ -0,0 +1,29 @@
+
+
+
+ osu.Game.Tests.VisualTestRunner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VisualTestRunner.cs
+
+
+
+ false
+
+
\ No newline at end of file
diff --git a/osu.sln b/osu.sln
index 43a7fdf6c3..f017bf9eab 100644
--- a/osu.sln
+++ b/osu.sln
@@ -23,70 +23,74 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "osu.Game.Tests", "osu.Game.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "osu.Desktop", "osu.Desktop\osu.Desktop.csproj", "{419659FD-72EA-4678-9EB8-B22A746CED70}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "osu.Game.Rulesets.Catch.Tests", "osu.Game.Rulesets.Catch.Tests\osu.Game.Rulesets.Catch.Tests.csproj", "{3AD63355-D6B1-4365-8D31-5652C989BEF1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "osu.Game.Rulesets.Mania.Tests", "osu.Game.Rulesets.Mania.Tests\osu.Game.Rulesets.Mania.Tests.csproj", "{7E9E9C34-B204-406B-82E2-E01E900699CD}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "osu.Game.Rulesets.Taiko.Tests", "osu.Game.Rulesets.Taiko.Tests\osu.Game.Rulesets.Taiko.Tests.csproj", "{B698561F-FB28-46B1-857E-3CA7B92F9D70}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "osu.Game.Rulesets.Osu.Tests", "osu.Game.Rulesets.Osu.Tests\osu.Game.Rulesets.Osu.Tests.csproj", "{6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
- VisualTests|Any CPU = VisualTests|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Release|Any CPU.Build.0 = Release|Any CPU
- {2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.VisualTests|Any CPU.ActiveCfg = Debug|Any CPU
- {2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.VisualTests|Any CPU.Build.0 = Debug|Any CPU
{C76BF5B3-985E-4D39-95FE-97C9C879B83A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C76BF5B3-985E-4D39-95FE-97C9C879B83A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C76BF5B3-985E-4D39-95FE-97C9C879B83A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C76BF5B3-985E-4D39-95FE-97C9C879B83A}.Release|Any CPU.Build.0 = Release|Any CPU
- {C76BF5B3-985E-4D39-95FE-97C9C879B83A}.VisualTests|Any CPU.ActiveCfg = Debug|Any CPU
- {C76BF5B3-985E-4D39-95FE-97C9C879B83A}.VisualTests|Any CPU.Build.0 = Debug|Any CPU
{D9A367C9-4C1A-489F-9B05-A0CEA2B53B58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D9A367C9-4C1A-489F-9B05-A0CEA2B53B58}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D9A367C9-4C1A-489F-9B05-A0CEA2B53B58}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D9A367C9-4C1A-489F-9B05-A0CEA2B53B58}.Release|Any CPU.Build.0 = Release|Any CPU
- {D9A367C9-4C1A-489F-9B05-A0CEA2B53B58}.VisualTests|Any CPU.ActiveCfg = Debug|Any CPU
- {D9A367C9-4C1A-489F-9B05-A0CEA2B53B58}.VisualTests|Any CPU.Build.0 = Debug|Any CPU
{C92A607B-1FDD-4954-9F92-03FF547D9080}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C92A607B-1FDD-4954-9F92-03FF547D9080}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C92A607B-1FDD-4954-9F92-03FF547D9080}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C92A607B-1FDD-4954-9F92-03FF547D9080}.Release|Any CPU.Build.0 = Release|Any CPU
- {C92A607B-1FDD-4954-9F92-03FF547D9080}.VisualTests|Any CPU.ActiveCfg = Debug|Any CPU
- {C92A607B-1FDD-4954-9F92-03FF547D9080}.VisualTests|Any CPU.Build.0 = Debug|Any CPU
{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Release|Any CPU.Build.0 = Release|Any CPU
- {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.VisualTests|Any CPU.ActiveCfg = Debug|Any CPU
- {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.VisualTests|Any CPU.Build.0 = Debug|Any CPU
{F167E17A-7DE6-4AF5-B920-A5112296C695}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F167E17A-7DE6-4AF5-B920-A5112296C695}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F167E17A-7DE6-4AF5-B920-A5112296C695}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F167E17A-7DE6-4AF5-B920-A5112296C695}.Release|Any CPU.Build.0 = Release|Any CPU
- {F167E17A-7DE6-4AF5-B920-A5112296C695}.VisualTests|Any CPU.ActiveCfg = Debug|Any CPU
- {F167E17A-7DE6-4AF5-B920-A5112296C695}.VisualTests|Any CPU.Build.0 = Debug|Any CPU
{48F4582B-7687-4621-9CBE-5C24197CB536}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{48F4582B-7687-4621-9CBE-5C24197CB536}.Debug|Any CPU.Build.0 = Debug|Any CPU
{48F4582B-7687-4621-9CBE-5C24197CB536}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48F4582B-7687-4621-9CBE-5C24197CB536}.Release|Any CPU.Build.0 = Release|Any CPU
- {48F4582B-7687-4621-9CBE-5C24197CB536}.VisualTests|Any CPU.ActiveCfg = Debug|Any CPU
- {48F4582B-7687-4621-9CBE-5C24197CB536}.VisualTests|Any CPU.Build.0 = Debug|Any CPU
{BAEA2F74-0315-4667-84E0-ACAC0B4BF785}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BAEA2F74-0315-4667-84E0-ACAC0B4BF785}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {BAEA2F74-0315-4667-84E0-ACAC0B4BF785}.VisualTests|Any CPU.ActiveCfg = Debug|Any CPU
{54377672-20B1-40AF-8087-5CF73BF3953A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{54377672-20B1-40AF-8087-5CF73BF3953A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{54377672-20B1-40AF-8087-5CF73BF3953A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{54377672-20B1-40AF-8087-5CF73BF3953A}.Release|Any CPU.Build.0 = Release|Any CPU
- {54377672-20B1-40AF-8087-5CF73BF3953A}.VisualTests|Any CPU.ActiveCfg = Release|Any CPU
- {54377672-20B1-40AF-8087-5CF73BF3953A}.VisualTests|Any CPU.Build.0 = Release|Any CPU
{419659FD-72EA-4678-9EB8-B22A746CED70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{419659FD-72EA-4678-9EB8-B22A746CED70}.Debug|Any CPU.Build.0 = Debug|Any CPU
{419659FD-72EA-4678-9EB8-B22A746CED70}.Release|Any CPU.ActiveCfg = Release|Any CPU
{419659FD-72EA-4678-9EB8-B22A746CED70}.Release|Any CPU.Build.0 = Release|Any CPU
- {419659FD-72EA-4678-9EB8-B22A746CED70}.VisualTests|Any CPU.ActiveCfg = VisualTests|Any CPU
- {419659FD-72EA-4678-9EB8-B22A746CED70}.VisualTests|Any CPU.Build.0 = VisualTests|Any CPU
+ {3AD63355-D6B1-4365-8D31-5652C989BEF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3AD63355-D6B1-4365-8D31-5652C989BEF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3AD63355-D6B1-4365-8D31-5652C989BEF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3AD63355-D6B1-4365-8D31-5652C989BEF1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7E9E9C34-B204-406B-82E2-E01E900699CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7E9E9C34-B204-406B-82E2-E01E900699CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7E9E9C34-B204-406B-82E2-E01E900699CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7E9E9C34-B204-406B-82E2-E01E900699CD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B698561F-FB28-46B1-857E-3CA7B92F9D70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B698561F-FB28-46B1-857E-3CA7B92F9D70}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B698561F-FB28-46B1-857E-3CA7B92F9D70}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B698561F-FB28-46B1-857E-3CA7B92F9D70}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE