From 365eb5f1a4c01a515e531c596728a4fbdaf5d2c2 Mon Sep 17 00:00:00 2001 From: tarepan Date: Thu, 27 Jun 2024 05:36:30 +0000 Subject: [PATCH 1/4] =?UTF-8?q?refactor:=20=E8=BE=9E=E6=9B=B8=E5=8D=98?= =?UTF-8?q?=E8=AA=9E=E3=83=86=E3=82=B9=E3=83=88=E3=81=AE=E5=BD=A2=E5=BC=8F?= =?UTF-8?q?=E3=82=92=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/unit/user_dict/test_user_dict_model.py | 78 ++++++++++++++++++--- 1 file changed, 68 insertions(+), 10 deletions(-) diff --git a/test/unit/user_dict/test_user_dict_model.py b/test/unit/user_dict/test_user_dict_model.py index b843407c2..154904133 100644 --- a/test/unit/user_dict/test_user_dict_model.py +++ b/test/unit/user_dict/test_user_dict_model.py @@ -1,3 +1,5 @@ +"""UserDictWord のテスト""" + from typing import TypedDict import pytest @@ -7,7 +9,7 @@ from voicevox_engine.user_dict.model import UserDictWord -class _TestModel(TypedDict): +class UserDictWordInputs(TypedDict): surface: str priority: int part_of_speech: str @@ -24,7 +26,8 @@ class _TestModel(TypedDict): accent_associative_rule: str -def generate_model() -> _TestModel: +def generate_model() -> UserDictWordInputs: + """テスト用入力テンプレートを生成する。""" return { "surface": "テスト", "priority": 0, @@ -44,19 +47,39 @@ def generate_model() -> _TestModel: def test_valid_word() -> None: + """テスト用入力テンプレートは正常値である。""" + # Inputs test_value = generate_model() + + # Test UserDictWord(**test_value) def test_convert_to_zenkaku() -> None: + """UserDictWord は surface を全角化する。""" + # Inputs test_value = generate_model() test_value["surface"] = "test" - assert UserDictWord(**test_value).surface == "test" + # Expects + true_surface = "test" + # Outputs + surface = UserDictWord(**test_value).surface + + # Test + assert surface == true_surface def test_count_mora() -> None: + """UserDictWord は mora_count=None を上書きする。""" + # Inputs test_value = generate_model() - assert UserDictWord(**test_value).mora_count == 3 + # Expects + true_mora_count = 3 + # Outputs + mora_count = UserDictWord(**test_value).mora_count + + # Test + assert mora_count == true_mora_count def test_count_mora_x() -> None: @@ -75,52 +98,87 @@ def test_count_mora_x() -> None: def test_count_mora_xwa() -> None: + """「ヮ」を含む発音のモーラ数が適切にカウントされる。""" + # Inputs test_value = generate_model() test_value["pronunciation"] = "クヮンセイ" - expected_count = 0 + # Expects + true_mora_count = 0 for accent_phrase in parse_kana( test_value["pronunciation"] + "'", ): - expected_count += len(accent_phrase.moras) - assert UserDictWord(**test_value).mora_count == expected_count + true_mora_count += len(accent_phrase.moras) + # Outputs + mora_rount = UserDictWord(**test_value).mora_count + + # Test + assert mora_rount == true_mora_count def test_invalid_pronunciation_not_katakana() -> None: + """UserDictWord はカタカナでない pronunciation を拒絶する。""" + # Inputs test_value = generate_model() test_value["pronunciation"] = "ぼいぼ" + + # Test with pytest.raises(ValidationError): UserDictWord(**test_value) def test_invalid_pronunciation_invalid_sutegana() -> None: + """UserDictWord は無効な pronunciation を拒絶する。""" + # Inputs test_value = generate_model() test_value["pronunciation"] = "アィウェォ" + + # Test with pytest.raises(ValidationError): UserDictWord(**test_value) def test_invalid_pronunciation_invalid_xwa() -> None: + """UserDictWord は無効な pronunciation を拒絶する。""" + # Inputs test_value = generate_model() test_value["pronunciation"] = "アヮ" + + # Test with pytest.raises(ValidationError): UserDictWord(**test_value) def test_count_mora_voiced_sound() -> None: + """UserDictWord はモーラ数を正しくカウントして上書きする。""" + # Inputs test_value = generate_model() test_value["pronunciation"] = "ボイボ" - assert UserDictWord(**test_value).mora_count == 3 + # Expects + true_mora_count = 3 + # Outputs + mora_count = UserDictWord(**test_value).mora_count + + # Test + assert mora_count == true_mora_count -def test_invalid_accent_type() -> None: +def test_word_accent_type_too_big() -> None: + """UserDictWord はモーラ数を超えた accent_type を拒絶する。""" + # Inputs test_value = generate_model() test_value["accent_type"] = 4 + + # Test with pytest.raises(ValidationError): UserDictWord(**test_value) -def test_invalid_accent_type_2() -> None: +def test_word_accent_type_negative() -> None: + """UserDictWord は負の accent_type を拒絶する。""" + # Inputs test_value = generate_model() test_value["accent_type"] = -1 + + # Test with pytest.raises(ValidationError): UserDictWord(**test_value) From ba2aec96864ac006a315ba1c0acee9eaf4e7c345 Mon Sep 17 00:00:00 2001 From: tarepan Date: Fri, 28 Jun 2024 06:44:20 +0000 Subject: [PATCH 2/4] =?UTF-8?q?refactor:=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=83=BC=E8=BE=9E=E6=9B=B8=E3=83=86=E3=82=B9=E3=83=88=E3=81=AE?= =?UTF-8?q?=20docstring=20=E3=82=92=E6=98=8E=E7=A2=BA=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/unit/user_dict/test_user_dict_model.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/unit/user_dict/test_user_dict_model.py b/test/unit/user_dict/test_user_dict_model.py index 154904133..ac24951aa 100644 --- a/test/unit/user_dict/test_user_dict_model.py +++ b/test/unit/user_dict/test_user_dict_model.py @@ -116,7 +116,7 @@ def test_count_mora_xwa() -> None: def test_invalid_pronunciation_not_katakana() -> None: - """UserDictWord はカタカナでない pronunciation を拒絶する。""" + """UserDictWord はカタカナでない pronunciation をエラーとする。""" # Inputs test_value = generate_model() test_value["pronunciation"] = "ぼいぼ" @@ -127,7 +127,7 @@ def test_invalid_pronunciation_not_katakana() -> None: def test_invalid_pronunciation_invalid_sutegana() -> None: - """UserDictWord は無効な pronunciation を拒絶する。""" + """UserDictWord は無効な pronunciation をエラーとする。""" # Inputs test_value = generate_model() test_value["pronunciation"] = "アィウェォ" @@ -138,7 +138,7 @@ def test_invalid_pronunciation_invalid_sutegana() -> None: def test_invalid_pronunciation_invalid_xwa() -> None: - """UserDictWord は無効な pronunciation を拒絶する。""" + """UserDictWord は無効な pronunciation をエラーとする。""" # Inputs test_value = generate_model() test_value["pronunciation"] = "アヮ" @@ -163,7 +163,7 @@ def test_count_mora_voiced_sound() -> None: def test_word_accent_type_too_big() -> None: - """UserDictWord はモーラ数を超えた accent_type を拒絶する。""" + """UserDictWord はモーラ数を超えた accent_type をエラーとする。""" # Inputs test_value = generate_model() test_value["accent_type"] = 4 @@ -174,7 +174,7 @@ def test_word_accent_type_too_big() -> None: def test_word_accent_type_negative() -> None: - """UserDictWord は負の accent_type を拒絶する。""" + """UserDictWord は負の accent_type をエラーとする。""" # Inputs test_value = generate_model() test_value["accent_type"] = -1 From c9a47ee140c7a40cd89a951661e3dc6fe72c8849 Mon Sep 17 00:00:00 2001 From: tarepan Date: Fri, 28 Jun 2024 06:48:10 +0000 Subject: [PATCH 3/4] =?UTF-8?q?refactor:=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=83=BC=E8=BE=9E=E6=9B=B8=E3=83=86=E3=82=B9=E3=83=88=E3=81=AE?= =?UTF-8?q?=20docstring=20=E3=82=92=E6=98=8E=E7=A2=BA=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/unit/user_dict/test_user_dict_model.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/unit/user_dict/test_user_dict_model.py b/test/unit/user_dict/test_user_dict_model.py index ac24951aa..2ab85513e 100644 --- a/test/unit/user_dict/test_user_dict_model.py +++ b/test/unit/user_dict/test_user_dict_model.py @@ -27,7 +27,7 @@ class UserDictWordInputs(TypedDict): def generate_model() -> UserDictWordInputs: - """テスト用入力テンプレートを生成する。""" + """テスト用に UserDictWord の引数からなる辞書を生成する。""" return { "surface": "テスト", "priority": 0, @@ -47,12 +47,12 @@ def generate_model() -> UserDictWordInputs: def test_valid_word() -> None: - """テスト用入力テンプレートは正常値である。""" - # Inputs - test_value = generate_model() + """generate_model 関数は UserDictWord の引数からなる辞書を生成する。""" + # Outputs + args = generate_model() # Test - UserDictWord(**test_value) + UserDictWord(**args) def test_convert_to_zenkaku() -> None: From cab051aa41d8b30e1fa26500ebc717d37fe0a4b6 Mon Sep 17 00:00:00 2001 From: Hiroshiba Date: Sat, 29 Jun 2024 02:40:11 +0900 Subject: [PATCH 4/4] Apply suggestions from code review --- test/unit/user_dict/test_user_dict_model.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/unit/user_dict/test_user_dict_model.py b/test/unit/user_dict/test_user_dict_model.py index 2ab85513e..5c9b4753a 100644 --- a/test/unit/user_dict/test_user_dict_model.py +++ b/test/unit/user_dict/test_user_dict_model.py @@ -27,7 +27,7 @@ class UserDictWordInputs(TypedDict): def generate_model() -> UserDictWordInputs: - """テスト用に UserDictWord の引数からなる辞書を生成する。""" + """テスト用に UserDictWord の要素を生成する。""" return { "surface": "テスト", "priority": 0, @@ -47,7 +47,7 @@ def generate_model() -> UserDictWordInputs: def test_valid_word() -> None: - """generate_model 関数は UserDictWord の引数からなる辞書を生成する。""" + """generate_model 関数は UserDictWord の要素を生成する。""" # Outputs args = generate_model() @@ -56,7 +56,7 @@ def test_valid_word() -> None: def test_convert_to_zenkaku() -> None: - """UserDictWord は surface を全角化する。""" + """UserDictWord は surface を全角にする。""" # Inputs test_value = generate_model() test_value["surface"] = "test"