OtoTest.cpp 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include <boost/test/unit_test.hpp>
  2. #include "../../Path.h"
  3. #include "../../utau/Oto.h"
  4. #include "../../utau/UtauParameter.h"
  5. using namespace std;
  6. using namespace vconnect;
  7. BOOST_AUTO_TEST_SUITE(OtoTest)
  8. static string fixture_path_ = "fixture/utau/UtauDB/oto.ini";
  9. static string fixture_encoding_ = "Shift_JIS";
  10. BOOST_AUTO_TEST_CASE(find)
  11. {
  12. string path = Path::getFullPath(fixture_path_);
  13. Oto oto(path, Path::getDirectoryName(path), fixture_encoding_);
  14. {
  15. UtauParameter * parameter = oto.find("a あ");
  16. BOOST_CHECK(parameter);
  17. if (parameter) {
  18. BOOST_CHECK_EQUAL(string("_ああいあうえあ"), parameter->fileName);
  19. }
  20. }
  21. {
  22. UtauParameter * parameter = oto.find("_ああいあうえあ");
  23. BOOST_CHECK(parameter);
  24. if (parameter) {
  25. BOOST_CHECK_EQUAL(string("_ああいあうえあ"), parameter->fileName);
  26. }
  27. }
  28. {
  29. UtauParameter * parameter = oto.find("音源に存在しない歌詞を指定");
  30. BOOST_CHECK(!parameter);
  31. }
  32. }
  33. BOOST_AUTO_TEST_CASE(indexAccess)
  34. {
  35. string path = Path::getFullPath(fixture_path_);
  36. Oto oto(path, Path::getDirectoryName(path), fixture_encoding_);
  37. BOOST_CHECK_EQUAL((size_t)3, oto.count());
  38. {
  39. UtauParameter * actual = oto[0];
  40. BOOST_CHECK(actual != nullptr);
  41. BOOST_CHECK_EQUAL(string("a あ"), actual->lyric);
  42. BOOST_CHECK_EQUAL(string("_ああいあうえあ"), actual->fileName);
  43. BOOST_CHECK_CLOSE(500.0f, actual->msLeftBlank, FLT_EPSILON);
  44. BOOST_CHECK_CLOSE(400.0f, actual->msFixedLength, FLT_EPSILON);
  45. BOOST_CHECK_CLOSE(-500.0f, actual->msRightBlank, FLT_EPSILON);
  46. BOOST_CHECK_CLOSE(250.0f, actual->msPreUtterance, FLT_EPSILON);
  47. BOOST_CHECK_CLOSE(83.333f, actual->msVoiceOverlap, FLT_EPSILON);
  48. BOOST_CHECK(actual->isWave);
  49. }
  50. {
  51. UtauParameter * actual = oto[1];
  52. BOOST_CHECK(actual != nullptr);
  53. BOOST_CHECK_EQUAL(string("あ"), actual->lyric);
  54. BOOST_CHECK_EQUAL(string("あ"), actual->fileName);
  55. BOOST_CHECK_CLOSE(500.0f, actual->msLeftBlank, FLT_EPSILON);
  56. BOOST_CHECK_CLOSE(400.0f, actual->msFixedLength, FLT_EPSILON);
  57. BOOST_CHECK_CLOSE(-500.0f, actual->msRightBlank, FLT_EPSILON);
  58. BOOST_CHECK_CLOSE(250.0f, actual->msPreUtterance, FLT_EPSILON);
  59. BOOST_CHECK_CLOSE(83.333f, actual->msVoiceOverlap, FLT_EPSILON);
  60. BOOST_CHECK(actual->isWave);
  61. }
  62. {
  63. UtauParameter * actual = oto[2];
  64. BOOST_CHECK(actual != nullptr);
  65. BOOST_CHECK_EQUAL(string("あ↑"), actual->lyric);
  66. BOOST_CHECK_EQUAL(string("あ↑"), actual->fileName);
  67. BOOST_CHECK_CLOSE(500.0f, actual->msLeftBlank, FLT_EPSILON);
  68. BOOST_CHECK_CLOSE(400.0f, actual->msFixedLength, FLT_EPSILON);
  69. BOOST_CHECK_CLOSE(-500.0f, actual->msRightBlank, FLT_EPSILON);
  70. BOOST_CHECK_CLOSE(250.0f, actual->msPreUtterance, FLT_EPSILON);
  71. BOOST_CHECK_CLOSE(83.333f, actual->msVoiceOverlap, FLT_EPSILON);
  72. BOOST_CHECK(actual->isWave);
  73. }
  74. {
  75. UtauParameter * actual = oto[3];
  76. BOOST_CHECK(actual == nullptr);
  77. }
  78. }
  79. BOOST_AUTO_TEST_SUITE_END()