/* Copyright (C) 2013-2017 TU Dortmund
 * This file is part of LearnLib, http://www.learnlib.de/.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package de.learnlib.eqtests.basic;

import de.learnlib.api.EquivalenceOracle;
import de.learnlib.oracles.DefaultQuery;
import net.automatalib.automata.concepts.InputAlphabetHolder;

public class SimpleEQOracle<A extends InputAlphabetHolder<I>, I, D> {

    private final EquivalenceOracle<A, I, D> eqOracle;

    public SimpleEQOracle(EquivalenceOracle<A, I, D> eqOracle) {
        this.eqOracle = eqOracle;
    }

    public static <A extends InputAlphabetHolder<I>, I, D> SimpleEQOracle<A, I, D> create(EquivalenceOracle<A, I, D> eqOracle) {
        return new SimpleEQOracle<>(eqOracle);
    }

    public DefaultQuery<I, D> findCounterExample(A hypothesis) {
        return eqOracle.findCounterExample(hypothesis, hypothesis.getInputAlphabet());
    }
}

@@ -689,16 +689,81 @@
 basic;%0A%0A
+import java.util.Collection;%0A%0Aimport javax.annotation.Nullable;%0A%0A
 import d
@@ -898,16 +898,73 @@
 tHolder;
+%0Aimport org.slf4j.Logger;%0Aimport org.slf4j.LoggerFactory;
 %0A%0Apublic
@@ -1025,17 +1025,144 @@
 , I, D%3E 
-%7B
+implements EquivalenceOracle%3CA, I, D%3E %7B%0A%0A    private static final Logger LOGGER = LoggerFactory.getLogger(SimpleEQOracle.class);
 %0A%0A    pr
@@ -1492,32 +1492,60 @@
 Oracle);%0A    %7D%0A%0A
+    @Nullable%0A    @Override%0A
     public Defau
@@ -1589,19 +1589,199 @@
 pothesis
-) %7B
+, Collection%3C? extends I%3E inputs) %7B%0A        LOGGER.debug(%22Ignoring the set of inputs '%7B%7D', because I always use the complete hypothesis' input alphabet%22,%0A                     inputs);
 %0A       

make SimpleEQOracle implement EquivalenceOracle