All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.cthul.matchers.diagnose.result.MatchResultBase Maven / Gradle / Ivy

Go to download

Provides hamcrest.org matchers for strings and exceptions, allows matching code blocks, and provides several utilities for combining matchers.

The newest version!
package org.cthul.matchers.diagnose.result;

import org.cthul.matchers.diagnose.nested.Nested;
import org.cthul.matchers.diagnose.nested.PrecedencedSelfDescribing;
import org.cthul.matchers.diagnose.nested.PrecedencedSelfDescribingBase;
import org.hamcrest.Description;
import org.hamcrest.Matcher;

/**
 * @see MatchResultSuccess
 * @see MatchResultMismatch
 * @see AbstractMatchResult
 * @see MatchResultProxy
 */
public abstract class MatchResultBase> 
                extends PrecedencedSelfDescribingBase
                implements MatchResult {

    private final T value;
    private final M matcher;

    public MatchResultBase(T value, M matcher) {
        this.value = value;
        this.matcher = matcher;
    }
    
    @Override
    public T getValue() {
        return value;
    }

    @Override
    public M getMatcher() {
        return matcher;
    }

    @Override
    public void describeMatcher(Description d) {
        d.appendDescriptionOf(getMatcher());
    }
    
    @Override
    public int getMatcherPrecedence() {
        return Nested.precedenceOf(getMatcher());
    }

    @Override
    public PrecedencedSelfDescribing getMatcherDescription() {
        final Matcher m = getMatcher();
        if (m instanceof PrecedencedSelfDescribing) {
            return (PrecedencedSelfDescribing) m;
        } else {
            return new PrecedencedSelfDescribingBase() {
                @Override
                public void describeTo(Description description) {
                    description.appendDescriptionOf(m);
                }
                @Override
                public int getDescriptionPrecedence() {
                    return getMatcherPrecedence();
                }
            };
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy