Commit Graph

2307 Commits

Author SHA1 Message Date
Anna Schumaker 34b0c56a70 Move tests out of tests/src/
... and just into the tests/ directory.  I also reworked the Sconscript
to compile everything using only the lib/ files that are needed.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-06 08:37:04 -04:00
Anna Schumaker 1f19987c53 idle: Update test for new system
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-05 09:41:49 -04:00
Anna Schumaker 70067a89cb filter: Update unit test
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-03 19:31:38 -04:00
Anna Schumaker 90bd93b10f index: Update the index test
I switched to the new testing functions, and now everything is cleaner.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-03 19:04:08 -04:00
Anna Schumaker f627f8337d database: Update unit test
As a bonus, I now have a test for manual database saving.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-04-27 17:09:47 -04:00
Anna Schumaker 968ca30484 database: Remove old db_entry test
This might have made more sense for an earlier version of the
DatabaseEntry class, but as far as I can tell this test only checks code
that exists inside this file.  This means I can removed it without
reducing code coverage.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-04-27 09:08:27 -04:00
Anna Schumaker 7b358259bd file: Finish updating the new file test
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-04-26 14:07:06 -04:00
Anna Schumaker 55f3f06ded file: More cleanups after removing legacy file support
Looks like I missed updating a few places in the File class.  I do that
now, and I also began updating the unit test to the new system.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-04-26 14:07:06 -04:00
Anna Schumaker 8aa121f291 tests: Update testing framework and begin reworking everything
Add in several new features like:
- Don't exit until the specific test function completes.
- Make it easier to run named tests from C++.
- Use a macro to find line number when calling test :: equal().
- Use a macro to do basic setup and cleanup between test functions.

Also update the version test while I'm at it.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-04-26 14:06:58 -04:00
Anna Schumaker 35f19d98ef queue: Add tests for queue flags
I remove the "on_queue_changed" callback in the flag handler functions,
so changes won't trigger a save until I can update later layers.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-04-26 11:03:07 -04:00
Anna Schumaker 78fe570e36 Add new tag layer idea to ease testing
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-04-26 10:40:51 -04:00
Anna Schumaker 30e12bcb68 Allow running single tests
This makes testing easier, since I'll only see the test I need and not
everything that runs before it.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-04-13 18:40:24 -04:00
Anna Schumaker 6ee68397fd queue: Improve the constructor to take multiple flags at once
It really should have been like this from the beginning.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-04-13 18:39:15 -04:00
Anna Schumaker d939dcab20 queue: Begin code updates
So far I have renamed variables, changed a few functions, and updated
all the code that was affected.

Oh, I also started a new unit test.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-04-13 12:27:15 -04:00
Anna Schumaker 44f62028c3 database: Return NULL when inserting a duplicate item
This provides us a more straightforward way to determine if the database
changed.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-04-13 11:14:11 -04:00
Anna Schumaker 5ff68140b5 Rip out import stuff
I only needed this to make the jump from Ocarina 5.10 -> Ocarina 6.0.
It's not needed anymore, now that 6.0 is out.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-10 08:42:53 -04:00
Anna Schumaker 1c743239a0 Rename playqueue -> queue
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker 57fa16d289 queue: Update design for queues
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker a14f6145a5 Switch over to the new tagdb implementation
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker 2a3d4ca2e0 tagdb: Implement init() and commit()
To save and restore the databases.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker 2a01ce5159 tagdb: Import track information
This allows upgrading from a previous Ocarina version.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker ac338c5704 track: Implement comparison function
Used later for sorting queues.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker c15c5149bc tags: Read and Write a Track tag
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker 72cea29c61 tagdb: Find tags for each track
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker f207ed94df filter: Make sure we don't crash when searching
This only seems to happen when the user searches for something not in
the filter.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker cac0aee2e6 database: Insert through a const reference
This should offer a performance increase since the item to insert will
only be copied if it is not already in the database.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker d452177f32 Make sure index test can handle n = 0
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker 7490b98db6 Combine database and db_entry tests
These tests are designed to verify the database, which should include
the DatabaseEntry class.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker a9dae134d0 database: Store pointers in the database
Inserting into a vector can sometimes cause the entire vector to
reallocate itself.  The insert() function returns a pointer to the
caller, so this reallocation could invalidate the returned pointer.

