From 2c0ba72e17abf22eb1b8f84d9586426e29f0cfca Mon Sep 17 00:00:00 2001 From: happymeal2024 Date: Fri, 4 Jul 2025 21:36:36 +0200 Subject: [PATCH] update new tests --- src/main/java/de/vimo/core/ParserVivi.java | 97 ++++++++++++++++++ src/test/java/de/vimo/core/ParserTest.java | 69 ++++++++----- target/classes/de/vimo/core/ParserVivi.class | Bin 0 -> 2477 bytes .../de/vimo/core/ParserTest$1.class | Bin 1820 -> 0 bytes .../de/vimo/core/ParserTest.class | Bin 2559 -> 2737 bytes 5 files changed, 138 insertions(+), 28 deletions(-) create mode 100644 src/main/java/de/vimo/core/ParserVivi.java create mode 100644 target/classes/de/vimo/core/ParserVivi.class delete mode 100644 target/test-classes/de/vimo/core/ParserTest$1.class diff --git a/src/main/java/de/vimo/core/ParserVivi.java b/src/main/java/de/vimo/core/ParserVivi.java new file mode 100644 index 0000000..2d54cf6 --- /dev/null +++ b/src/main/java/de/vimo/core/ParserVivi.java @@ -0,0 +1,97 @@ +package de.vimo.core; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class ParserVivi implements Parser { + + private int positionFlag; + private String regex = "\\s"; + private List flagsS; + private String command = null; + private String[] splitFlag; + private String result; + + @Override + public Line parse(String raw) { + + List flagAll = new ArrayList<>(List.of()); + List argsS = new ArrayList<>(List.of()); + Line resultLine = null; + + String[] myArray = raw.split(regex); + + for (int i = 0; i < myArray.length; i++) { + + if (!myArray[i].isEmpty()) { + + if (myArray[0].equals("-")) { + + resultLine = null; + + } else if (myArray[i].contains("./") || myArray[i].contains("/") || + myArray[i].contains(".")) { + + argsS.add(myArray[i]); + resultLine = new Line(command, flagAll, argsS); + + } else if (myArray.length == 1 && myArray[0].equals("ls")) { + + resultLine = new Line(myArray[0], flagAll, argsS); + + } else if (myArray[0].equals("ls") && myArray[1].equals("-")) { + + resultLine = null; + + } else if (myArray[0].equals("ls") && myArray[1].equals("--")) { + + resultLine = null; + + } else if (myArray[i].equals("super") && !myArray[i].contains("-") && + positionFlag == 0) { + + command = myArray[i]; + resultLine = new Line(command, flagAll, argsS); + + } else if (myArray[i].equals("ls") || myArray[i].equals("rm") || + myArray[i].equals("cd") || myArray[i].equals("mkdir")) { + + command = myArray[i]; + resultLine = new Line(command, flagAll, argsS); + + } else if (myArray[i].contains("-")) { + positionFlag = i; + + splitFlag = myArray[i].split("-"); + + if (splitFlag[0].isEmpty()) { + result = myArray[i].replace("-", ""); + + flagsS = List.of(result.split("")); + flagAll.addAll(flagsS); + + resultLine = new Line(command, flagAll, argsS); + } else { + argsS.add(myArray[i]); + resultLine = new Line(command, flagAll, argsS); + } + + } else if (!myArray[i].contains("-") && i > positionFlag && i != 0) { + + argsS.add(myArray[i]); + resultLine = new Line(command, flagAll, argsS); + } else { + command = myArray[i]; + resultLine = null; + } + } else { + if (myArray.length == 1) { + resultLine = null; + } + } + } + + return resultLine; + } +} diff --git a/src/test/java/de/vimo/core/ParserTest.java b/src/test/java/de/vimo/core/ParserTest.java index d865a2b..59eaa92 100644 --- a/src/test/java/de/vimo/core/ParserTest.java +++ b/src/test/java/de/vimo/core/ParserTest.java @@ -14,37 +14,50 @@ public class ParserTest { @Test public void testParser() { - Parser parser = new Parser() { - @Override - public Line parse(String raw) { - String regex = "[\\s]"; - List flagsS = new ArrayList<>(List.of()); - List flagAll = new ArrayList<>(List.of()); - String result = ""; - List argsS = new ArrayList<>(List.of()); - String[] myArray = raw.split(regex); +// Parser parser = new Parser() { +// @Override +// public Line parse(String raw) { +// String regex = "[\\s]"; +// List flagsS = new ArrayList<>(List.of()); +// List flagAll = new ArrayList<>(List.of()); +// String result = ""; +// List argsS = new ArrayList<>(List.of()); +// String[] myArray = raw.split(regex); +// +// for (int i = 1; i < myArray.length; i++) { +// if (myArray[i].contains("-")) { +// result = myArray[i].replace("-",""); +// flagsS = List.of(result.split("")); +// flagAll.addAll(flagsS); +// } else { +// argsS.add(myArray[i]); +// } +// } +// return new Line(myArray[0], flagAll, argsS); +// } +// }; // <-- Your implementation goes here - for (int i = 1; i < myArray.length; i++) { - if (myArray[i].contains("-")) { - result = myArray[i].replace("-",""); - flagsS = List.of(result.split("")); - flagAll.addAll(flagsS); - } else { - argsS.add(myArray[i]); - } - } - return new Line(myArray[0], flagAll, argsS); - } - }; // <-- Your implementation goes here + Parser parser = new ParserVivi(); // <-- Your implementation goes here + // test invalid strings -> should return null + assertNull(parser.parse("")); + assertNull(parser.parse("-")); + assertNull(parser.parse("ls -")); + assertNull(parser.parse("ls --")); + + // test valid string testInput(parser, "ls", "ls", List.of(), List.of()); - testInput(parser, "ls -la", "ls", List.of("l", "a"), List.of()); - testInput(parser, "ls ./hello/world", "ls", List.of(), List.of("./hello/world")); - testInput(parser, "ls -la ./what", "ls", List.of("l", "a"), List.of("./what")); - testInput(parser, "rm -r /bin /opt", "rm", List.of("r"), List.of("/bin", "/opt")); - testInput(parser, "cd .", "cd", List.of(), List.of(".")); - testInput(parser, "mkdir .", "mkdir", List.of(), List.of(".")); - testInput(parser, "super -abc -de -f super nice danke paul", "super", List.of("a", "b", "c", "d", "e", "f"), List.of("super", "nice", "danke", "paul")); + testInput(parser, " ls -la", "ls", List.of("l", "a"), List.of()); + testInput(parser, "ls ./hello/world ", "ls", List.of(), List.of("./hello/world")); + testInput(parser, "ls -la ./what", "ls", List.of("l", "a"), List.of("./what")); + testInput(parser, "rm -r /bin /opt", "rm", List.of("r"), List.of("/bin", "/opt")); + testInput(parser, " cd . ", "cd", List.of(), List.of(".")); + testInput(parser, " mkdir . ", "mkdir", List.of(), List.of(".")); + testInput(parser, "super -abc -de -f super nice danke paul", "super", List.of("a", "b", "c", "d", "e", "f"), List.of("super", "nice", "danke", "paul")); + + // new tests + + testInput(parser, "print hello-world", "print", List.of(), List.of("hello-world")); } private void testInput(Parser parser, String input, String expectedCommand, List expectedFlags, List expectedArgs) { diff --git a/target/classes/de/vimo/core/ParserVivi.class b/target/classes/de/vimo/core/ParserVivi.class new file mode 100644 index 0000000000000000000000000000000000000000..7b713577e01ccc2d91fd3d6d5e73a21dba018ab9 GIT binary patch literal 2477 zcmah~OHfl+82--9Arot<&jZoBQKt9IE=AKy7QN`h!-GCB7@=YM|x>&Jh-e*|DJ zZU>>kqr+>!2fskWtT|^U(q?u#advXnN)-kCeRkF^9v1MlcZ>!Q5YVm^Y7j)N4#U7Y z)Cp{yvJ!K4CYMO%94m3obPAR;YR}mMKF6B2ZVH5kRx~Gzj-8$El{y*>td|P(R4$V- zvr{@61sWA=sc5GY#~jC;AF>O@T7=Q0W21pr5D})Df1`$HD z3~sYPq`l&`KbKB3K0BA~?HCQB1zU8yYG5n2RiWVe$~X%7v`srZ%Q_T9_R6Ywyu}VbU`3osohOLZwDp17+_aIio9lE zH@XD^sa&>b+F1%UR|@sdm`;-FtZd3sqOa3fB7l87x+I7P3>=g;J?0eA?iE;HmAfH3 zYX#ARLlQG4eQ%}ma=aBNDvVdtvP_QB<8&c_<2>W>08U52 z6bz=#X*zg1fH%nRWC9rCnVJe8lxRNP%dSrM@`3;botU-oUvJtk)bur z%V|J`zPy|bFKDA`Icbv;fzR2qLj;sRJkmmE8s5prq@OvBHUmCRA9$w8=2=96!> z`kv)I=bQRw<*JiKqfUZBd4X%Bjw^jYL+lT75{rns#2!U7xWrx(3)mW0)C26- zaOoj>#%QO$Gky1RxLDqkZ$Zn_7OcK%ixUz(aPSO((kXi#(6kdioF0S~o zh(y>gakzuFu>XIOh0V{Pk_CWuZtnafKJ<&be?N(Mzh>EaAznnZE(t2bQ=5pCFE(kic);ZogxX2ytOGW50;w zpcp}qFwrMwaY)?45%DpX%O_kcpK+;tg#qyZC&go~lb^Xfe&yo$1H+mZ=d>+2ukAuo zJA{kcAV#$zjA==XYomy0S1_Sk=oH(eP1{GGPO%x;Fy&^FUj;UuK&^HGMYgntChasz z{PIwK5OcV}*tctaxXH%$VV?0fk;~S)msR=*w{@3V

i{Gn;;gkwP>KVK`NK3Loy9hhZ&riw6c8B zrO&Qa-+b*$U+aU=+O_%v{7F7o_elawsF*c#<~!%Rp8Z|&*FS&00&odmbs&PM3PnQ< zaRI$*<{w%cZocArX8yL}`KGsE`axz~AReq+e&zy&N{2`llSrULMN&g2G=bCufIaV+w5Y6Tm6X+69R#yFcDpCSR8{+lAvh&lPXKa-$Kj=gnM^zlt z(2G8Su6+^76^OX^1=87Eshz<{x^Y~Fp)=lWh&$ujHY2fIrzis$6hIOua8ku74X1IY zE$VXMSx!wL=5N{-y$!c4HLlcT7IQ02>*2Em-WCvJ((qXg?_gLUQE{EXupD1tFl=RJ z-SEohw{_F0n8n<(RLN-=!Ki@hnVYszF$F$4R3qfO-BO6r3RFTlCUHD3a5fu`x|y8f z8z4%J3mV2T!NeKW>a=bD51PwT{G!IHy3F)aT%b1`_pX;^74Hf3wAE0_a?B*IpdeFL z6u1;tY{ef+qRf5q;6Asg;(b<8o8e{&3k+osE!x~7i*UxR66bCi$9#Qbja6@~**r;? z+=^i@8lENhtwTk20`qv7$;>#fkeV}tb+^g@j14m|Ju1XDWkVfOM(xIAAT%N@zO#hW zGakuc_8Y1N3XOVZ&HRoDx^Ejbzf8vmfng;{UL$*P&-CjyOF3qE4QX{_tI=!(E?g3O z=KIKp&e&{Vr{a!4vh3Eqih0A50C(>Xne*~?Jh|>v zY}aSwH4#*?BGCUIS(SrH!#z1^k^$-6Tx+wAV|p{T;rph~o{n%T2~0wyQgX_1@J0A` zVv64nNXf4}Nsf&E0Wq=z_4kI%HLh`L0zH`K+SioAhnV3`&JAge-AOt|u^&?0T*nQr zG%J23yMwI9=_7M5(Y^E>Jv->1-zN)7dY}*s?c<~8wlP#tmCK3Vgs#4Nf}6V9o0v$y zwT;Yg$hJ1=fo)_9F+C=Uq31X^uPb9OkdNT*Q>65GL+l0K<^Jb{c=~$#C9W*#YIH(Z z^!N_0K4VY{u5m4(i|a8&ITgBizX9~)B#v|Z=&a&9gZD zevQv?2P(?6c$)G}&4oS91!^|s7byQZrG}xrW+43QiKsZyc+x8Pkmkw;$5ribx{2~C XGW}m*iC+cFSjCs5k_=Ur0Du1i3;Cx& diff --git a/target/test-classes/de/vimo/core/ParserTest.class b/target/test-classes/de/vimo/core/ParserTest.class index d2f70ba1c293fe2940e3b1bcdacc12101619d05e..1f79feca442b7db292c28a090fcd3259eb17f771 100644 GIT binary patch literal 2737 zcmb_eX>$}+6g_XU%u6y5ct9|U*lLsvVbbhdLL>wbbOa=E5X7Z3)0uSW=^lD|0x0gd z@B4}i|G=_JqE_j5e}JF;roY1SyzZH-W0h8sO7*+%zWd%i_uSW~=eNIq`USuaTx&-H zO-VGT(1KQh6;sx?x@+4)eQbXX0_bLMIRx~+QbzOlq^V7uD4Wx4t z-2x&baf?8+TQO+eN@&`md7D7Ot#sga+>ykcDfHkjf#ng}YUsFT)~S%9gg+smded1Rv4w-BtK6nb+%B-Q0ax?#)!AE|Kw>AG&BOc6N!xXO^MW6^1;a2Tb_*<9;MM8& z>U0AFJq^+=VN+rsFKCRMM>5BSNh_4Nhj+AY4-2deN?gnYhB@wdhUu3XGQu7OC5c0< zGmyBKt=6j&N3|7&+%M32#37Hqa2w1 zaSpbG#bH7-me-6G1fFTY*wO~wC{Kf4@Wwamf+QwcLR6K+6rH**jnvghO9E$Z7}5qP zeD=Fc!3d4$zGb5OCUKsSBDVxppkv-zJF1vY;z9}+afzFks0>A;Xon+ysbqQNd3F7* zjx@0*P7+V?Hk=B4uW01sNUcpzr|=A(6-dRZbLf24a+!Y5|0SR2OnbBPr67#do${YgQ~yd;udV4=A#Yb}+j8WYr6ulAUuZ4$};K zo*!B@m0p)^tmL&sElwLV7Nh>lF1YI(Kj>ydf6eHtG~TE35|0aOH+cd&6Y^1yDN2&W-xjAa5Ub zbo)Ew7HY2h^>>YL?gsuQ(0@(fYlK!lU+2u^$S*ruHeQGLjz$7+@Tr%Oy?? zjS;hrU)j1OeVM*Z5r=zQGu^E}AXHDz;Bt4fwx3fkYP&_-FR52)YsgJeOS{;0U_aV$ z0ILboz(E2(6hS!>A6$dN6g4Q?`Vb#QKr{H5R+9#RPw*+4BkMC-Ej+UapW_R{{*vCf YFdcPuHtH&)zT#Q}U$eAtBJ10K00xG;m;e9( literal 2559 zcmb_eYgZdp6x}yGGK5gdg;G(hQ$J;UGs{Qf6^3H*>i3@vfA zCeem=fxWBdx@kD3TQJUMSFKzi&^~Rub}%E*GMrk9LlYRtTgJLw^o*S6TgExlFI)aa zs~ij+Ng$4d3e_nvIGou9HPdlcDhXsVA;Smm|%JHB|@KJ%u;ccfy3U5EH=Gl?1h9TC5!N-ji%W*to!}FcI zh9?BN8eHnEVRcqYV5rGiO(KsnMns#@H&)C*Lz4U)0mSZe(p&H@p%7M_3uZ zsNpE{^EFHew5nAN$CMR9PSDEb^>GbT1m{ThX@WU@Mj&2X%iF$Mn-ypaCmQAi4wWk< z%h%IpHm9famY!bLBadt6EIn_!YnEOzD-`w=_k~LuUSQa)h6N5e4KH!vSub<2G@RwI ztTZ{VG`S#fvxz46Qj!0MX`=Q;%A&H-u*4L?lr+3br^-t)y`q@DCUE7xG2OwU6R+cq zINnU+EtmqmO)d|)mDIgvO}6u>-H%k`&Cb}a#T%JJJ`O91WfTN@8iFc>K%!s;b6&A% zx_N=V%}c%g;%Tt?HeT{Qx1i@DWCCk&;wUEJ!V}OvzhJCZ*pc`w*@5L7X2~{Y%j`jc z?YU)vq!~_5U8|T5rzf^2u?EBL#bxDCsP!Z^ z6e>>Ctgk>fm~I3zIcI(6ygVi7R!W?y6tnD@X4aucX1tu~ESbKo<~3()uwrx5K%>rE zot9TBp&DD{;cX3zw1A%(`zu(TvOH3xwXxXx~JSJ z5%aOGm-v;i^7XoQZF)kr*tMc+Jq>nD2)@o9ledz!*3{u6h4 zC%qZ6?^v`8t{GH(N`3pj_5Y@a-3y@Y61=qFwIY+(4 zWgO&(F2+wa&;r&1?R>t?nZZ$TY#X@?@e7R@-r-X%16_ER&twF^d$`G&z%8!E)Mn8N z_1Oo0{sZyL4A7Ao8I?(ytYQy;@1l>>2k97;2ddEPuE#=ze7uT75oV;0kz;k|xI8SM zMo!mJGxFI+$8+*|c|gv~)AB``k!PwnN5`UkMP91nGJ|a8I70S7 z4>~Z+uYU@o7{N53=P}0Kljcnv$7dAiCmarS=#O%(>Ck~6@jgDF9v?D_((5CRG4+2$ zqz?X~)N%UKqhr6}Y78ga(*y0lA}d#_SRH6pc1f0%-KOk{yiQxuYY9ux&nf{&NpAvu zn1qgFBz8QcayklJqrxL)jf4OI