Sha256: be1f2dd24c3f07873f4672cf58f2adb92b65211b105c6d01cdd2d60fae9202d8

Contents?: true

Size: 1.42 KB

Versions: 183

Compression:

Stored size: 1.42 KB

Contents

;;; robot-name-test.el --- Tests for Robot Name (exercism)

;;; Commentary:

;; Ported pretty much directly from the xlisp version :)

;;; Code:

(require 'cl)

(load-file "robot-name.el")

(defun is-upper-alpha-p (c)
  "Test if char C is an uppercase alpha char."
  (let ((c (string-to-char c))
        (A (string-to-char "A"))
        (Z (string-to-char "Z")))
    (<= A c Z)))

(defun is-digit-p (d)
  "Test if D is an integer from 0-9."
  (when (string-match "[[:digit:]]" d)
      (let ((d (string-to-char d)))
     (<= ?0 d ?9))))

(defvar *robbie* (build-robot))
(defvar *clutz*  (build-robot))

(ert-deftest name-matches-expected-pattern ()
  (let ((name (robot-name *robbie*)))
    (should (= (length name) 5))
    (should (every 'is-upper-alpha-p
                   (split-string-and-unquote (substring name 0 2) "")))
    (should (every 'is-digit-p
                   (split-string-and-unquote (substring name 2 5) "")))))

(ert-deftest name-is-persistent ()
  "Test that robot name is persistent."
  (should (equal (robot-name *robbie*) (robot-name *robbie*))))

(ert-deftest different-robots-have-different-names ()
  (should-not (equal (robot-name *robbie*) (robot-name *clutz*))))

(ert-deftest name-can-be-reset ()
  (let* ((robot (build-robot))
         (original-name (robot-name robot)))
    (reset-robot robot)
    (should-not (equal original-name (robot-name robot)))))

(provide 'robot-name-test)
;;; robot-name-test.el ends here

Version data entries

183 entries across 183 versions & 1 rubygems

Version Path
trackler-2.1.0.27 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.26 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.25 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.24 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.23 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.22 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.21 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.20 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.19 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.18 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.17 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.16 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.15 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.14 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.13 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.12 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.11 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.10 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.9 tracks/elisp/exercises/robot-name/robot-name-test.el
trackler-2.1.0.8 tracks/elisp/exercises/robot-name/robot-name-test.el