from tools.count_letters_tool import count_letters_impl # server.py から count_letters_impl 関数をインポート
def test_count_letters_impl_basic():
"""基本的なケースをテスト"""
assert count_letters_impl("apple", "p") == 2
assert count_letters_impl("banana", "a") == 3
assert count_letters_impl("Cherry", "r") == 2 # 大文字・小文字を区別しないかのテスト
def test_count_letters_impl_case_insensitive():
"""大文字・小文字を区別しないことを確認するテスト"""
assert count_letters_impl("PineApple", "p") == 3
assert count_letters_impl("PineApple", "P") == 3 # 検索文字が大文字でもOKか
def test_count_letters_impl_no_match():
"""対象文字が含まれないケースをテスト"""
assert count_letters_impl("hello", "x") == 0
assert count_letters_impl("grape", "z") == 0
def test_count_letters_impl_empty_string():
"""空文字列のケースをテスト"""
assert count_letters_impl("", "a") == 0
# `str.count("")` は `len(str) + 1` を返す仕様に基づき、
# `letter` が空文字列の場合、`len(word) + 1` が返ることを確認
assert count_letters_impl("abc", "") == 4
assert count_letters_impl("", "") == 1
def test_count_letters_impl_same_char():
"""すべて同じ文字のケースをテスト"""
assert count_letters_impl("aaaaa", "a") == 5
assert count_letters_impl("BBBB", "b") == 4
def test_count_letters_impl_multi_char_letter():
"""検索文字が複数文字の場合のテスト (str.count は重複しない出現回数をカウント)"""
assert count_letters_impl("applepie", "ppl") == 1
assert count_letters_impl("banana", "ana") == 1
assert count_letters_impl("mississippi", "issi") == 1
assert count_letters_impl("mississippi", "ssi") == 2 # "ssi" at index 2, then "ssi" at index 5
assert count_letters_impl("foobarfoo", "foo") == 2
assert count_letters_impl("aaaaa", "aa") == 2 # "aa" at index 0, then "aa" at index 2