Bartłomiej Dach
76c74719a4
Add test for fallback decoder overwrite
...
LegacyDifficultyCalculatorBeatmapDecoder was registered as a fallback
decoder in commit ffde389
for future use in the server-side difficulty
calculation components. Due to the pre-existing fallback registrations
this causes a runtime crash when the diffcalc components are started.
Add a test reproducing this scenario to prevent the issue from
resurfacing in the future.
2019-10-04 17:00:51 +02:00
Dean Herbert
9eab56e2fc
Merge branch 'master' into editor-beatmap-changed-event
2019-10-04 17:58:58 +08:00
Dean Herbert
6268bbcfc8
Merge branch 'master' into beatmap-parsing-fallback-v2
2019-10-03 15:12:21 +08:00
smoogipoo
3fb0b0b668
Rename to StartTimeChanged and add xmldocs
2019-10-03 14:37:16 +09:00
smoogipoo
f2719afd0e
Add tests for Editorbeatmap
2019-10-03 14:27:40 +09:00
Dean Herbert
a06cb54732
Merge branch 'master' into beatmap-parsing-fallback-v2
2019-09-20 15:28:08 +09:00
Dean Herbert
f306fe27d8
Add test to cover corruption case
2019-09-20 15:05:48 +09:00
Dean Herbert
ddff9882cf
Fix importing archives which are nested in a single folder within a zip
2019-09-19 19:11:04 +09:00
Bartłomiej Dach
86588778b1
Implement fallback decoder registration
...
After the preparatory introduction of LineBufferedReader, it is now
possible to introduce registration of fallback decoders that won't drop
input supplied in the first line of the file.
A fallback decoder is used when the magic in the first line of the file
does not match any of the other known decoders. In such a case,
the fallback decoder is constructed and provided a LineBufferedReader
instance. The process of matching magic only peeks the first non-empty
line, so it is available for re-reading in Decode() using ReadLine().
There can be only one fallback decoder per type; a second attempt of
registering a fallback will result in an exception to avoid bugs.
To address the issue of parsing failing on badly or non-headered files,
set the legacy decoders for Beatmaps and Storyboards as the fallbacks.
Due to non-trivial logic, several new, passing unit tests with possible
edge cases also included.
2019-09-15 01:28:07 +02:00
Bartłomiej Dach
11eda44d34
Migrate decoding to line-buffered reader
...
Migrate all usages of StreamReader in the context of decoding beatmaps,
storyboards or skins to the new LineBufferedReader.
2019-09-15 01:28:07 +02:00
Bartłomiej Dach
7b1ff38df7
Implement line-buffered reader
...
Add a line-buffered reader decorator operating on StreamReader
instances. The decorator has two main operations - PeekLine(), which
allows to see the next line in the stream without consuming it,
ReadLine(), which consumes and returns the next line in the stream, and
ReadToEnd() which reads all the remaining text in the stream (including
the unconsumed peeked line). Peeking line-per-line uses an internal
queue of lines that have been read ahead from the underlying stream.
The addition of the line-buffered reader is a workaround solution to
a problem with decoding. At current selecting a decoder works by
irreversibly reading the first line from the stream and looking for
a magic string that indicates the type of decoder to use.
It might however be possible for a file to be valid in format, just
missing a header. In such a case a lack of a line-buffered reader makes
it impossible to reparse the content of that first line. Introducing it
will however allow to peek the first line for magic first.
- If magic is found in the first line, GetDecoder() will peek it and
use it to return the correct Decoder instance. Note that in the case
of JsonBeatmapDecoder the magic is the opening JSON object brace,
and therefore must not be consumed.
- If magic is not found, the fallback decoder will be able to consume
it using ReadLine() in Decode().
This commit additionally contains basic unit tests for the reader.
Suggested-by: Aergwyn <aergwyn@t-online.de>
2019-09-15 01:26:15 +02:00
Dean Herbert
f925e781a9
Refactor HitWindows for legibility
2019-09-06 15:24:14 +09:00
iiSaLMaN
94b5caf740
Fix build issues
2019-08-23 15:18:56 +03:00
David Zhao
15a592e25e
Just assert doesn't throw and don't catch at LegacyDecoder
2019-08-07 19:25:40 +09:00
David Zhao
497d2cb677
shorten tests and rename
2019-08-06 12:35:18 +09:00
David Zhao
2c32d886d7
Add better asserts
2019-08-06 10:39:54 +09:00
David Zhao
b8c38d4dfd
remove unnecessary assert
2019-08-06 10:36:26 +09:00
David Zhao
a5c17ae26d
Don't use GetDecoder
2019-08-06 10:14:36 +09:00
David Zhao
cd6fe91882
Log error for invalid events
2019-08-06 10:05:21 +09:00
smoogipoo
f2b940f930
Add tests
2019-08-01 17:31:37 +09:00
Dean Herbert
60ea3d4e1a
Fix skinning support for combobreak
2019-06-30 21:58:30 +09:00
Dean Herbert
9e1cb90dd8
Remove existing argument for ItemAdded event
...
For all usages, it looks like this was unnecessary.
2019-06-26 11:40:41 +09:00
Dean Herbert
12aa264657
Consolidate tests and check for file reference counts
2019-06-10 18:35:23 +09:00
Dean Herbert
28b2a516e3
Ensure exception is only thrown once on rollback
2019-06-10 18:13:33 +09:00
Dean Herbert
dcdb806120
Catch newly thrown exception in test
2019-06-10 17:26:56 +09:00
Dean Herbert
5b75060b94
Add test for rollback logic correctly dereferencing files
2019-06-10 16:45:45 +09:00
smoogipoo
f090e292c9
Move ArchiveModelManager import process to async flow
2019-06-10 13:42:22 +09:00
Dean Herbert
58efa7a177
Merge pull request #4729 from peppy/fix-control-point-ordering
...
Fix control points with same timestamp potentially being parsed incorrectly
2019-05-21 15:33:27 +09:00
smoogipoo
7e38aabe75
Remove equivalence check from controlpoint parsing
2019-05-21 14:27:41 +09:00
smoogipoo
e3ae858c87
Adjust testcase to avoid potential rounding issues
2019-05-21 14:01:41 +09:00
smoogipoo
f1c9073338
Fix commented line check not working with whitespace
2019-05-14 16:16:55 +09:00
smoogipoo
19bc6b72cc
More tests to showcase failures
2019-05-14 10:13:42 +09:00
smoogipoo
7aa10956b5
Add unit test
2019-05-14 09:46:42 +09:00
smoogipoo
d7c09e7dbd
Merge remote-tracking branch 'origin/master' into fix-new-inspections
...
# Conflicts:
# osu.Game.Rulesets.Catch/Judgements/CatchDropletJudgement.cs
# osu.Game.Rulesets.Catch/Judgements/CatchJudgement.cs
# osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs
# osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs
# osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs
# osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapScoresContainer.cs
# osu.Game/Graphics/OsuFont.cs
# osu.Game/Online/API/Requests/Responses/APILegacyScoreInfo.cs
# osu.Game/Overlays/Profile/Header/BadgeContainer.cs
# osu.Game/Overlays/Profile/ProfileHeader.cs
# osu.Game/Screens/Select/PlaySongSelect.cs
# osu.Game/Skinning/LegacySkinDecoder.cs
2019-05-07 13:20:17 +09:00
smoogipoo
0222424aef
Make mods IReadOnlyList<Mod> gamewide
...
Prevents potential multiple evaluations of enumerable.
2019-04-10 17:20:36 +09:00
smoogipoo
c584967eb1
Remove mods from workingbeatmap
2019-04-09 12:59:32 +09:00
Dean Herbert
c39c37a18d
Apply more missed cases
2019-04-01 12:44:46 +09:00
Dean Herbert
4c77899738
Add storyboard ordering test
2019-03-26 16:37:52 +09:00
Dean Herbert
461a0a5038
Merge branch 'master' into remove-unnecessary-code
2019-03-20 10:22:24 +09:00
Dean Herbert
0241148385
Add extensive tests
2019-03-13 11:30:38 +09:00
smoogipoo
00191ca940
Actually set the beatmap difficulty
2019-03-12 15:24:35 +09:00
smoogipoo
059397ac50
Remove unnecessary early return for maching beatmap IDs
2019-03-12 14:40:13 +09:00
Dean Herbert
d0ae75af6e
Add tests and fix scenario where all matching are contained by duplicate candidate
2019-03-11 18:13:33 +09:00
Dean Herbert
cfac47413c
Disable failing tests temporarily
2019-03-08 10:42:25 +09:00
smoogipoo
a08086cc8a
Fix volume not being considered for file samples
2019-03-05 18:21:29 +09:00
Dean Herbert
80737b9ef8
Remove "silent" parameter; consolidate import logic
2019-02-25 18:24:06 +09:00
Dean Herbert
628b3e1119
Move osu-resources to nuget
2019-01-28 18:33:39 +09:00
Dean Herbert
8617aaa2a7
Update licence header (and remove year)
2019-01-24 17:43:03 +09:00
Unknown
6eff79913b
remove blank lines
2019-01-11 10:34:56 +01:00
Dean Herbert
c45c34d400
Make beatmap importing possible elsewhere in tests
2018-12-25 19:17:21 +09:00
smoogipoo
eb88768bd0
Fix incorrect controlpoint being applied to samples
2018-12-03 17:21:27 +09:00
smoogipoo
a8ad7d4670
Add silent import parameter
2018-11-30 18:27:13 +09:00
Dean Herbert
10095d09c3
Fix test namespace
2018-11-30 17:02:01 +09:00
Dean Herbert
3727955911
Refactors/renames
2018-11-30 16:35:45 +09:00
Dean Herbert
831cd3ed59
ScoreInfo scoreInfo -> ScoreInfo score
2018-11-30 15:18:52 +09:00
smoogipoo
2bedffc00f
Add tests
2018-11-30 14:27:34 +09:00
smoogipoo
a88b69ec43
Notify of existing imports
2018-11-28 20:19:35 +09:00
smoogipoo
f27bd3ef3e
OpenTK -> osuTK
2018-11-20 17:14:59 +09:00
smoogipoo
ace1dce281
Merge remote-tracking branch 'origin/master' into fix-slider-samples
...
# Conflicts:
# osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs
2018-11-05 18:10:22 +09:00
smoogipoo
92d570342c
Fix sample additions not falling back to non-addition bank
2018-11-05 17:35:24 +09:00
smoogipoo
a4caaf56ef
Merge remote-tracking branch 'origin/master' into fix-slider-samples
...
# Conflicts:
# osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs
# osu.Game/Rulesets/Objects/Legacy/Catch/ConvertHitObjectParser.cs
# osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs
# osu.Game/Rulesets/Objects/Legacy/Mania/ConvertHitObjectParser.cs
# osu.Game/Rulesets/Objects/Legacy/Osu/ConvertHitObjectParser.cs
# osu.Game/Rulesets/Objects/Legacy/Taiko/ConvertHitObjectParser.cs
2018-11-05 16:38:28 +09:00
smoogipoo
8a2a6a3ecb
Preserve the beatmap's version
2018-10-23 14:59:21 +09:00
smoogipoo
47be95ce0b
Fix slider nodes using the wrong samples
2018-10-16 17:10:24 +09:00
smoogipoo
cb1703c6e2
Fix colours with alpha components not being parsed
2018-10-05 11:19:01 +09:00
smoogipoo
557a2ee39d
Add more comprehensive tests
2018-08-17 10:04:00 +09:00
smoogipoo
05b5144dac
Add parsing test
2018-08-15 13:36:22 +09:00
smoogipoo
e360985d73
Replace variables into the entire line
2018-08-14 18:15:09 +09:00
smoogipoo
c087a73f40
Implement per-hitobject custom sample banks
2018-07-20 15:12:44 +09:00
smoogipoo
967d0c3c72
Adjust testcase
2018-07-20 15:12:04 +09:00
smoogipoo
65d351c31a
Fix failing test cases
2018-07-10 16:26:04 +09:00
smoogipoo
c1b8799253
Add simple testcase
2018-07-02 14:40:43 +09:00
smoogipoo
c78bfbfa55
Fix failing json conversion testcases
2018-07-02 13:34:19 +09:00
smoogipoo
9fd9af22f0
Remove unused using
2018-06-28 18:40:12 +09:00
smoogipoo
94f1b2eeb8
Only custom sample banks > 1 modify the filename
2018-06-28 18:29:17 +09:00
smoogipoo
3a9a82c80c
Add back legacy custom sample banks
2018-06-28 18:29:12 +09:00
smoogipoo
6c100caba7
Use existing instance of beatmap rather than adding more resources
2018-06-17 19:00:58 +09:00
Dean Herbert
955a78e76d
Remove OnlineBeatmapSetID from BeatmapInfo
...
It should now be retrieved via the linked BeatmapSetInfo
2018-06-08 15:26:27 +09:00
Dean Herbert
8220e0c79a
Remove OnlineBeatmapSetID from BeatmapMetadata
2018-06-08 12:46:34 +09:00
smoogipoo
3745f9000b
Merge remote-tracking branch 'origin/master' into remove-decoder-offset
2018-06-07 13:37:19 +09:00
ekrctb
aeeb03ff9c
simpler temporary path generation
2018-06-06 18:36:43 +09:00
ekrctb
b84441ab87
Fix TestImportOverIPC
2018-06-04 22:25:18 +09:00
Dean Herbert
203691b1c7
Add import rollback test
2018-05-29 16:23:38 +09:00
Dean Herbert
cc081cad5a
Simplify test osz instantiation
2018-05-29 16:23:38 +09:00
Dean Herbert
015fd9d0e7
Fix loading test method returning oldest import rather than newest
2018-05-29 16:23:38 +09:00
smoogipoo
b267ec3178
Fix failing test
2018-05-28 03:48:09 +09:00
smoogipoo
3e7fa45ad1
Fix tests
2018-05-11 16:13:00 +09:00
smoogipoo
1aefd71b65
Merge remote-tracking branch 'origin/master' into i-beatmap
2018-05-07 09:58:53 +09:00
Dean Herbert
de424648d2
Update to .NET 4.7.1
...
Resolves #2368 .
2018-04-20 14:46:52 +09:00
smoogipoo
66b3b295e7
Use IBeatmap wherever possible
2018-04-19 20:44:38 +09:00
Dean Herbert
32a74f95a5
Normalize all the line endings
2018-04-13 18:26:38 +09:00
smoogipoo
c21e820a45
One more level of nesting (we can do this better in the future)
2018-03-25 02:43:45 +09:00
Dean Herbert
9a0fc9e29a
Move combo colours completely out of beatmap
2018-03-20 16:24:06 +09:00
Dean Herbert
e43de68ad3
Move colour parsing to LegacyDecoder
2018-03-13 19:13:50 +09:00
Dean Herbert
217dd2ecdc
Initial push for better decoders
2018-03-09 21:24:15 +09:00
Dean Herbert
7b18e8a5ca
Merge branch 'master' into fix-taiko-conversion
2018-03-06 01:16:47 +09:00
smoogipoo
a6b6c016d6
Fix beatmap decoder tests
2018-03-05 16:14:36 +09:00
Dean Herbert
e46f363fdc
Fix failing unit test
2018-03-04 22:46:50 +09:00
Dean Herbert
d340509b1d
Move ArchiveReaders to a more global namespace
...
Also moves delete and action logic to a shared implementation
2018-02-15 14:22:39 +09:00
Dean Herbert
e0d28564d0
Move import logic to shared implementation
2018-02-15 14:22:39 +09:00
Dean Herbert
9ed05543d7
Fix post-test conditionals from being inverse of what we want to test
2018-02-12 15:39:00 +09:00
Dean Herbert
264a0f59e2
Fix duplicate test name
2018-02-12 12:22:13 +09:00
Dean Herbert
721bb7e4dd
Add proper handling for OnlineBeatmapSetID conflicts
...
Not yet working
2018-02-09 21:31:33 +09:00
Dean Herbert
541068235d
Test import twice in a row
2018-02-09 18:23:06 +09:00
Dean Herbert
623ba652ed
Share more code between tests
2018-02-09 18:20:18 +09:00
Dean Herbert
981fa379b7
Count() -> Count
2018-02-09 18:02:28 +09:00
Dean Herbert
a771ca4077
Add try-finally to ensure host is exited
2018-02-09 18:02:06 +09:00
Dean Herbert
8140ffea15
Add test for deleting then reimporting
2018-02-09 17:59:27 +09:00
Dean Herbert
a166932468
Add deletion test
2018-02-09 17:51:29 +09:00
Dean Herbert
d8da68c55f
Disable test again (accidentally re-enabled)
2018-02-08 17:22:23 +09:00
Dean Herbert
789e25069f
Fix non-visual tests not cleaning up previous executions
2018-02-08 17:07:59 +09:00
smoogipoo
4f5bfdb888
Remove explicit .Exit on IPC test
2018-02-08 14:03:37 +09:00
smoogipoo
74016a1482
Make sure the import tests exit their hosts
2018-02-07 15:57:16 +09:00
james58899
fa800f0977
fix storyboard path
2018-01-23 18:18:54 +08:00
TocoToucan
3c11978cfa
Use local functions
2018-01-15 21:42:17 +03:00
Dean Herbert
37d393bca0
Update licence headers
2018-01-05 20:21:19 +09:00
smoogipoo
823a430d30
Nothing to see here, move along
2018-01-03 22:02:54 +09:00
smoogipoo
da5bc959ad
Fix testcase
2018-01-03 21:46:39 +09:00
Dean Herbert
5026c7a95e
SoundControlPoint -> SampleControlPoint
2017-12-23 16:34:34 +09:00
smoogipoo
a3fcc0b60c
Back to using SortedLists
2017-12-21 19:40:41 +09:00
smoogipoo
e8e5e8270b
Rename decoder
2017-12-21 14:19:37 +09:00
smoogipoo
bfa4f1a2c3
Apply changes in line with master changes
2017-12-21 13:59:03 +09:00
smoogipoo
c99ea32574
Merge branch 'master' into beatmap-serialization
2017-12-21 13:39:39 +09:00
smoogipoo
b0684cb194
Add storyboard test case but disable for now
2017-12-07 12:02:34 +09:00
smoogipoo
499ecb4edd
Add parity checking OsuJsonDecoder test cases
2017-12-07 11:11:38 +09:00
smoogipoo
b584178e85
Make Beatmap ISerializable and add more JsonIgnores
2017-12-06 00:37:37 +09:00
Aergwyn
cc76c58f5f
fall back to .osu file for storyboard if no .osb file is present
...
+ CI fixes
2017-12-02 16:05:39 +01:00
Aergwyn
2bbfe0dda1
expanded BeatmapDecoder tests, added StoryboardDecoder tests
2017-12-02 15:28:00 +01:00
Aergwyn
c466296b14
reverted split at Decoder, moved logic down
...
I'm done experimenting, sorry
- `Decoder` only returns a "Beatmap"`Decoder` now
- "Storyboard"`Decoder` is retrieved from a "Beatmap"`Decoder`
- moved parse methods down in the hierarchy where I forgot to do that
- renamed `OsuLegacyDecoderTest` to `LegacyDecoderTest`
2017-12-01 22:05:01 +01:00
Aergwyn
a49f3479a2
Split retrieving of beatmap and storyboard decoder
...
Storyboard works again. Not satisfied with the solution though.
2017-12-01 19:11:52 +01:00
Aergwyn
806c0e3b26
restructured OsuLegacyDecoder into LegacyDecoder
...
Beatmap works, Storyboard not...
2017-12-01 17:43:33 +01:00
Aergwyn
c16925059c
split parsing a beatmap and parsing a storyboard
2017-11-30 19:16:13 +01:00
Dean Herbert
0316ec3098
Remove no-longer-necessary Thread.Sleep
2017-10-24 10:08:00 +09:00
Dean Herbert
c704c0349a
Disable IPC test for now
2017-10-24 06:50:33 +09:00
Dean Herbert
7dadb7e21e
Mark IPC non-parallelizable
2017-10-24 06:13:39 +09:00
Dean Herbert
aff30db89d
Add thread sleep as a temporary workaround for failing tests
2017-10-22 16:21:41 +09:00
Dean Herbert
5d5ea5fb2e
Fix all remaining db structure issues
2017-10-19 14:05:11 +09:00
Dean Herbert
71d614b813
FIx missing columns yet again
2017-10-18 21:57:54 +09:00
Dean Herbert
00be98dba7
Query test assert conditions less often
2017-10-18 20:37:53 +09:00
Dean Herbert
799f510217
FileStore logic fixes
2017-10-17 10:25:18 +09:00
Dean Herbert
d73c0c0c98
Fix test regression
2017-10-16 13:09:01 +09:00
TocoToucan
56e8c7303c
Revert "Fix inconsistent lock usage in BeatmapManager"
...
This reverts commit 4a064da30f
.
2017-10-16 12:59:59 +09:00
TocoToucan
4a064da30f
Fix inconsistent lock usage in BeatmapManager
2017-10-15 21:56:33 +03:00
smoogipoo
9924f518b7
Merge remote-tracking branch 'origin/master' into UselessToucan/EfCore
...
# Conflicts:
# osu-framework
# osu.Game/Beatmaps/BeatmapMetadata.cs
# osu.Game/osu.Game.csproj
# osu.Game/packages.config
2017-10-14 16:36:37 +09:00
smoogipoo
b178be21d1
Let's not rename columns yet
2017-10-14 14:30:58 +09:00
smoogipoo
674ad4a30c
Fix compile errors
2017-10-14 12:49:03 +09:00
smoogipoo
b83d7cd4df
Merge remote-tracking branch 'origin/master' into UselessToucan/EfCore
...
# Conflicts:
# osu-framework
# osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs
# osu.Game/Beatmaps/BeatmapInfo.cs
# osu.Game/Online/API/Requests/GetBeatmapSetsResponse.cs
2017-10-14 12:38:59 +09:00
Dean Herbert
ed152c08ac
Fix regressions
2017-10-14 12:27:32 +09:00
Dean Herbert
bf6ab77b0e
Always use live queries to ensure waiting asserts actually get dynamic data
2017-10-11 13:37:24 +09:00
Dean Herbert
b6cfc49b06
Improve resilience of beatmap import test
...
Fixes this happening https://ci.appveyor.com/project/peppy/osu/build/master-4694/tests
2017-10-11 12:41:43 +09:00
TocoToucan
887aa7496b
Rework EF Core usage in model classes
2017-10-06 00:23:26 +03:00