emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/parser-generator 069bf34 209/434: Added test for new he


From: ELPA Syncer
Subject: [elpa] externals/parser-generator 069bf34 209/434: Added test for new helper function list of symbol
Date: Mon, 29 Nov 2021 15:59:43 -0500 (EST)

branch: externals/parser-generator
commit 069bf34ee5d3ca3c3c9f0e9969f8e42aa2c7c4a1
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>

    Added test for new helper function list of symbol
---
 parser-generator.el           | 80 +++++++++++++++++++++----------------------
 test/parser-generator-test.el | 35 ++++++++++++++-----
 2 files changed, 66 insertions(+), 49 deletions(-)

diff --git a/parser-generator.el b/parser-generator.el
index b98f352..116f1f0 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -90,6 +90,15 @@
         (push element new-elements)))
     (nreverse new-elements)))
 
+(defun parser-generator--generate-list-of-symbol (k symbol)
+  "Generate list of K number of SYMBOL."
+  (let ((list-index 0)
+        (list))
+    (while (< list-index k)
+      (push symbol list)
+      (setq list-index (1+ list-index)))
+    list))
+
 (defun parser-generator--get-grammar-look-aheads ()
   "Return all possible look-ahead set."
   (unless parser-generator--look-ahead-number
@@ -160,46 +169,6 @@
       (error "No grammar G defined!")))
   (nth 0 G))
 
-(defun parser-generator--generate-list-of-symbol (k symbol)
-  "Generate list of K number of SYMBOL."
-  (let ((list-index 0)
-        (list))
-    (while (< list-index k)
-      (push symbol list)
-      (setq list-index (1+ list-index)))
-    list))
-
-(defun parser-generator--get-list-permutations (list k)
-  "Return all possible LIST permutations length K."
-  (let ((permutations)
-        (permutations-length 1))
-    (let ((list-length (length list))
-          (i 0))
-      (while (< i k)
-
-        (let ((times (expt list-length (- k (1+ i))))
-              (global-i 0))
-          (while (< global-i permutations-length)
-            ;; For each list..
-            (let ((list-i 0))
-              (while (< list-i list-length)
-
-                ;; Add it |list| ^ (k - i) times to list
-                (let ((times-i 0))
-                  (while (< times-i times)
-                    (if (= i 0)
-                        (push (list (nth list-i list)) permutations)
-                      (push (nth list-i list) (nth global-i permutations)))
-                    (setq global-i (1+ global-i))
-                    (setq times-i (1+ times-i))))
-                (setq list-i (1+ list-i))))
-
-            (when (= i 0)
-              (setq permutations-length (length permutations)))))
-
-        (setq i (1+ i))))
-    (sort permutations 'parser-generator--sort-list)))
-
 (defun parser-generator--get-grammar-production-number (production)
   "If PRODUCTION exist, return it's number."
   (unless parser-generator--table-productions-number
@@ -248,6 +217,37 @@
     (error "Table for translations by production-number is undefined!"))
   (gethash production-number parser-generator--table-translations))
 
+(defun parser-generator--get-list-permutations (list k)
+  "Return all possible LIST permutations length K."
+  (let ((permutations)
+        (permutations-length 1))
+    (let ((list-length (length list))
+          (i 0))
+      (while (< i k)
+
+        (let ((times (expt list-length (- k (1+ i))))
+              (global-i 0))
+          (while (< global-i permutations-length)
+            ;; For each list..
+            (let ((list-i 0))
+              (while (< list-i list-length)
+
+                ;; Add it |list| ^ (k - i) times to list
+                (let ((times-i 0))
+                  (while (< times-i times)
+                    (if (= i 0)
+                        (push (list (nth list-i list)) permutations)
+                      (push (nth list-i list) (nth global-i permutations)))
+                    (setq global-i (1+ global-i))
+                    (setq times-i (1+ times-i))))
+                (setq list-i (1+ list-i))))
+
+            (when (= i 0)
+              (setq permutations-length (length permutations)))))
+
+        (setq i (1+ i))))
+    (sort permutations 'parser-generator--sort-list)))
+
 (defun parser-generator--hash-to-list (hash-table &optional un-sorted)
   "Return a list that represent the HASH-TABLE.  Each element is a list: (list 
key value), optionally UN-SORTED."
   (let (result)
diff --git a/test/parser-generator-test.el b/test/parser-generator-test.el
index ea3195dc..00f0c8f 100644
--- a/test/parser-generator-test.el
+++ b/test/parser-generator-test.el
@@ -740,24 +740,41 @@
 
   (message "Passed tests for (parser-generator--get-list-permutations)"))
 
+(defun parser-generator-test--generate-list-of-symbol ()
+  "Test `parser-generator--generate-list-of-symbol'."
+  (message "Starting tests for 
(parser-generator-test--generate-list-of-symbol)")
+
+  (should
+   (equal
+    '(a a a)
+    (parser-generator--generate-list-of-symbol 3 'a)))
+
+  (should
+   (equal
+    '((a b) (a b))
+    (parser-generator--generate-list-of-symbol 2 '(a b))))
+
+  (message "Passed tests for 
(parser-generator-test--generate-list-of-symbol)"))
+
 (defun parser-generator-test ()
   "Run test."
   ;; (setq debug-on-error t)
 
   ;; Helpers
-  (parser-generator-test--valid-look-ahead-p)
-  (parser-generator-test--valid-look-ahead-number-p)
-  (parser-generator-test--valid-production-p)
+  (parser-generator-test--distinct)
+  (parser-generator-test--generate-list-of-symbol)
+  (parser-generator-test--get-grammar-look-aheads)
+  (parser-generator-test--get-grammar-rhs)
+  (parser-generator-test--get-list-permutations)
+  (parser-generator-test--merge-max-terminals)
+  (parser-generator-test--sort-list)
   (parser-generator-test--valid-grammar-p)
+  (parser-generator-test--valid-look-ahead-number-p)
+  (parser-generator-test--valid-look-ahead-p)
   (parser-generator-test--valid-non-terminal-p)
+  (parser-generator-test--valid-production-p)
   (parser-generator-test--valid-sentential-form-p)
   (parser-generator-test--valid-terminal-p)
-  (parser-generator-test--distinct)
-  (parser-generator-test--sort-list)
-  (parser-generator-test--get-grammar-rhs)
-  (parser-generator-test--get-grammar-look-aheads)
-  (parser-generator-test--merge-max-terminals)
-  (parser-generator-test--get-list-permutations)
 
   ;; Algorithms
   (parser-generator-test--first)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]