Sha256: 9ecb2e0980b97e4b61688aec71c9d62d4441f43002b4b31f70a2d925d37763d4

Contents?: true

Size: 1.69 KB

Versions: 396

Compression:

Stored size: 1.69 KB

Contents

(defmodule circular-buffer-tests
  (behaviour ltest-unit)
  (export all))

(include-lib "ltest/include/ltest-macros.lfe")

(deftest create
  (let ((pid (circular-buffer:create 5)))
    (is-equal #(ok 5) (circular-buffer:size pid))))

(deftest write-read
  (let ((pid (circular-buffer:create 4)))
    (is-equal #(error empty) (circular-buffer:read pid))
    (circular-buffer:write pid 1)
    (is-equal #(ok 1) (circular-buffer:read pid))))

(deftest write-read-many
  (let ((pid    (circular-buffer:create 3))
        (values '(1 2 3)))
    (write-all pid values)
    (check-reads pid values)))

(deftest over-write-read
  (let ((pid (circular-buffer:create 2)))
    (write-all pid '(1 2 3 4))
    (check-reads pid '(3 4))
    (is-equal #(error empty) (circular-buffer:read pid))))

(deftest write-attempt
  (let* ((pid       (circular-buffer:create 1))
         (attempt-1 (circular-buffer:write-attempt pid 1))
         (attempt-2 (progn (is-equal 'ok attempt-1)
                           (circular-buffer:write-attempt pid 2))))
    (is-equal #(error full) attempt-2)
    (is-equal #(ok 1) (circular-buffer:read pid))))

(deftest producer-consumer
  (let* ((pid       (circular-buffer:create 1))
         (attempt-1 (circular-buffer:write-attempt pid 1))
         (attempt-2 (progn (is-equal 'ok attempt-1)
                           (circular-buffer:write-attempt pid 2))))
    (is-equal #(error full) attempt-2)
    (is-equal #(ok 1) (circular-buffer:read pid))))

(defun check-reads (pid values)
  (lists:foreach
    (lambda (value)
      (is-equal `#(ok ,value) (circular-buffer:read pid)))
    values))

(defun write-all (pid values)
  (lists:foreach
    (lambda (value)
      (circular-buffer:write pid value))
    values))

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.179 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.178 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.177 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.176 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.175 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.174 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.173 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.172 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.171 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.170 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.169 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.167 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.166 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.165 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.164 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.163 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.162 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.161 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe
trackler-2.2.1.160 tracks/lfe/exercises/circular-buffer/test/circular-buffer-tests.lfe