more options and more tests
authorLaurent Mazet <mazet@softndesign.org>
Sun, 23 Jun 2024 21:39:27 +0000 (23:39 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Sun, 23 Jun 2024 21:39:27 +0000 (23:39 +0200)
gameoflife.c

index b40cee6e48994bb453adfdb3c222a3d75ae77505..829b7fb1266efa969b521d41e692e5fa3db093f8 100644 (file)
@@ -26,6 +26,9 @@ char *version = "0.1";
 char *file = NULL;
 char mode = 'e';
 int speed = 5;
+int xsize = 0;
+int ysize = 0;
+
 int xoffset = 1;
 int yoffset = 1;
 
@@ -54,8 +57,8 @@ int usage (int ret)
     fprintf (fd, " -p: play file (%s)\n", (file) ? file : "none");
     fprintf (fd, " -s: speed ĭn tens/sec (%d)\n", speed);
     fprintf (fd, " -v: verbose level (%d)\n", verbose);
-    fprintf (fd, " -x: board height (%d)\n", x);
-    fprintf (fd, " -y: board width (%d)\n", y);
+    fprintf (fd, " -x: board height (%d)\n", xsize);
+    fprintf (fd, " -y: board width (%d)\n", ysize);
     fprintf (fd, "%s version %s\n", progname, version);
 
     return ret;
@@ -64,8 +67,6 @@ int usage (int ret)
 /* main function */
 int main (int argc, char *argv[])
 {
-    int xsize = 0;
-    int ysize = 0;
 
     /* get basename */
     char *pt = progname = argv[0];
@@ -206,7 +207,7 @@ int main (int argc, char *argv[])
         char *ptr = NULL;
 
         boardwindow (board, xboard, yboard, 1);
-        if ((element) && (mode == 'e')) {
+        if (mode == 'e') {
             rotateelement (element, rotate);
             mirrorelement (element, mirror);
             elementwindow (board, xboard, yboard, element, xelement, yelement);
@@ -222,12 +223,10 @@ int main (int argc, char *argv[])
             case '\n':
             case '\r':
                 mode = 'p';
-                halfdelay (5);
+                halfdelay (speed);
                 break;
             case 'c':
-                if (element) {
-                    putelement (board, element, xelement, yelement, 1);
-                }
+                putelement (board, element, xelement, yelement, 1);
                 break;
             case 'd':
                 mirror = -1;
@@ -273,9 +272,7 @@ int main (int argc, char *argv[])
             case 127:
             case '\b':
             case 'x':
-                if (element) {
-                    putelement (board, element, xelement, yelement, 0);
-                }
+                putelement (board, element, xelement, yelement, 0);
                 break;
             //case ERR:
             //default:
@@ -308,15 +305,19 @@ int main (int argc, char *argv[])
     return 0;
 }
 
-/* test: gameoflife.exe 2>&1 | grep 'no mode' */
 /* test: gameoflife.exe -e 2>&1 | grep 'no board' */
 /* test: gameoflife.exe -e gameoflife.c 2>&1 | grep 'incorrect file' */
 /* test: gameoflife.exe -h | grep usage */
 /* test: gameoflife.exe -p 2>&1 | grep 'no dictionary' */
 /* test--: gameoflife.exe -p file.gol 2>&1 | grep 'not found' */
+/* test: gameoflife.exe -s 2>&1 | grep 'no speed' */
+/* test: gameoflife.exe -s 0 2>&1 | grep 'incorrect speed' */
 /* test: gameoflife.exe -v 2>&1 | grep missing */
+/* test: gameoflife.exe -x 2>&1 | grep 'no height' */
+/* test: gameoflife.exe -y 2>&1 | grep 'no width' */
 /* test: gameoflife.exe _ 2>&1 | grep invalid */
 /* test: echo q | gameoflife.exe -e glider.gol */
 /* test: echo q | gameoflife.exe -e new.gol */
+/* test: { echo clllldc; sleep 2; echo q; } | gameoflife.exe -e glider.gol */
 
 /* vim: set ts=4 sw=4 et: */