//
//Author : t.wood
//Copyright : (c) Resilient Networks plc 2012 - All Rights Reserved
//
package com.lexicalscope.jewel.cli.validation;
import com.lexicalscope.jewel.cli.ValidationErrorBuilder;
import com.lexicalscope.jewel.cli.specification.OptionsSpecification;
import org.hamcrest.Description;
import org.hamcrest.TypeSafeMatcher;
public class KnownOptions extends TypeSafeMatcher<RawOption>
{
private final OptionsSpecification<?> specification;
private final ValidationErrorBuilder validationErrorBuilder;
public KnownOptions(final OptionsSpecification<?> specification, final ValidationErrorBuilder validationErrorBuilder)
{
this.specification = specification;
this.validationErrorBuilder = validationErrorBuilder;
}
@Override
public void describeTo(final Description description)
{
description.appendText("option that is part of specification ").appendValue(specification);
}
@Override
protected boolean matchesSafely(final RawOption item)
{
if(!specification.isSpecified(item.stringValue())) {
validationErrorBuilder.unexpectedOption(item.stringValue());
return false;
}
return true;
}
}