changed nfaAddTrap, bei dem Fall, dass Transition.readSymbol() einen nullwert zurückgibt. (Thx ChatGBT)
-> intersectionTests funktionieren
This commit is contained in:
parent
4422270452
commit
f0207de511
8 changed files with 132 additions and 39 deletions
5
.idea/jarRepositories.xml
generated
5
.idea/jarRepositories.xml
generated
|
|
@ -6,6 +6,11 @@
|
|||
<option name="name" value="libs-release" />
|
||||
<option name="url" value="${env.ARTIFACTORY_URL}/maven" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="https://repo.maven.apache.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="snapshots" />
|
||||
<option name="name" value="libs-snapshot" />
|
||||
|
|
|
|||
3
.idea/misc.xml
generated
3
.idea/misc.xml
generated
|
|
@ -7,11 +7,12 @@
|
|||
<option value="$PROJECT_DIR$/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="workspaceImportForciblyTurnedOn" value="true" />
|
||||
</component>
|
||||
<component name="PWA">
|
||||
<option name="wasEnabledAtLeastOnce" value="true" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="openjdk-21" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_19" default="true" project-jdk-name="openjdk-19" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
76
.idea/workspace.xml
generated
76
.idea/workspace.xml
generated
|
|
@ -5,10 +5,14 @@
|
|||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="f5e08808-a5af-4c89-a1ee-21b3bcb9ae3e" name="Changes" comment="concat GEHT">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_08_01_2024_18_35__Changes_.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_08_01_2024_18_35__Changes_.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/test/java/ab1/tests/myTests.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/jarRepositories.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/jarRepositories.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAImpl.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/ab1/impl/GRUPPE/NFAImpl.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/ab1/Transition$TransitionBuilder.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/ab1/Transition$TransitionBuilder.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/ab1/Transition.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/ab1/Transition.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/test-classes/ab1/tests/FinalizeTests.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/ab1/tests/FinalizeTests.class" afterDir="false" />
|
||||
</list>
|
||||
<list id="39d4ccb3-eae9-4ed4-996a-5a13f44678fa" name="Changes by carol" comment="" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
|
|
@ -16,6 +20,13 @@
|
|||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="Class" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||
<map>
|
||||
|
|
@ -53,6 +64,9 @@
|
|||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"JUnit.ComplexTests.executor": "Run",
|
||||
"JUnit.ComplexTests.intersection1Test.executor": "Run",
|
||||
"JUnit.myTests.intersection1Test.executor": "Debug",
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"WebServerToolWindowFactoryState": "false",
|
||||
|
|
@ -71,8 +85,8 @@
|
|||
"vue.rearranger.settings.migration": "true"
|
||||
}
|
||||
}]]></component>
|
||||
<component name="RunManager" selected="JUnit.ab1 in ETI_Abgabe">
|
||||
<configuration name="ComplexTests.complement1Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
||||
<component name="RunManager" selected="JUnit.ComplexTests">
|
||||
<configuration name="ComplexTests" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
||||
<module name="ETI_Abgabe" />
|
||||
<extension name="coverage">
|
||||
<pattern>
|
||||
|
|
@ -82,14 +96,12 @@
|
|||
</extension>
|
||||
<option name="PACKAGE_NAME" value="ab1.tests" />
|
||||
<option name="MAIN_CLASS_NAME" value="ab1.tests.ComplexTests" />
|
||||
<option name="METHOD_NAME" value="complement1Test" />
|
||||
<option name="TEST_OBJECT" value="method" />
|
||||
<dir value="$PROJECT_DIR$/src/test/java/ab1" />
|
||||
<option name="TEST_OBJECT" value="class" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="ComplexTests.plus1Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
||||
<configuration name="ComplexTests.intersection1Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
||||
<module name="ETI_Abgabe" />
|
||||
<extension name="coverage">
|
||||
<pattern>
|
||||
|
|
@ -99,14 +111,13 @@
|
|||
</extension>
|
||||
<option name="PACKAGE_NAME" value="ab1.tests" />
|
||||
<option name="MAIN_CLASS_NAME" value="ab1.tests.ComplexTests" />
|
||||
<option name="METHOD_NAME" value="plus1Test" />
|
||||
<option name="METHOD_NAME" value="intersection1Test" />
|
||||
<option name="TEST_OBJECT" value="method" />
|
||||
<dir value="$PROJECT_DIR$/src/test/java/ab1" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="ComplexTests.union1Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
||||
<configuration name="ComplexTests.intersection2Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
||||
<module name="ETI_Abgabe" />
|
||||
<extension name="coverage">
|
||||
<pattern>
|
||||
|
|
@ -116,7 +127,7 @@
|
|||
</extension>
|
||||
<option name="PACKAGE_NAME" value="ab1.tests" />
|
||||
<option name="MAIN_CLASS_NAME" value="ab1.tests.ComplexTests" />
|
||||
<option name="METHOD_NAME" value="union1Test" />
|
||||
<option name="METHOD_NAME" value="intersection2Test" />
|
||||
<option name="TEST_OBJECT" value="method" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
|
|
@ -130,7 +141,7 @@
|
|||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="ab1.tests in ETI_Abgabe" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
||||
<configuration name="myTests.intersection1Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
||||
<module name="ETI_Abgabe" />
|
||||
<extension name="coverage">
|
||||
<pattern>
|
||||
|
|
@ -139,7 +150,9 @@
|
|||
</pattern>
|
||||
</extension>
|
||||
<option name="PACKAGE_NAME" value="ab1.tests" />
|
||||
<option name="TEST_OBJECT" value="package" />
|
||||
<option name="MAIN_CLASS_NAME" value="ab1.tests.myTests" />
|
||||
<option name="METHOD_NAME" value="intersection1Test" />
|
||||
<option name="TEST_OBJECT" value="method" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
|
|
@ -157,11 +170,11 @@
|
|||
</configuration>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="JUnit.ComplexTests" />
|
||||
<item itemvalue="JUnit.ComplexTests.intersection2Test" />
|
||||
<item itemvalue="JUnit.ComplexTests.intersection1Test" />
|
||||
<item itemvalue="JUnit.myTests.intersection1Test" />
|
||||
<item itemvalue="JUnit.ab1 in ETI_Abgabe" />
|
||||
<item itemvalue="JUnit.ComplexTests.plus1Test" />
|
||||
<item itemvalue="JUnit.ComplexTests.complement1Test" />
|
||||
<item itemvalue="JUnit.ComplexTests.union1Test" />
|
||||
<item itemvalue="JUnit.ab1.tests in ETI_Abgabe" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
|
|
@ -269,20 +282,33 @@
|
|||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager>
|
||||
<breakpoints>
|
||||
<line-breakpoint enabled="true" type="java-method">
|
||||
<line-breakpoint enabled="true" type="java-line">
|
||||
<url>file://$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAImpl.java</url>
|
||||
<line>336</line>
|
||||
<properties class="ab1.impl.GRUPPE.NFAImpl" method="complement">
|
||||
<option name="EMULATED" value="true" />
|
||||
<option name="WATCH_EXIT" value="false" />
|
||||
</properties>
|
||||
<option name="timeStamp" value="13" />
|
||||
<line>211</line>
|
||||
<option name="timeStamp" value="43" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="java-line">
|
||||
<url>file://$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAImpl.java</url>
|
||||
<line>343</line>
|
||||
<option name="timeStamp" value="44" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="java-line">
|
||||
<url>file://$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAImpl.java</url>
|
||||
<line>355</line>
|
||||
<option name="timeStamp" value="53" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="java-line">
|
||||
<url>file://$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAImpl.java</url>
|
||||
<line>523</line>
|
||||
<option name="timeStamp" value="55" />
|
||||
</line-breakpoint>
|
||||
</breakpoints>
|
||||
</breakpoint-manager>
|
||||
<watches-manager>
|
||||
<configuration name="JUnit">
|
||||
<watch expression="((HashSet)((NFAImpl)testInstance).acceptingStates).toArray()[2]" custom="java.util.HashSet,ab1.impl.GRUPPE.NFAImpl" />
|
||||
<watch expression="transition.readSymbol()" />
|
||||
<watch expression="transition.readSymbol()==letter" />
|
||||
</configuration>
|
||||
</watches-manager>
|
||||
</component>
|
||||
|
|
|
|||
|
|
@ -206,15 +206,11 @@ public class NFAImpl implements NFA {
|
|||
if (!this.isFinalized || !other.isFinalized()) {
|
||||
throw new FinalizedStateException();
|
||||
}
|
||||
NFAImpl intersectionNFA = new NFAImpl(this.initialState);
|
||||
|
||||
intersectionNFA.states.addAll(this.states);
|
||||
intersectionNFA.states.retainAll(other.getStates());
|
||||
|
||||
intersectionNFA.transitions.addAll(this.transitions);
|
||||
intersectionNFA.transitions.retainAll(other.getTransitions());
|
||||
|
||||
return intersectionNFA;
|
||||
NFA newNFA_A = this.complement();
|
||||
NFA newNFA_B = other.complement();
|
||||
NFA unionNFA = newNFA_A.union(newNFA_B);
|
||||
NFA result = unionNFA.complement();
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -345,7 +341,7 @@ public class NFAImpl implements NFA {
|
|||
nfa.addAllTransitions(this.transitions);
|
||||
nfa.addAllAcceptingStates(this.acceptingStates);
|
||||
|
||||
nfaAddTrap(nfa);
|
||||
nfaAddTrap(nfa); //error on last occasion
|
||||
|
||||
NFAImpl fakeNFA = convertNFAtoDFA(nfa);
|
||||
|
||||
|
|
@ -524,11 +520,13 @@ public class NFAImpl implements NFA {
|
|||
for(char letter : completeAlphabet){
|
||||
boolean hasTransition = false;
|
||||
for(Transition transition : input.getTransitions()){
|
||||
if(transition.fromState().equals(state)&&transition.readSymbol().equals(letter)){
|
||||
if(transition.fromState().equals(state)/*&&transition.readSymbol().equals(letter)*/){
|
||||
if(transition.readSymbol()!= null&&transition.readSymbol()==letter) {
|
||||
hasTransition = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!hasTransition){
|
||||
newTransitions.add(new Transition(state, letter, trap));
|
||||
}
|
||||
|
|
|
|||
63
src/test/java/ab1/tests/myTests.java
Normal file
63
src/test/java/ab1/tests/myTests.java
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
package ab1.tests;
|
||||
|
||||
import ab1.NFA;
|
||||
import ab1.NFAFactory;
|
||||
import ab1.NFAProvider;
|
||||
import ab1.Transition;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
public class myTests {
|
||||
private final NFAFactory factory = NFAProvider.provideFactory();
|
||||
|
||||
@Test
|
||||
public void intersection1Test() {
|
||||
var nfaA = buildCharLanguage('a');
|
||||
var nfaB = buildCharLanguage('b');
|
||||
|
||||
var testInstance = nfaA.intersection(nfaB);
|
||||
|
||||
assertFalse(testInstance.acceptsWord("a"));
|
||||
assertFalse(testInstance.acceptsWord("b"));
|
||||
assertFalse(testInstance.acceptsWord("ab"));
|
||||
assertFalse(testInstance.acceptsWord("ba"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private NFA buildCharStarLanguage(char c) {
|
||||
var instance = factory.buildNFA("START");
|
||||
instance.addTransition(
|
||||
Transition.builder()
|
||||
.fromState("START")
|
||||
.readSymbol(c)
|
||||
.toState("START")
|
||||
.build()
|
||||
);
|
||||
instance.addAcceptingState("START");
|
||||
instance.finalizeAutomaton();
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
private NFA buildCharLanguage(char c) {
|
||||
var instance = factory.buildNFA("START");
|
||||
instance.addTransition(
|
||||
Transition.builder()
|
||||
.fromState("START")
|
||||
.readSymbol(c)
|
||||
.toState("ACCEPT")
|
||||
.build()
|
||||
);
|
||||
instance.addAcceptingState("ACCEPT");
|
||||
instance.finalizeAutomaton();
|
||||
|
||||
assertTrue(instance.acceptsWord(String.valueOf(c)));
|
||||
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in a new issue