import { SelfDescribing } from "./SelfDescribing.js";
import { NullDescription } from "./NullDescription.js";

/**
 * Heavily influenced by Hamcrest, pretty much a straight port
 * @template T
 */
export class Matcher extends SelfDescribing {

    /**
     *
     * @param {T} item
     * @param {Description} [mismatch_description]
     * @returns {boolean}
     */
    matches(item, mismatch_description = NullDescription.INSTANCE) {
        throw new Error('Not Implemented');
    }

    /**
     *
     * @param {T} item
     * @param {Description} mismatch_description
     * @returns {void}
     */
    describeMismatch(item, mismatch_description) {
        throw new Error('Not Implemented');
    }
}

/**
 * @readonly
 * @type {boolean}
 */
Matcher.prototype.isMatcher = true;
