1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-14 15:57:24 +08:00
Commit Graph

577 Commits

Author SHA1 Message Date
Dean Herbert
54f72d68ca Revert weird event flow in model manager/importers 2021-11-05 19:12:49 +09:00
Dean Herbert
ed07ee8c61 Update all existing usages of AuthorString/AuthorId
Unfortunately the getters need to be left in place else EF breaks.
2021-11-04 18:59:37 +09:00
Dean Herbert
b9983add15 Rename User to APIUser and move to correct namespace 2021-11-04 18:21:31 +09:00
Dean Herbert
09f9731d74 Add temporary disable of failing r# inspection 2021-11-04 15:09:04 +09:00
Dean Herbert
601b218119 Add test coverage for characters which are invalid in zip storage 2021-11-03 16:45:16 +09:00
Dean Herbert
6944151486 Apply batch fixing of built-in types using var 2021-10-27 13:04:41 +09:00
Dean Herbert
aa0762ebe2 Add test coverage for failing slider case 2021-10-26 17:35:03 +09:00
Dean Herbert
99d01f2162 Fix a couple of new layout inspections introduces in Rider 2021.3 EAP5 2021-10-24 23:51:49 +09:00
smoogipoo
bc37cb6f43 Merge branch 'master' into no-more-difficulty-control-points-info 2021-10-08 18:41:17 +09:00
Dean Herbert
b339c149d8 Copy BaseDifficulty to Beatmap<T> and move all write operations across 2021-10-06 15:10:45 +09:00
Dean Herbert
15ec315ec6 Fix test runs hanging due to missing ConfigureAwait 2021-10-05 02:07:00 +09:00
Dan Balasescu
4bd1083388
Merge pull request #14903 from peppy/importer-returns-live
Add `ILive<T>` and use as return type of `Import` methods
2021-10-04 20:16:32 +09:00
smoogipoo
4871db2f86 Merge branch 'master' into importer-returns-live 2021-10-04 19:42:36 +09:00
Dean Herbert
853cf6feaa Rename last remaining BeatmapInfo Beatmap usage 2021-10-04 17:35:53 +09:00
Dean Herbert
916342c837 Merge branch 'master' into importer-returns-live 2021-10-04 16:24:26 +09:00
smoogipoo
69c2b7dc59 Merge branch 'master' into rename-beatmap-info-beatmap-fields 2021-10-04 16:03:22 +09:00
Bartłomiej Dach
281a3a0cea
Add test case for legacy loop count behaviour 2021-10-02 18:40:41 +02:00
Dean Herbert
ec61c3c5ee Rename all remaining cases 2021-10-03 00:55:29 +09:00
Dean Herbert
a2e61883e3 Initial push to use ILive in import process 2021-09-30 22:55:25 +09:00
Dean Herbert
46bafb6252 Merge branch 'master' into no-more-difficulty-control-points-info 2021-09-28 13:53:56 +09:00
Dean Herbert
78e7755df1 Re-enable IPC import test 2021-09-21 17:54:25 +09:00
Dean Herbert
e0bbc677d2 Fix TestRollbackOnFailure not cleaning up after itself 2021-09-17 16:23:09 +09:00
Bartłomiej Dach
cd181452be
Add decoding support for SamplesMatchPlaybackRate 2021-09-12 16:45:27 +02:00
Dean Herbert
5f61936700 Update legacy encoder tests to only compare pieces we care about 2021-09-10 17:29:09 +09:00
Dean Herbert
1952ebece9 Update tests to use more correct control point definitions 2021-09-06 22:04:51 +09:00
Dean Herbert
8ffcea2e51 Remove unnecessary null checks 2021-09-06 21:32:43 +09:00
Dean Herbert
3c7a34bdbd Move mania-specific conversion to converter 2021-09-06 21:06:13 +09:00
Dean Herbert
b2a14b13dc Update outdated tests 2021-09-03 17:11:12 +09:00
Dean Herbert
a3d9ab1e2e Move approach rate to EffectControlPoint 2021-09-03 16:58:16 +09:00
Dean Herbert
071c56e90b Update usages of DifficultyPointAt 2021-09-03 16:58:16 +09:00
Dean Herbert
eb21ed08f8 Update test to only compare HitObjects 2021-08-31 14:51:14 +09:00
Dean Herbert
ce0d7cce2d Merge branch 'remove-ijsonserializable' into no-more-sample-control-points-info 2021-08-31 14:40:54 +09:00
Dean Herbert
a2cff75fc0 Fix editor not cloning control points as expected 2021-08-30 21:55:08 +09:00
Dean Herbert
2115d6f93e Add test coverage of legacy sample point recreation 2021-08-30 17:14:53 +09:00
Dean Herbert
ccacf56dd8 Move to legacy namespace 2021-08-30 17:14:53 +09:00
Dean Herbert
7257aae7f2 Move samples to LegacyControlPointInfo 2021-08-30 17:14:53 +09:00
Dean Herbert
4adfe9a6dc Add test coverage of double-convert stability 2021-08-30 15:30:04 +09:00
Dean Herbert
6dcd9427ac Remove bindable usage in PathControlPoint
This is quite a breaking change, but I think it is beneficial due to the large amount of usage of this class.

