• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

LearnLib / learnlib / 6660471831

26 Oct 2023 10:29PM UTC coverage: 93.327% (-0.001%) from 93.328%
6660471831

push

github

mtf90
cleanup statistics filters

32 of 32 new or added lines in 7 files covered. (100.0%)

11734 of 12573 relevant lines covered (93.33%)

1.69 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

44.0
/commons/util/src/main/java/de/learnlib/util/MQUtil.java
1
/* Copyright (C) 2013-2023 TU Dortmund
2
 * This file is part of LearnLib, http://www.learnlib.de/.
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 *     http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16
package de.learnlib.util;
17

18
import java.util.Collection;
19
import java.util.Objects;
20

21
import de.learnlib.api.oracle.MembershipOracle;
22
import de.learnlib.api.oracle.OmegaQueryAnswerer;
23
import de.learnlib.api.oracle.QueryAnswerer;
24
import de.learnlib.api.query.DefaultQuery;
25
import de.learnlib.api.query.OmegaQuery;
26
import de.learnlib.api.query.Query;
27
import net.automatalib.automaton.concept.SuffixOutput;
28
import net.automatalib.common.util.Pair;
29
import net.automatalib.word.Word;
30
import org.checkerframework.checker.nullness.qual.Nullable;
31

32
public final class MQUtil {
33

34
    private MQUtil() {
35
        // prevent instantiation
36
    }
37

38
    public static <I, D> DefaultQuery<I, D> normalize(MembershipOracle<I, D> oracle, DefaultQuery<I, D> query) {
39
        if (query.isNormalized()) {
×
40
            return query;
×
41
        }
42
        return query(oracle, Word.epsilon(), query.getInput());
×
43
    }
44

45
    public static <I, D> DefaultQuery<I, D> query(MembershipOracle<I, D> oracle, Word<I> prefix, Word<I> suffix) {
46
        DefaultQuery<I, D> qry = new DefaultQuery<>(prefix, suffix);
×
47
        oracle.processQuery(qry);
×
48
        return qry;
×
49
    }
50

51
    public static <I, D> DefaultQuery<I, D> query(MembershipOracle<I, D> oracle, Word<I> queryWord) {
52
        return query(oracle, Word.epsilon(), queryWord);
×
53
    }
54

55
    public static <I, D> void answerQueries(QueryAnswerer<I, D> answerer, Collection<? extends Query<I, D>> queries) {
56
        for (Query<I, D> query : queries) {
×
57
            Word<I> prefix = query.getPrefix();
×
58
            Word<I> suffix = query.getSuffix();
×
59
            D answer = answerer.answerQuery(prefix, suffix);
×
60
            query.answer(answer);
×
61
        }
×
62
    }
×
63

64
    public static <S, I, D> void answerOmegaQueries(OmegaQueryAnswerer<S, I, D> answerer,
65
                                                    Collection<? extends OmegaQuery<I, D>> queries) {
66
        for (OmegaQuery<I, D> query : queries) {
1✔
67
            final Word<I> prefix = query.getPrefix();
1✔
68
            final Word<I> loop = query.getLoop();
1✔
69
            final int repeat = query.getRepeat();
1✔
70
            Pair<@Nullable D, Integer> answer = answerer.answerQuery(prefix, loop, repeat);
1✔
71
            query.answer(answer.getFirst(), answer.getSecond());
1✔
72
        }
1✔
73
    }
1✔
74

75
    public static <I, D> boolean isCounterexample(DefaultQuery<I, D> query, SuffixOutput<I, D> hyp) {
76
        D qryOut = query.getOutput();
1✔
77
        D hypOut = hyp.computeSuffixOutput(query.getPrefix(), query.getSuffix());
1✔
78
        return !Objects.equals(qryOut, hypOut);
1✔
79
    }
80
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc