--- /dev/null
+;;; fns-tests.el --- tests for src/fns.c
+
+;; Copyright (C) 2014 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; This program is free software: you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation, either version 3 of the
+;; License, or (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see `http://www.gnu.org/licenses/'.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'cl-lib)
+(eval-when-compile (require 'cl))
+
+(ert-deftest fns-tests-reverse ()
+ (should-error (reverse))
+ (should-error (reverse 1))
+ (should-error (reverse (make-char-table 'foo)))
+ (should (equal [1 2 3 4] (reverse (reverse [1 2 3 4]))))
+ (should (equal "xyzzy" (reverse (reverse "xyzzy"))))
+ (should (equal "こんにちは / コンニチハ" (reverse (reverse "こんにちは / コンニチハ")))))
+
+(ert-deftest fns-tests-reverse-bool-vector ()
+ (let ((A (make-bool-vector 10 nil)))
+ (dotimes (i 5) (aset A i t))
+ (should (equal [nil nil nil nil nil t t t t t] (vconcat (reverse A))))
+ (should (equal A (reverse (reverse A))))))