.equals replaced with ==

This commit is contained in:
Ghost_Element 2024-01-10 21:36:30 +01:00
parent c81659c1f9
commit e519563023
3 changed files with 134 additions and 46 deletions

80
.idea/workspace.xml generated
View file

@ -4,10 +4,10 @@
<option name="autoReloadType" value="SELECTIVE" /> <option name="autoReloadType" value="SELECTIVE" />
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="f5e08808-a5af-4c89-a1ee-21b3bcb9ae3e" name="Changes" comment="guess what works now, fker:)"> <list default="true" id="f5e08808-a5af-4c89-a1ee-21b3bcb9ae3e" name="Changes" comment="just some fancy shit added">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.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/NFAFactoryImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAFactoryImpl.java" 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$/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$/src/test/java/ab1/tests/myTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/ab1/tests/myTests.java" afterDir="false" />
</list> </list>
<list id="39d4ccb3-eae9-4ed4-996a-5a13f44678fa" name="Changes by carol" comment="" /> <list id="39d4ccb3-eae9-4ed4-996a-5a13f44678fa" name="Changes by carol" comment="" />
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
@ -64,7 +64,10 @@
"JUnit.ComplexTests.finite2Test.executor": "Debug", "JUnit.ComplexTests.finite2Test.executor": "Debug",
"JUnit.ComplexTests.intersection1Test.executor": "Run", "JUnit.ComplexTests.intersection1Test.executor": "Run",
"JUnit.ComplexTests.intersection2Test.executor": "Run", "JUnit.ComplexTests.intersection2Test.executor": "Run",
"JUnit.myTests.executor": "Run",
"JUnit.myTests.intersection1Test.executor": "Run", "JUnit.myTests.intersection1Test.executor": "Run",
"JUnit.myTests.myTest_1.executor": "Run",
"JUnit.myTests.myTest_2.executor": "Run",
"RunOnceActivity.OpenProjectViewOnStart": "true", "RunOnceActivity.OpenProjectViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true", "RunOnceActivity.ShowReadmeOnStart": "true",
"WebServerToolWindowFactoryState": "false", "WebServerToolWindowFactoryState": "false",
@ -83,7 +86,7 @@
"vue.rearranger.settings.migration": "true" "vue.rearranger.settings.migration": "true"
} }
}]]></component> }]]></component>
<component name="RunManager" selected="JUnit.ComplexTests"> <component name="RunManager" selected="JUnit.myTests">
<configuration name="ComplexTests" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true"> <configuration name="ComplexTests" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="ETI_Abgabe" /> <module name="ETI_Abgabe" />
<extension name="coverage"> <extension name="coverage">
@ -99,22 +102,6 @@
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
</method> </method>
</configuration> </configuration>
<configuration name="ComplexTests.finite1Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="ETI_Abgabe" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="ab1.tests.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="PACKAGE_NAME" value="ab1.tests" />
<option name="MAIN_CLASS_NAME" value="ab1.tests.ComplexTests" />
<option name="METHOD_NAME" value="finite1Test" />
<option name="TEST_OBJECT" value="method" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="ComplexTests.finite2Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true"> <configuration name="ComplexTests.finite2Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="ETI_Abgabe" /> <module name="ETI_Abgabe" />
<extension name="coverage"> <extension name="coverage">
@ -131,7 +118,7 @@
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
</method> </method>
</configuration> </configuration>
<configuration name="ComplexTests.intersection1Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true"> <configuration name="myTests" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="ETI_Abgabe" /> <module name="ETI_Abgabe" />
<extension name="coverage"> <extension name="coverage">
<pattern> <pattern>
@ -140,14 +127,29 @@
</pattern> </pattern>
</extension> </extension>
<option name="PACKAGE_NAME" value="ab1.tests" /> <option name="PACKAGE_NAME" value="ab1.tests" />
<option name="MAIN_CLASS_NAME" value="ab1.tests.ComplexTests" /> <option name="MAIN_CLASS_NAME" value="ab1.tests.myTests" />
<option name="METHOD_NAME" value="intersection1Test" /> <option name="TEST_OBJECT" value="class" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="myTests.myTest_1" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="ETI_Abgabe" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="ab1.tests.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="PACKAGE_NAME" value="ab1.tests" />
<option name="MAIN_CLASS_NAME" value="ab1.tests.myTests" />
<option name="METHOD_NAME" value="myTest_1" />
<option name="TEST_OBJECT" value="method" /> <option name="TEST_OBJECT" value="method" />
<method v="2"> <method v="2">
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
</method> </method>
</configuration> </configuration>
<configuration name="ComplexTests.intersection2Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true"> <configuration name="myTests.myTest_2" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="ETI_Abgabe" /> <module name="ETI_Abgabe" />
<extension name="coverage"> <extension name="coverage">
<pattern> <pattern>
@ -156,8 +158,8 @@
</pattern> </pattern>
</extension> </extension>
<option name="PACKAGE_NAME" value="ab1.tests" /> <option name="PACKAGE_NAME" value="ab1.tests" />
<option name="MAIN_CLASS_NAME" value="ab1.tests.ComplexTests" /> <option name="MAIN_CLASS_NAME" value="ab1.tests.myTests" />
<option name="METHOD_NAME" value="intersection2Test" /> <option name="METHOD_NAME" value="myTest_2" />
<option name="TEST_OBJECT" value="method" /> <option name="TEST_OBJECT" value="method" />
<method v="2"> <method v="2">
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
@ -176,11 +178,11 @@
</configuration> </configuration>
<recent_temporary> <recent_temporary>
<list> <list>
<item itemvalue="JUnit.myTests" />
<item itemvalue="JUnit.myTests.myTest_2" />
<item itemvalue="JUnit.ComplexTests" /> <item itemvalue="JUnit.ComplexTests" />
<item itemvalue="JUnit.myTests.myTest_1" />
<item itemvalue="JUnit.ComplexTests.finite2Test" /> <item itemvalue="JUnit.ComplexTests.finite2Test" />
<item itemvalue="JUnit.ComplexTests.finite1Test" />
<item itemvalue="JUnit.ComplexTests.intersection2Test" />
<item itemvalue="JUnit.ComplexTests.intersection1Test" />
</list> </list>
</recent_temporary> </recent_temporary>
</component> </component>
@ -284,7 +286,15 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1704896842030</updated> <updated>1704896842030</updated>
</task> </task>
<option name="localTasksCounter" value="11" /> <task id="LOCAL-00011" summary="just some fancy shit added">
<option name="closed" value="true" />
<created>1704898189901</created>
<option name="number" value="00011" />
<option name="presentableId" value="LOCAL-00011" />
<option name="project" value="LOCAL" />
<updated>1704898189902</updated>
</task>
<option name="localTasksCounter" value="12" />
<servers /> <servers />
</component> </component>
<component name="TypeScriptGeneratedFilesManager"> <component name="TypeScriptGeneratedFilesManager">
@ -310,7 +320,8 @@
<MESSAGE value="changed nfaAddTrap, bei dem Fall, dass Transition.readSymbol() einen nullwert zurückgibt. (Thx ChatGBT)&#10;-&gt; intersectionTests funktionieren" /> <MESSAGE value="changed nfaAddTrap, bei dem Fall, dass Transition.readSymbol() einen nullwert zurückgibt. (Thx ChatGBT)&#10;-&gt; intersectionTests funktionieren" />
<MESSAGE value="isFinite methode recursiv..." /> <MESSAGE value="isFinite methode recursiv..." />
<MESSAGE value="guess what works now, fker:)" /> <MESSAGE value="guess what works now, fker:)" />
<option name="LAST_COMMIT_MESSAGE" value="guess what works now, fker:)" /> <MESSAGE value="just some fancy shit added" />
<option name="LAST_COMMIT_MESSAGE" value="just some fancy shit added" />
</component> </component>
<component name="XDebuggerManager"> <component name="XDebuggerManager">
<breakpoint-manager> <breakpoint-manager>
@ -325,11 +336,10 @@
<line>355</line> <line>355</line>
<option name="timeStamp" value="53" /> <option name="timeStamp" value="53" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="java-line"> <breakpoint enabled="true" type="java-exception">
<url>file://$PROJECT_DIR$/src/test/java/ab1/tests/ComplexTests.java</url> <properties class="ab1.FinalizedStateException" package="ab1" />
<line>141</line> <option name="timeStamp" value="62" />
<option name="timeStamp" value="59" /> </breakpoint>
</line-breakpoint>
</breakpoints> </breakpoints>
</breakpoint-manager> </breakpoint-manager>
<watches-manager> <watches-manager>

