aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/test_clojure/data_structures.clj
blob: 057c582f3fb85cd3331029c6b7871430a20be2e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
;;  Copyright (c) Frantisek Sodomka. All rights reserved.  The use and
;;  distribution terms for this software are covered by the Eclipse Public
;;  License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
;;  be found in the file epl-v10.html at the root of this distribution.  By
;;  using this software in any fashion, you are agreeing to be bound by the
;;  terms of this license.  You must not remove this notice, or any other,
;;  from this software.
;;

(ns clojure.contrib.test-clojure.data-structures
  (:use clojure.contrib.test-is))


(deftest test-list
  (are (list? _)
    ()
    '()
    (list)
    (list 1 2 3)
  )
  (are (= _1 _2)
    '() ()
    (list) '()
    (list 1) '(1)
    (list 1 2) '(1 2)
    
    ; nesting
    (list 1 (list 2 3) (list 3 (list 4 5 (list 6 (list 7))))) '(1 (2 3) (3 (4 5 (6 (7)))))

    ; different data structures
    (list true false nil) '(true false nil)
    (list 1 2.5 2/3 "ab" \x 'cd :kw) '(1 2.5 2/3 "ab" \x cd :kw)
    (list (list 1 2) [3 4] {:a 1 :b 2} #{:c :d}) '((1 2) [3 4] {:a 1 :b 2} #{:c :d})

    ; evaluation
    (list (+ 1 2) [(+ 2 3) 'a] (list (* 2 3) 8)) '(3 [5 a] (6 8))

    ; special cases
    (list nil) '(nil)
    (list 1 nil) '(1 nil)
    (list nil 2) '(nil 2)
    (list ()) '(())
    (list 1 ()) '(1 ())
    (list () 2) '(() 2)
  )
  (is (not= (list 1 2) (list 2 1)))
)