Commit graph

26 commits

Author SHA1 Message Date
Alexander Capehart
b260bf45b2
music: fix failing test
Fix failing music test due to FakeMusicSettings not properly
inheriting the newly added sort article setting.
2023-02-20 18:36:19 -07:00
Alexander Capehart
2d9a5ad5cd
music: add more tests
Add tests for MusicViewModel, MusicMode, and MusicRepository.

Going further requires me to really learn instrumentation tests.
2023-02-20 16:01:58 -07:00
Alexander Capehart
63e5a7ee69
playback: fully use di
Fully use DI in the playback module.

Previously use was split among different components that could leverage
injection, and components that could not. This fully unifies them.
2023-02-12 18:50:33 -07:00
Alexander Capehart
833ddceba4
all: use binds di
Use @Binds more heavily with dependency injection, whee currently
reasonable.

Reduces the amount of boilerplate "fun from" functions that need to be
used.
2023-02-11 16:29:47 -07:00
Alexander Capehart
6e55801513
music: make extractors injectable
Refactor the music module to make each individual extractor able to be
injected directly.
2023-02-11 14:47:32 -07:00
Alexander Capehart
3c211a1d17
list: make sorting direction explicit
Make sorting direction (ascending/descending) explicit in the UI and in
the code.

Instead of a boolean flag, two distinct "ascending" and "descending"
options are used instead. This should be much clearer.
2023-02-02 21:44:15 -07:00
Alexander Capehart
8536c3da31
all: start injecting shared objects
Start injecting shared object instances.

This is not a 100% conversion, as certain portions of the code are not
really ready for 100% DI constructors just yet.
2023-02-02 20:55:36 -07:00
Alexander Capehart
2a3e81889b
music: split off raw music from real music
Split off "raw" music (RawSong, RawAlbum) from real music impls
(RealSong, RealAlbum).

They don't really make sense as a sub-class anymore given that there is
no longer a canonical music datastructure.
2023-02-02 20:37:50 -07:00
Alexander Capehart
78229f4794
music: fix failing tests
Fix failing tests stemming from incorrect module locations.
2023-01-29 20:41:05 -07:00
Alexander Capehart
f8d1a880d4
all: post-refactor cleanup 2023-01-29 17:45:51 -07:00
Alexander Capehart
d2f74fd138
music: switch cache to room
Make the cache extractors rely on a Room database as well.

I'm not quite sure how, but this also actually resulted in a huge speed
improvement.
2023-01-23 15:10:30 -07:00
Alexander Capehart
fb004a9e8b
settings: move impls out
Move settings implementations out of the class so that they are easier
to manage.
2023-01-23 10:18:44 -07:00
Alexander Capehart
26f0fb7aba
detail: add support for disc subtittles
Add support for disc subtitle information

This allows disc groups to become named, which is useful for certain
multi-part albums.

Resolves #331.
2023-01-21 17:23:09 -07:00
Alexander Capehart
82a64b5e17
music: accept zero positions with non-zero totals
Accept positions that are zeroed, but only if there are non-zero total
values as well.

Sometimes zeroed positions are deliberate, but other times they are
placeholders meant to indicate a lack of a position. To resolve this,
Auxio now considers zeroed track/disc numbers in the presence of
non-zero track/disc numbers to be valid.
2023-01-21 16:49:17 -07:00
Alexander Capehart
9bd78bc855
music: add uid and raw tests
Add tests for the relatively simple Music.UID and Raw data classes
(excluding Song.Raw).

This should make sure most of the grouping code works, making the
library tests theoretically much simpler.
2023-01-08 10:32:22 -07:00
Alexander Capehart
0199d2f343
playback: refactor queue persistence
Refactor the queue saved state system to make it easier to imlement in
the playback state database.
2023-01-08 09:52:56 -07:00
Alexander Capehart
bef4dca0ce
playback: fix queue moves
Fix moving items with the new queue system.

This took a bit of thinking, but I think this is the correct way to
implement this in a future-proof manner.
2023-01-07 12:01:43 -07:00
Alexander Capehart
5adc87550e
music: make package for auxillary music info
Like the library package, move out tag information (Date/Album.Type)
into a separate package.

Date never really made sense as base-package information.
2023-01-07 09:33:05 -07:00
Alexander Capehart
a2b51825e8
music: add tests for album types
Add tests for Album.Type.

Other tests for the music library will be done separately.
2023-01-07 09:21:15 -07:00
Alexander Capehart
ac9f50c0a0
settings: do not use sharedpreference listener
Switch back to using settings-specific listeners rather than the
SharedPreference listener.

Again, this is due to the need to decouple android code from settings.
It also allows us to fully obscure the details of what settings we are
actually working with.
2023-01-06 19:20:56 -07:00
Alexander Capehart
1b19b698a1
settings: decouple
Decouple the settings god object into feature-specific settings.

This should make testing settings-dependent code much easier, as it no
longer requires a context.
2023-01-06 16:17:57 -07:00
Alexander Capehart
3502af33e7
music: add support for date-encoding years
Add support for date-encoding years such as "YYYYMMDD".

This is a semi-common timestamp edge-case, it seems, primarily due to
taggers wanting to encode date information in older tag formats.
2023-01-06 13:47:18 -07:00
Alexander Capehart
a5ea4af5c4
music: finish parsing tests
Finish ParsingUtil tests.
2023-01-05 20:08:12 -07:00
Alexander Capehart
782b570b38
music: add texttags tests
Add tests for the TextTags processing wrapper.
2023-01-05 14:24:30 -07:00
Alexander Capehart
a5e78e614f
music: complete non-android date tests
Complete the date tests that don't require a context.
2023-01-05 12:55:15 -07:00
Alexander Capehart
78e3739a68
testing: add unit test framework
Add junit/espresso alongside a few basic tests.

I am nowhere near close to being "done" with this at all.
2023-01-05 12:27:37 -07:00