I originally intended just to remove the allocations of the two delegates handling the `Changed` flow internally, but as nothing was really using the bindables for anything more than a general "point has changed" case, this felt like a better direction.
2021-08-26 12:33:53 +09:00
Bartłomiej Dach
a6c2cbd2e5
Add countdown settings to beatmap info model 2021-08-24 21:55:10 +02:00
Bartłomiej Dach
43b3845970
Remove redundant string interpolation 2021-08-21 16:35:40 +02:00
Bartłomiej Dach
f642546d6a
Add failing test case 2021-08-21 15:50:33 +02:00
Bartłomiej Dach
479401e533
Add option to set own computation function in test 2021-08-21 15:50:32 +02:00
Salman Ahmed
73b40a6244 Switch to until step to account for asynchronous operations 2021-08-20 05:29:30 +03:00
Salman Ahmed
d98742522b Remove unused using directive 2021-08-20 04:40:03 +03:00
Salman Ahmed
4d9c415e73 Remove unnecessary queue in beatmap difficulty cache tests 2021-08-20 04:37:35 +03:00
Salman Ahmed
a329216ff3 Convert beatmap difficulty test into test scene and extend coverage 2021-08-17 05:46:11 +03:00
Bartłomiej Dach
6108451449
Retrieve separated skin instance from working beatmap for editing 2021-08-15 21:18:09 +02:00
Dean Herbert
399c3b0be8 Rename property, reword xmldoc and improve readability of update code 2021-07-21 17:32:56 +09:00
Salman Ahmed
9d92b795fa Revert making ComboOffsets legacy and define BeatmapSkinComboIndex instead 2021-07-20 14:15:43 +03:00
Salman Ahmed
554652b033 Merge branch 'refactor-combo-colour-retrieval' into legacy-beatmap-combo-offset 2021-07-20 10:11:52 +03:00
PercyDan54
e1c646b9b2
Remove redundant arguments 2021-07-05 23:52:39 +08:00
Dan Balasescu
697b07acb1
Merge branch 'master' into fix-beatmap-import-fk-failure 2021-06-29 11:36:31 +09:00
Dean Herbert
128f08ccba Fix test oversights 2021-06-28 10:42:28 +09:00
Dean Herbert
90b87cbb9e Add back unidirectional online id check 2021-06-28 10:11:27 +09:00
Dean Herbert
9a96cd4a1d Revert "Remove comparison of online beatmap IDs during dedupe checks"
This reverts commit 15af28d2a0.
2021-06-28 09:54:18 +09:00
Dean Herbert
cd9aa38d3d Add back ignore cases for intentionally broken tests 2021-06-27 20:24:16 +09:00
Dean Herbert
15af28d2a0 Remove comparison of online beatmap IDs during dedupe checks 2021-06-27 14:48:57 +09:00
Dean Herbert
f6180b7e6a Mark static methods as such 2021-06-23 17:37:26 +09:00
Dean Herbert
ed0552a9e8 Add failing test for FK constraint conflict on reimporting modified beatmap with scores present 2021-06-23 17:34:56 +09:00
Salman Ahmed
4f6de6fdc6 Implement GetSkin() for other working beatmaps 2021-05-21 20:21:29 +03:00
Bartłomiej Dach
b51d038088 Ignore possible path-related nulls
They're all in test code anyway, so any issue there will cause a test to
fail.
2021-05-15 00:09:34 +02:00
smoogipoo
7c8dd91674 Rename test to better match tested class 2021-05-11 09:29:15 +09:00
Salman Ahmed
bf6e98345c Remove and update pre-existing test cases 2021-05-05 14:23:18 +03:00
Naxess
400f8b3938 Add GetStream to IWorkingBeatmap
This is necessary to obtain the filesize of the audio and background files.
2021-04-17 17:47:13 +02:00
Leon Gebler
dd902441b0 Add tests for consecutive perfect-curve segments 2021-04-06 13:32:17 +02:00
smoogipoo
9c1320e18b Add test 2021-04-06 14:34:26 +09:00
smoogipoo
42e816fcae Add failing tests 2021-04-05 17:48:29 +09:00
Dean Herbert
541237ef16 Use a shorter test beatmap for tests which need to run to completion 2021-02-22 14:48:04 +09:00
Bartłomiej Dach
d7e5a21213 Add failing test case 2021-01-31 15:43:58 +01:00
Dean Herbert
20d04d6933 Fix Storyboard's FirstEventTime not finding the true earliest event 2021-01-04 15:16:01 +09:00
Dean Herbert
cb7df0fe11 Add failing test for storyboard start time ordering 2021-01-04 15:15:23 +09:00
Dean Herbert
8eb1076fd7 Add test coverage 2020-12-07 18:18:14 +09:00
Dean Herbert
eb38bc4b4c Add the ability to import into ArchiveModelManagers from a stream 2020-12-07 18:09:18 +09:00
Dean Herbert
b69ada64e8 Update BeatmapDifficultyCache to use base implementation logic 2020-11-06 14:31:21 +09:00
Dean Herbert
5113d4af8f Rename BeatmapDifficultyManager to BeatmapDifficultyCache 2020-11-06 13:14:29 +09:00
Dan Balasescu
1b53e6c782
Merge branch 'master' into sample-lookup-improvements 2020-11-02 13:04:35 +09:00
Bartłomiej Dach
8a54fdd4e6 Ensure LoadOszIntoOsu returns actual imported map 2020-11-01 14:25:33 +01:00
Dean Herbert
fed4accfea Update tests to refect new mappings 2020-10-30 12:12:30 +09:00
Dean Herbert
88ffcb9234 Update EndsWith usages 2020-10-16 12:58:34 +09:00
smoogipoo
58194b4a31 Fix incorrect blank lines 2020-10-12 19:36:35 +09:00
smoogipoo
36a8f61d26 Add failing test for implicit segments 2020-10-12 18:58:07 +09:00
smoogipoo
e70d261474 Add failing test 2020-10-12 18:03:41 +09:00
Bartłomiej Dach
75b26d0cde Add failing test cases 2020-10-10 18:08:19 +02:00
Dean Herbert
3cef93ee27 Centralise import test helper methods 2020-09-18 18:05:33 +09:00
Dean Herbert
0b289d2e77 Add hostname differentiation to beatmap tests too 2020-09-17 13:07:05 +09:00
Dean Herbert
70bc0b2bd0 Add back inadvertently removed spacing 2020-09-14 17:52:59 +09:00
Dean Herbert
6b60888139 Merge branch 'fix-post-convert-json-serialize' into editor-clipboard 2020-09-14 17:38:53 +09:00
Dean Herbert
3e7f70e225 Add failing test covering post-converted json serializing 2020-09-14 17:32:32 +09:00
Dean Herbert
3e37f27a66 Fix regressed tests due to schedule changes 2020-09-13 23:22:19 +09:00
Dean Herbert
5268eee0fb Avoid requiring sending the calling method for CleanRunHeadlessGameHost 2020-09-08 11:31:42 +09:00
Dean Herbert
01c0b61b20 Fix incorrect test names 2020-09-08 01:52:31 +09:00
smoogipoo
9ab6d584d3 Merge branch 'master' into editor-new-beatmap 2020-09-07 14:30:41 +09:00
Dan Balasescu
e17ccdfe9f
Merge branch 'master' into combo-colors 2020-09-07 13:55:41 +09:00
Bartłomiej Dach
2b16e25353 Revert unnecessary passing down of tuple in test 2020-09-06 18:44:41 +02:00
Dean Herbert
fba253f131 Take user argument in CreateNew method parameters 2020-09-04 13:17:43 +09:00
Dean Herbert
d3fbc7cc53 Use more direct reference in tests 2020-09-04 13:16:35 +09:00
Dean Herbert
c9a73926a6 Add basic test coverage 2020-09-03 19:38:01 +09:00
Craftplacer
2a7259f7aa Update LegacyBeatmapEncoderTest.cs 2020-09-01 18:15:46 +02:00
Craftplacer
c2ade44656 Change types back 2020-09-01 17:58:06 +02:00
Dan Balasescu
f08e7828da
Merge branch 'master' into beatmap-track-rework 2020-09-01 16:06:38 +09:00
Craftplacer
a893aa8af8 Cut down changes done to LegacyBeatmapEncoderTest 2020-08-31 17:24:24 +02:00
Craftplacer
07f6a68179 Update LegacyBeatmapEncoderTest.cs 2020-08-30 21:13:06 +02:00
Craftplacer
43d144b7c0 Remove empty argument list 2020-08-30 16:23:00 +02:00
Craftplacer
337037ab3b Make test load actual beatmap's skin configuration 2020-08-30 16:08:52 +02:00
Craftplacer
919d7b7785 Remove redundant call to TestResources 2020-08-30 16:08:13 +02:00
Craftplacer
e428144f73 Use IBeatmapSkin 2020-08-30 11:34:50 +02:00
Craftplacer
00b68b050c Merge remote-tracking branch 'upstream/master' into combo-colors 2020-08-30 10:16:38 +02:00
Craftplacer
da5853e7eb Create a new BeatmapSetInfo when setting files 2020-08-29 10:25:43 +02:00
smoogipoo
436dbafe57 Fix incorrect comparison for mods of different instances 2020-08-28 22:12:17 +09:00
Bartłomiej Dach
37387d7741 Add assertions to existing test to cover bug 2020-08-27 18:18:30 +02:00
Bartłomiej Dach
9d70b4af09 Add failing test case 2020-08-27 18:06:59 +02:00
Craftplacer
492be0e016 Fix formatting 2020-08-23 15:23:10 +02:00
Craftplacer
e6646b9877 Resolve review comments 2020-08-23 15:08:02 +02:00
Craftplacer
cfd82104db Minor changes and improvements 2020-08-16 01:00:28 +02:00
Craftplacer
434354c44c Properly implement SkinConfiguration equality 2020-08-16 00:21:26 +02:00
Craftplacer
3a6e378a08 Change skin testing 2020-08-15 23:41:53 +02:00
Craftplacer
0e8411f76c Rename fields and make readonly 2020-08-15 22:06:26 +02:00
Craftplacer
c4a7fac760 Add required parameters and other various changes 2020-08-15 22:03:24 +02:00
Craftplacer
69590113d6 Temporary changes 2020-08-12 06:40:21 +02:00
smoogipoo
e87f50f74f Rename method 2020-08-07 22:31:41 +09:00
Dean Herbert
880a127228 Use async overload 2020-06-10 00:08:48 +09:00
smoogipoo
88aed1d504 Merge branch 'master' into update-inspectcode-version 2020-06-09 20:12:39 +09:00
smoogipoo
8a021e0beb Use save method in test 2020-06-08 22:35:01 +09:00
Dean Herbert
b41384dde8
Merge branch 'master' into multiplayer-beatmap-checksum 2020-06-07 18:05:33 +09:00
Dean Herbert
66ec2afe5c Remove broken import test 2020-06-03 23:38:40 +09:00
Dean Herbert
5ed3cd205f Simplify reuse check using FileInfo IDs 2020-06-03 23:35:56 +09:00
Dean Herbert
25160dc220 Fix test name 2020-06-03 19:15:52 +09:00
Dean Herbert
012933545e Add test coverage 2020-06-03 18:33:41 +09:00
smoogipoo
f3b5149648 Move some suggestions to warnings, resolve issues 2020-06-03 16:48:44 +09:00
smoogipoo
dfb9687fb5 Extract update into PreUpdate(), add test 2020-06-02 17:22:09 +09:00
Dean Herbert
0ef971be28 Merge branch 'master' into i-has-curve-with-repeats 2020-05-31 22:30:18 +09:00
Dean Herbert
f989f1aa00 Change event flow to avoid firing store delete events on update 2020-05-27 16:08:47 +09:00
Dean Herbert
6b5b215299 Split out IHasPath from IHasCurve to better define hitobjects 2020-05-26 17:44:47 +09:00
smoogipoo
bc35bc5efb Merge branch 'master' into applydefaults-cancellation 2020-05-25 16:45:30 +09:00
smoogipoo
e5de382760 Merge branch 'master' into storyboard-overlay-layer 2020-05-20 15:08:45 +09:00
Bartłomiej Dach
6e27247cdf Adjust storyboard decoder test in line with changes 2020-05-19 19:47:50 +02:00
Dean Herbert
052ad79fc6 Convert dangerous events to IBindables 2020-05-19 16:44:22 +09:00
smoogipoo
6cd1753459 Add overload to prevent crashes (bosu) 2020-05-15 18:51:44 +09:00
smoogipoo
ca6e6f7496 Add required parameter for android build 2020-05-11 17:26:11 +09:00
Dean Herbert
7f7d5e6617 Fix apparently required argument 2020-05-11 16:37:08 +09:00
Dean Herbert
93440874db Refactor beatmap encoder test to be a bit easier to understand 2020-05-11 16:30:54 +09:00
alex
0e2ccac33b Add spaces to comments 2020-05-04 18:36:24 -07:00
Dean Herbert
31c3fd86b9 Avoid using internal EF methods in tests 2020-04-28 16:22:00 +09:00
Dean Herbert
aaa0f908d5
Merge pull request #8818 from smoogipoo/fix-beatmap-encoder
Fix beatmap encoder by enabling untested test cases
2020-04-22 13:03:56 +09:00
Dean Herbert
360c9f8e38 Add test coverage and handle null creator 2020-04-22 09:19:34 +09:00
smoogipoo
1e7e7417ed Fix testing relying on control point order 2020-04-22 09:04:44 +09:00
smoogipoo
8ea76244a2 Fix only single beatmap being tested 2020-04-22 09:04:44 +09:00
smoogipoo
9713d90388 Always apply beatmap converter/processor 2020-04-22 09:04:44 +09:00
smoogipoo
72fb34f82c Fix overriding control points incorrectly 2020-04-21 14:19:05 +09:00
smoogipoo
41caa37856 Add tests 2020-04-10 13:29:49 +09:00
smoogipoo
ecd7ce4b98 Fix test scene 2020-04-09 21:00:23 +09:00
smoogipoo
ee6ea08cf8 Cleanup handling of hitobject updates 2020-04-09 20:16:44 +09:00
Will Kennedy
877bd7837a Changed variable names 2020-04-02 22:02:57 -04:00
Will Kennedy
c042e709a5 Fix GetDecoder getting fallback decoder too often 2020-04-02 20:43:54 -04:00
Dean Herbert
6d81da5419
Merge branch 'master' into video-offset 2020-03-25 11:28:59 +09:00
Dean Herbert
368bf58521 Rename and make fields readonly 2020-03-25 11:08:08 +09:00
Dean Herbert
729e006c3a
Merge branch 'master' into video-offset 2020-03-21 20:03:46 +09:00
Dean Herbert
370ff70dd4 Fix incorrect host name specification 2020-03-17 18:32:30 +09:00
Dan Balasescu
1d556bfc5f
Merge branch 'master' into video-offset 2020-03-11 15:13:18 +09:00
smoogipoo
7a9c85d69d Fix now failing test due to parsing ranges 2020-03-10 12:21:40 +09:00
voidedWarranties
48282dea8b Remove individual setting to disable videos, fix tests 2020-03-07 22:08:38 -08:00
smoogipoo
363d7d724a Use old ctor params 2020-01-15 14:02:29 +09:00
smoogipoo
0e844b3039 Cleanup / re-protect file store 2020-01-14 19:24:53 +09:00
smoogipoo
4b8d628000 Remove file addition test 2020-01-14 19:24:53 +09:00
smoogipoo
524ff41931 Add more assertions 2020-01-14 19:24:53 +09:00
smoogipoo
b592b6d80d Improve robustness by always creating a new file 2020-01-14 19:24:53 +09:00
smoogipoo
000fc836b2 Remove unused class 2020-01-14 19:24:53 +09:00
smoogipoo
dce93dfe7c Split test 2020-01-14 19:24:53 +09:00
smoogipoo
609102bea3 Initial file updating implementation 2020-01-14 19:24:53 +09:00
smoogipoo
681a43a318 Refactor to support beatmap updates 2020-01-14 19:24:53 +09:00
smoogipoo
6069d98ced Remove generic editor beatmap 2019-12-27 19:39:30 +09:00
Dean Herbert
0677f746aa Provide the ruleset to converter classes 2019-12-24 16:02:16 +09:00
smoogipoo
705cdde148 Fix incorrect test 2019-12-20 16:42:45 +09:00
smoogipoo
c976427206 Refactor test to be more complete 2019-12-13 19:00:28 +09:00
smoogipoo
be000e13e4 Implement initial legacy beatmap encoding support 2019-12-12 18:34:40 +09:00
Huo Yaoyuan
374ef6ff83 Merge branch 'master' into sharpen 2019-11-20 17:30:58 +08:00
Dean Herbert
9f62ec869a Add failing test 2019-11-14 19:38:20 +09:00
Huo Yaoyuan
d60493a961 Use discards. 2019-11-12 20:03:21 +08:00
Huo Yaoyuan
144812669d Use static local functions. 2019-11-12 19:56:54 +08:00
smoogipoo
cf2d885099 Fix control points being flushed too late 2019-10-30 18:02:18 +09:00
Dan Balasescu
514c9f1eef
Merge branch 'master' into bindable-control-points 2019-10-30 16:20:54 +09:00
Dean Herbert
7c6ccce3ba Add tests covering precision case 2019-10-29 18:02:30 +09:00
Dean Herbert
8baf569f59 Remove necessity of AutoGenerated flag 2019-10-25 19:58:42 +09:00
Dan Balasescu
26a33bfa4e
Merge branch 'master' into fix-resume-from-player-audio 2019-10-11 19:21:14 +09:00
Dean Herbert
c7eb0b401b
Merge branch 'master' into ignore-macosx-folder-in-archives 2019-10-11 14:36:52 +09:00
Bartłomiej Dach
11acd177f1 Add import test with files to be filtered out
Add a test case reproducing the conditions encountered "in the wild"
wherein a skin import would be performed incorrectly due to a __MACOSX
resource fork directory present next to a directory with the actual skin
files in the archive.
2019-10-10 23:54:17 +02:00
Bartłomiej Dach
c8ffc134d4 Use nameof when instantiating headless game hosts
As a purely cosmetic code improvement, substitute string literals
in constructor calls of HeadlessGameHost in ImportBeatmapTest for nameof
operator usages.
2019-10-10 22:36:43 +02:00
Bartłomiej Dach
cb1f7e2dc7 Fix platform dependency in buffered reader test
Tests for the line-buffered reader added in 7b1ff38 were subtly
dependent on the execution environment due to differing end-of-line
markers on Windows and Unix-based systems.

Because StreamReader discards all newlines when reading line-by-line,
LineBufferedReader used a StringBuilder to patch the peeked lines
back together with the remaining contents of the file being read.
As StringBuilder.AppendLine uses the environment-specific newline
delimiter, the delimiters after the peeked-but-unconsumed lines can
therefore be substituted by the platform-specific variants, causing
the test failures due to the overly-simplified way they were written.

Reformulate the test to avoid such issues from resurfacing again
by splitting lines by \r or \n and then testing each line individually.
Additionally remove all raw literals in favour of explicitly mixing
various line delimiter character sequences for additional coverage.
2019-10-10 15:33:18 +02:00
Dean Herbert
8df2e359c4 Fix tests on CI 2019-10-10 17:42:15 +09:00
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