View file

@ -423,7 +423,7 @@ public class NFAImpl implements NFA {
Character readSymbol = path.get(path.size()-1).getElement_1(); Character readSymbol = path.get(path.size()-1).getElement_1();
Transition currentTransition = new Transition(fromState, readSymbol, path.get(path.size()-1).getElement_2()); Transition currentTransition = new Transition(fromState, readSymbol, path.get(path.size()-1).getElement_2());
for(int i=transitions.indexOf(currentTransition)+1;i<transitions.size();i++){ for(int i=transitions.indexOf(currentTransition)+1;i<transitions.size();i++){
if(transitions.get(i).fromState().equals(fromState) && transitions.get(i).readSymbol().equals(readSymbol)){ if(transitions.get(i).fromState().equals(fromState) && transitions.get(i).readSymbol()==(readSymbol)){
String newState = transitions.get(i).toState(); String newState = transitions.get(i).toState();
if (stateInPath(path, newState)) { if (stateInPath(path, newState)) {
//loop! //loop!
@ -488,7 +488,7 @@ public class NFAImpl implements NFA {
private String checkForNewLetter(List<Tuple> path, List<Transition> transitions, Character letter){ private String checkForNewLetter(List<Tuple> path, List<Transition> transitions, Character letter){
String fromState = path.get(path.size()-2).getElement_2(); String fromState = path.get(path.size()-2).getElement_2();
for(Transition transition : transitions){ for(Transition transition : transitions){
if (transition.fromState().equals(fromState) && transition.readSymbol().equals(letter)) { if (transition.fromState().equals(fromState) && transition.readSymbol()==(letter)) {
//found new Transition //found new Transition
path.remove(path.size()-1); path.remove(path.size()-1);
return transition.toState(); return transition.toState();
@ -507,7 +507,7 @@ public class NFAImpl implements NFA {
String fromState = path.get(path.size()-1).getElement_2(); String fromState = path.get(path.size()-1).getElement_2();
for(Character letter : letters) { for(Character letter : letters) {
for (Transition transition : transitions) { for (Transition transition : transitions) {
if(transition.fromState().equals(fromState)&&transition.readSymbol().equals(letter)){ if(transition.fromState().equals(fromState)&&transition.readSymbol()==(letter)){
//found new Transition //found new Transition
if(stateInPath(path, transition.toState())) { if(stateInPath(path, transition.toState())) {
//loop! //loop!

View file

@ -5,6 +5,9 @@ import ab1.NFAFactory;
import ab1.NFAProvider; import ab1.NFAProvider;
import ab1.Transition; import ab1.Transition;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.Random;
import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
@ -12,19 +15,94 @@ public class myTests {
private final NFAFactory factory = NFAProvider.provideFactory(); private final NFAFactory factory = NFAProvider.provideFactory();
@Test @Test
public void intersection1Test() { public void myTest_1() {
var nfaA = buildCharLanguage('a'); NFA nfa_nothing_1 = factory.buildNFA("START");
var nfaB = buildCharLanguage('b'); nfa_nothing_1.addAcceptingState("START");
nfa_nothing_1.finalizeAutomaton();
assertTrue(nfa_nothing_1.acceptsWord(""));
assertTrue(nfa_nothing_1.isFinite());
NFA nfa_everything = nfa_nothing_1.complement();
assertFalse(nfa_everything.acceptsWord(""));
NFA nfa_nothing_2 = factory.buildNFA("START");
nfa_nothing_2.addAcceptingState("START");
nfa_nothing_2.finalizeAutomaton();
NFA nfa_union_1 = nfa_nothing_1.union(nfa_nothing_2);
assertTrue(nfa_union_1.acceptsWord(""));
assertFalse(nfa_union_1.acceptsWord("a"));
assertFalse(nfa_union_1.acceptsWord("aa"));
assertFalse(nfa_union_1.acceptsWord("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
assertFalse(nfa_union_1.acceptsWord("sdafhuwifhcauwnfxuawnehuinfhu"));
assertFalse(nfa_union_1.acceptsWord(" "));
NFA nfa_complete_everything = nfa_nothing_1.union(nfa_everything);
assertTrue(nfa_complete_everything.acceptsWord(""));
assertTrue(nfa_complete_everything.acceptsWord("a"));
assertTrue(nfa_complete_everything.acceptsWord("dsahfuanewqnx"));
var testInstance = nfaA.intersection(nfaB);
assertFalse(testInstance.acceptsWord("a"));
assertFalse(testInstance.acceptsWord("b"));
assertFalse(testInstance.acceptsWord("ab"));
assertFalse(testInstance.acceptsWord("ba"));
} }
@Test
public void myTest_2(){
NFA nfa_abcd = factory.buildNFA("START");
nfa_abcd.addTransition(new Transition("START", 'a', "1"));
nfa_abcd.addTransition(new Transition("START", 'b', "2"));
nfa_abcd.addTransition(new Transition("START", 'c', "3"));
nfa_abcd.addTransition(new Transition("START", 'd', "4"));
nfa_abcd.addTransition(new Transition("1", null, "END"));
nfa_abcd.addTransition(new Transition("2", null, "END"));
nfa_abcd.addTransition(new Transition("3", null, "END"));
nfa_abcd.addTransition(new Transition("4", null, "END"));
nfa_abcd.addAcceptingState("END");
assertTrue(nfa_abcd.isFinite());
nfa_abcd.addTransition(new Transition("3", 'c', "3"));
assertFalse(nfa_abcd.isFinite());
nfa_abcd.addTransition(new Transition("3", null, "START"));
NFA nfa_cfg = factory.buildNFA("START");
nfa_cfg.addTransition(new Transition("START", 'c', "1"));
nfa_cfg.addTransition(new Transition("START", 'f', "2"));
nfa_cfg.addTransition(new Transition("START", 'g', "3"));
nfa_cfg.addAcceptingState("1");
nfa_cfg.addAcceptingState("2");
nfa_cfg.addAcceptingState("3");
nfa_cfg.addTransition(new Transition("1", null, "START"));
nfa_abcd.finalizeAutomaton();
nfa_cfg.finalizeAutomaton();
assertTrue(nfa_cfg.acceptsWord("c"));
assertTrue(nfa_cfg.acceptsWord("ccccccccccccccc"));
assertTrue(nfa_abcd.acceptsWord("ccccccccccccccccca"));
assertTrue(nfa_abcd.acceptsWord("a"));
assertFalse(nfa_cfg.acceptsWord("aa"));
NFA nfa_interception_1 = nfa_abcd.intersection(nfa_cfg);
assertFalse(nfa_interception_1.acceptsWord("cccccccca"));
assertFalse(nfa_interception_1.acceptsWord("cccccccca"));
assertFalse(nfa_interception_1.acceptsWord("cf"));
assertFalse(nfa_interception_1.acceptsWord("d"));
assertTrue(nfa_interception_1.acceptsWord("c"));
assertTrue(nfa_interception_1.acceptsWord("cccccc"));
assertFalse(nfa_interception_1.isFinite());
}
@Test
public void myTest_3(){
Random random = new Random();
NFA nfa = factory.buildNFA("0");
int i=0;
for(i=0;i<10;i++){
nfa.addTransition(new Transition(""+i, 'a', ""+(i+1)));
nfa.addTransition(new Transition(""+i, 'a', ""+(i+1)));
}
nfa.addAcceptingState(""+(i+1));
assertTrue(nfa.isFinite());
int random_int = random.nextInt(26);
}