<commit_before>package xyz.hotchpotch.jutaime.throwable;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * オペレーションによりスローされる例外およびエラーを検査するための、オペレーションのラッパーです。<br>
 * 戻り値を返すタイプのオペレーションおよび返さないタイプのオペレーションの双方を検査できます。
 * また、{@link Throwable} を含む任意の例外またはエラーを検査できます。<br>
 * {@link RaiseMatchers} と組み合わせた利用方法については、{@link xyz.hotchpotch.jutaime.throwable パッケージの説明}を参照してください。<br>
 * <br>
 * 次の例のように、ひとつの {@code Testee} オブジェクトはひとつの {@code assertThat()} メソッド内で複数回評価され得ます。<br>
 * <pre>    assertThat(Testee.of(・・・), allOf(matcher1(・・・), matcher2(・・・), matcher3(・・・)));</pre>
 * テスト結果の一貫性を保つために、{@code Testee} は検査対象のオペレーションを一度だけ実行し、2回目以降はキャプチャした1回目の結果を返します。<br>
 * <br>
 * この実装はスレッドセーフです。<br>
 * 想定しづらいことではありますが、たとえば上の例における {@code allOf()} の実装によっては、
 * ひとつの {@code Testee} オブジェクトが複数のスレッド上の {@code Matcher} から操作・参照され得ます。
 * {@code Testee} クラスはそのような場合でも正しく動作するように設計されています。<br>
 * 
 * @see xyz.hotchpotch.jutaime.throwable
 * @see RaiseMatchers
 * @see org.junit.Assert#assertThat(Object, org.hamcrest.Matcher)
 * @author nmby
 */
public class Testee implements UnsafeCallable<Object> {
    
    // ++++++++++++++++ static members ++++++++++++++++
    
    private static final String MSG_COMPLETED_SAFELY = "Completed safely.";
    private static final String MSG_NOT_TESTED = "I haven't yet been tested.";
    
    /**
     * 戻り値を返すタイプのオペレーションを検査するための {@code Testee} オブジェクトを返します。<br>
     * 
     * @param operation 例外またはエラーをスローしうるオペレーション
     * @return {@code operation} を検査するための {@code Testee}
     * @throws NullPointerException {@code operation} が {@code null} の場合
     */
    public static Testee of(UnsafeCallable<?> operation) {
        return new Testee(Objects.requireNonNull(operation));
    }<commit_msg>javadoc 修正<commit_after>package xyz.hotchpotch.jutaime.throwable;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * オペレーションによりスローされる例外およびエラーを検査するための、オペレーションのラッパーです。<br>
 * 戻り値を返すタイプのオペレーションおよび返さないタイプのオペレーションの双方を検査できます。
 * また、{@link Throwable} を含む任意の例外またはエラーを検査できます。<br>
 * {@link RaiseMatchers} と組み合わせた利用方法については、{@link xyz.hotchpotch.jutaime.throwable パッケージの説明}を参照してください。<br>
 * <br>
 * 次の例のように、ひとつの {@code Testee} オブジェクトはひとつの {@code assertThat()} メソッド内で複数回評価され得ます。<br>
 * <pre>    assertThat(Testee.of(・・・), allOf(matcher1(・・・), matcher2(・・・), matcher3(・・・)));</pre>
 * テスト結果の一貫性を保つために、{@code Testee} は検査対象のオペレーションを一度だけ実行し、2回目以降はキャプチャした1回目の結果を返します。<br>
 * <br>
 * この実装はスレッドセーフです。<br>
 * たとえば上の例における {@code allOf()} の実装によっては、
 * ひとつの {@code Testee} オブジェクトが複数のスレッド上の {@code Matcher} から操作・参照され得ます。
 * {@code Testee} クラスはそのような場合でも正しく動作するように設計されています。<br>
 * 
 * @see xyz.hotchpotch.jutaime.throwable
 * @see RaiseMatchers
 * @see org.junit.Assert#assertThat(Object, org.hamcrest.Matcher)
 * @author nmby
 */
public class Testee implements UnsafeCallable<Object> {
    
    // ++++++++++++++++ static members ++++++++++++++++
    
    private static final String MSG_COMPLETED_SAFELY = "Completed safely.";
    private static final String MSG_NOT_TESTED = "I haven't yet been tested.";
    
    /**
     * 戻り値を返すタイプのオペレーションを検査するための {@code Testee} オブジェクトを返します。<br>
     * 
     * @param operation 例外またはエラーをスローしうるオペレーション
     * @return {@code operation} を検査するための {@code Testee}
     * @throws NullPointerException {@code operation} が {@code null} の場合
     */
    public static Testee of(UnsafeCallable<?> operation) {
        return new Testee(Objects.requireNonNull(operation));
    }
{'fraction_non_alphanumeric': 0.1449793672627235, 'fraction_numerical': 0.002751031636863824, 'mean_word_length': 5.183673469387755, 'pattern_counts': {'":': 0, '<': 31, '<?xml version=': 0, '>': 31, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1115857', 'n_tokens_mistral': 1938, 'n_tokens_neox': 1905, 'n_words': 237}