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

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

[nongnu] elpa/pacmacs a802074eea 109/472: Add set/get functions for boar


From: ELPA Syncer
Subject: [nongnu] elpa/pacmacs a802074eea 109/472: Add set/get functions for board (#74)
Date: Thu, 6 Jan 2022 21:59:17 -0500 (EST)

branch: elpa/pacmacs
commit a802074eea6106ce6d2da03d57c3c471efaf912a
Author: rexim <reximkut@gmail.com>
Commit: rexim <reximkut@gmail.com>

    Add set/get functions for board (#74)
---
 pacmacs-board.el           | 21 ++++++++++++++++++++-
 test/pacmacs-board-test.el | 30 ++++++++++++++++++++++++++----
 2 files changed, 46 insertions(+), 5 deletions(-)

diff --git a/pacmacs-board.el b/pacmacs-board.el
index ad876c5a83..f60a56ce10 100644
--- a/pacmacs-board.el
+++ b/pacmacs-board.el
@@ -36,7 +36,26 @@
   (let ((board (make-vector height nil)))
     (dotimes (row height)
       (aset board row (make-vector width nil)))
-    board))
+    (list :width width
+          :height height
+          :data board)))
+
+(defun pacmacs--cell-get (board row column)
+  (plist-bind ((width :width)
+               (height :height)
+               (data :data))
+      board
+    (aref (aref data (mod row height))
+          (mod column width))))
+
+(defun pacmacs--cell-set (board row column value)
+  (plist-bind ((width :width)
+               (height :height)
+               (data :data))
+      board
+    (aset (aref data (mod row height))
+          (mod column width)
+          value)))
 
 (provide 'pacmacs-board)
 
diff --git a/test/pacmacs-board-test.el b/test/pacmacs-board-test.el
index b390281829..ccbec9e757 100644
--- a/test/pacmacs-board-test.el
+++ b/test/pacmacs-board-test.el
@@ -1,9 +1,31 @@
 (ert-deftest pacmacs--make-board-test ()
   (let ((width 5)
         (height 4)
-        (expected-board [[nil nil nil nil nil]
-                         [nil nil nil nil nil]
-                         [nil nil nil nil nil]
-                         [nil nil nil nil nil]]))
+        (expected-board (list :width 5
+                              :height 4
+                              :data [[nil nil nil nil nil]
+                                     [nil nil nil nil nil]
+                                     [nil nil nil nil nil]
+                                     [nil nil nil nil nil]])))
     (should (equal expected-board
                    (pacmacs--make-board width height)))))
+
+(ert-deftest pacmacs--cell-get-test ()
+  (let ((input-board (list :width 3
+                           :height 2
+                           :data [[nil nil nil]
+                                  [nil 42 nil]])))
+    (should (equal 42 (pacmacs--cell-get input-board 1 1)))))
+
+(ert-deftest pacmacs--cell-set-test ()
+  (let ((input-board (list :width 3
+                           :height 2
+                           :data [[nil nil nil]
+                                  [nil nil nil]]))
+        (expected-board (list :width 3
+                              :height 2
+                              :data [[nil nil nil]
+                                     [nil 42 nil]])))
+    (pacmacs--cell-set input-board 1 1 42)
+    (should (equal expected-board
+                   input-board))))



reply via email to

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