This commit is contained in:
Walcher 2024-01-10 20:28:21 +01:00
parent c81659c1f9
commit 8a6cd6a806
6 changed files with 96 additions and 33 deletions

View file

@ -1,30 +0,0 @@
package ab1.impl.GRUPPE;
public class Tuple {
private Character element_1;
public Character getElement_1() {
return element_1;
}
public void setElement_1(Character element_1) {
this.element_1 = element_1;
}
public String getElement_2() {
return element_2;
}
public void setElement_2(String element_2) {
this.element_2 = element_2;
}
private String element_2;
public Tuple(Character firstElement, String secondElement){
this.element_1=firstElement;
this.element_2=secondElement;
}
}

View file

@ -1,4 +1,4 @@
package ab1.impl.GRUPPE; package ab1.impl.gruppe10_aigensberger_dworski_walcher;
import ab1.NFA; import ab1.NFA;
import ab1.NFAFactory; import ab1.NFAFactory;
@ -6,6 +6,9 @@ import ab1.NFAFactory;
public class NFAFactoryImpl implements NFAFactory { public class NFAFactoryImpl implements NFAFactory {
@Override @Override
public NFA buildNFA(String startState) { public NFA buildNFA(String startState) {
if (startState == null) {
return null;
}
return new NFAImpl(startState); return new NFAImpl(startState);
} }
} }

View file

@ -0,0 +1,14 @@
package ab1.impl.gruppe10_aigensberger_dworski_walcher;
import lombok.Getter;
@Getter
public class Tuple {
private final Character element_1;
private final String element_2;
public Tuple(Character firstElement, String secondElement){
this.element_1=firstElement;
this.element_2=secondElement;
}
}

View file

@ -1,6 +1,6 @@
package ab1; package ab1;
import ab1.impl.GRUPPE.NFAFactoryImpl; import ab1.impl.gruppe10_aigensberger_dworski_walcher.NFAFactoryImpl;
public class NFAProvider { public class NFAProvider {
public static NFAFactory provideFactory() { public static NFAFactory provideFactory() {

View file

@ -0,0 +1,76 @@
package ab1.tests.GRUPPE;
import ab1.NFAFactory;
import ab1.NFAProvider;
import ab1.Transition;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class betterSimpleTests {
private final NFAFactory factory = NFAProvider.provideFactory();
@Test
public void invalidInputTest() {
var instance = factory.buildNFA(null);
assertNull(instance);
}
@Test
public void invalidAcceptingState() {
var instance = factory.buildNFA("START");
instance.addAcceptingState(null);
assertEquals(0, instance.getAcceptingStates().size());
}
@Test
public void invalidTransition() {
var instance = factory.buildNFA("START");
assertThrows(IllegalArgumentException.class, () -> instance.addTransition(null));
}
@Test
public void transitionWithoutToState() {
var instance = factory.buildNFA("START");
Transition transition = ab1.Transition.builder()
.readSymbol('a')
.fromState("START")
.build();
assertThrows(IllegalArgumentException.class, () -> instance.addTransition(transition));
}
@Test
public void transitionWithoutExistingToState() {
var instance = factory.buildNFA("START");
instance.addTransition(
ab1.Transition.builder()
.readSymbol('a')
.fromState("START")
.toState("END")
.build()
);
assertEquals(1, instance.getTransitions().size());
assertEquals(2, instance.getStates().size());
assertEquals(0, instance.getAcceptingStates().size());
}
@Test
public void notInAlphabet(){
var instance = factory.buildNFA("START");
instance.addTransition(
ab1.Transition.builder()
.readSymbol('a')
.fromState("START")
.toState("END")
.build()
);
instance.addAcceptingState("END");
instance.finalizeAutomaton();
assertFalse(instance.acceptsWord("b"));
assertTrue(instance.acceptsWord("a"));
assertFalse(instance.acceptsWord("ab"));
}
}

View file

@ -1,4 +1,4 @@
package ab1.tests; package ab1.tests.GRUPPE;
import ab1.NFA; import ab1.NFA;
import ab1.NFAFactory; import ab1.NFAFactory;