UtauDBTest.cpp 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include <boost/test/unit_test.hpp>
  2. #include "../../utau/UtauDB.h"
  3. #include "../../utau/Oto.h"
  4. #include "../../Path.h"
  5. using namespace std;
  6. using namespace vconnect;
  7. BOOST_AUTO_TEST_SUITE(UtauDBTest)
  8. BOOST_AUTO_TEST_CASE(testConstruct)
  9. {
  10. string path = Path::getFullPath( "fixture/utau/UtauDB/oto.ini" );
  11. UtauDB db( path, "Shift_JIS" );
  12. string expectedPath = Path::getDirectoryName( path ) + Path::getDirectorySeparator();
  13. BOOST_CHECK_EQUAL( expectedPath, db.getOtoIniPath() );
  14. UtauParameter resultByLyric;
  15. int ret = db.getParams(resultByLyric, "a あ", 60);
  16. BOOST_CHECK_EQUAL( 1, ret );
  17. BOOST_CHECK_EQUAL( string( "_ああいあうえあ" ), resultByLyric.fileName );
  18. UtauParameter resultByFileName;
  19. ret = db.getParams(resultByFileName, "_ああいあうえあ", 60);
  20. BOOST_CHECK_EQUAL( 1, ret );
  21. BOOST_CHECK_EQUAL( string( "_ああいあうえあ" ), resultByFileName.fileName );
  22. ret = db.getParams(resultByFileName, "音源に存在しない歌詞を指定", 60);
  23. BOOST_CHECK_EQUAL( 0, ret );
  24. {
  25. // search via prefix.map
  26. UtauParameter parameter;
  27. int const result = db.getParams(parameter, "あ", 62);
  28. BOOST_CHECK_EQUAL(1, result);
  29. BOOST_CHECK_EQUAL(string("あ↑"), parameter.fileName);
  30. }
  31. {
  32. // search phoneme in subdirectory.
  33. UtauParameter parameter;
  34. int const result = db.getParams(parameter, "わ", 60);
  35. BOOST_CHECK_EQUAL(1, result);
  36. BOOST_CHECK_EQUAL(string("A\\わ"), parameter.fileName);
  37. }
  38. // インデックスによるアクセス
  39. // インデックスによるアクセスでは、エイリアスで登録したものについてはアクセスされない
  40. BOOST_CHECK_EQUAL( 3, db.size() );
  41. {
  42. UtauParameter result;
  43. BOOST_CHECK_EQUAL(1, db.getParams(result, 0));
  44. BOOST_CHECK_EQUAL(string("_ああいあうえあ"), result.fileName);
  45. }
  46. {
  47. UtauParameter result;
  48. BOOST_CHECK_EQUAL(1, db.getParams(result, 1));
  49. BOOST_CHECK_EQUAL(string("あ"), result.fileName);
  50. }
  51. {
  52. UtauParameter result;
  53. BOOST_CHECK_EQUAL(1, db.getParams(result, 2));
  54. BOOST_CHECK_EQUAL(string("あ↑"), result.fileName);
  55. }
  56. {
  57. UtauParameter result;
  58. BOOST_CHECK_EQUAL(0, db.getParams(result, -1));
  59. BOOST_CHECK_EQUAL(0, db.getParams(result, 3));
  60. }
  61. BOOST_CHECK_EQUAL(1, db.getSubDirectorySize());
  62. {
  63. Oto const* const oto = db.getSubDirectoryOto(0);
  64. BOOST_CHECK_EQUAL(1, oto->count());
  65. UtauParameter * actual = (*oto)[0];
  66. BOOST_CHECK_EQUAL(string("A\\わ"), actual->fileName);
  67. string const expected = Path::combine(Path::combine(Path::getDirectoryName(path), "A"), "oto.ini");
  68. BOOST_CHECK_EQUAL(expected, oto->getOtoIniPath());
  69. }
  70. }
  71. BOOST_AUTO_TEST_SUITE_END()