This is not what we want.

Instead, store pointers to the data in the vector.  C++ provides a
default copy constructor that can be used to allocate a new item before
inserting.  By doing it this way callers won't have to allocate memory
themselves.  In addition, I will no longer need to keep a valid bit
since we can simply check for a NULL entry in the database.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker 38990748bb database: Return pointers for insert() at() and find()
This gives me the item directly, which is usually what I want when I
call these functions.  Save iterators for iterating.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker e2560f3134 tagdb: Add most functions
I implemented:

- add_track()
- remove_track()
- add_library()
- remove_library()
- lookup()
- get_track_db()
- get_library_db()

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-09 21:10:08 -04:00
Anna Schumaker 5d97c84d10 tagdb: Begin the Track class
I properly initialize variables, and I created supporting databases that
will be used to look up artist, album, genre and library information.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:07 -04:00
Anna Schumaker 134348f253 tags: Begin creating the tag database
This patch adds classes for Artist, Album, Genre and Library.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:07 -04:00
Anna Schumaker d61dbae47f Add more to the Track tag design
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:07 -04:00
Anna Schumaker 0fee94f76a tagdb: Add information about tag database layer
This layer will be separate from the library updating code.  This will
give me a place to manage the various databases without extra code to
scan and update paths.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:07 -04:00
Anna Schumaker 89fd79e079 Database: Improve on the insert() return value
Rather than returning an index into the database, instead return an
iterator pointing at the item we just inserted.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:07 -04:00
Anna Schumaker bfefd1761a Think out the design for each tag class
This gives me a chance to write out more information about each class,
so I'll have an easier time knowing what is going on if I ever need to
revisit the design.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-09 21:10:07 -04:00
Anna Schumaker 83118b3e8d Update version
Time to start Ocarina 6.1!

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:07 -04:00
Anna Schumaker 2eca396042 Rename config -> Sconstruct
I only had config so I could easily refer to the original Sconstruct.  I
don't need that anymore =)

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:09:49 -04:00
Anna Schumaker 887051e5c1 Add a `scons install` option
scons -c install to uninstall.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 20:37:46 -04:00
Anna Schumaker cbe725d891 lib: Don't try to load a track that doesn't exist
This was causing me to throw an exception that never got caught.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 19:32:46 -04:00
Anna Schumaker 8d29ce7169 library: Use track id directly
Calculating through the iterator may lead to unexpected problems.  We
already know the id of every database entry, so we might as well use it
directly.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 19:28:04 -04:00
Anna Schumaker d28b3300f5 library: Put a space between track length and title
If a title began with a number then the number would be read as part of
the length, adding extra time.  So a track with length "100" and title
"42 abcde" would be read back as having length "10042" and title "abcde"

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 19:27:02 -04:00
Anna Schumaker 163d823c19 database: Don't write out unnecessary spaces
When items are deleted from a database we write out a line representing
"invalid entry".  This patch changes the invalid entry line from "0 " to
"0"

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 19:22:51 -04:00
Anna Schumaker 22322a9b12 playqueue: Correctly check for play count when sorting
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-08 08:26:15 -04:00
Anna Schumaker ad1c3d6f9d library: Scan fixes
- Double check that track->valid == true before notifying the UI that
  there is a new track.
- Use primary_key() instead of manually calculating the full filepath.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-08 08:15:32 -04:00
Anna Schumaker a470b88a46 library: Save after library validation
Otherwise we won't remember what songs we forgot!

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-08 08:12:04 -04:00
Anna Schumaker 9b417e10aa library: Properly check if a track is in the database
The iterator will be set to db.end(), so we should verify that it IS
this value.

Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-08 08:09:09 -04:00
Anna Schumaker 0d6dc76eb7 Update PKGBUILD
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-06 19:57:06 -04:00
Anna Schumaker 92e580b904 Create a .desktop file
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-06 19:57:06 -04:00