diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/step1_read_print.mal | 7 | ||||
| -rw-r--r-- | tests/step2_eval.mal | 3 | ||||
| -rw-r--r-- | tests/step4_if_fn_do.mal | 12 | ||||
| -rw-r--r-- | tests/step8_macros.mal | 16 | ||||
| -rw-r--r-- | tests/step9_try.mal | 46 | ||||
| -rw-r--r-- | tests/test.txt | 1 |
6 files changed, 77 insertions, 8 deletions
diff --git a/tests/step1_read_print.mal b/tests/step1_read_print.mal index 3dc4023..57b2e34 100644 --- a/tests/step1_read_print.mal +++ b/tests/step1_read_print.mal @@ -73,6 +73,12 @@ abc-def ;; ;; -------- Optional Functionality -------- +;; Testing keywords +:kw +;=>:kw +(:kw1 :kw2 :kw3) +;=>(:kw1 :kw2 :kw3) + ;; Testing read of vectors [+ 1 2] ;=>[+ 1 2] @@ -92,6 +98,7 @@ abc-def ;=>{"a" {"b" {"c" 3}}} { "a" {"b" { "cde" 3 } }} ;=>{"a" {"b" {"cde" 3}}} +;=>{:a {:b {:cde 3}}} ;; Testing read of comments ;; whole line comment (not an exception) diff --git a/tests/step2_eval.mal b/tests/step2_eval.mal index eb35592..2f48c73 100644 --- a/tests/step2_eval.mal +++ b/tests/step2_eval.mal @@ -23,3 +23,6 @@ {"a" (+ 7 8)} ;=>{"a" 15} + +{:a (+ 7 8)} +;=>{:a 15} diff --git a/tests/step4_if_fn_do.mal b/tests/step4_if_fn_do.mal index ee30ea3..46efeae 100644 --- a/tests/step4_if_fn_do.mal +++ b/tests/step4_if_fn_do.mal @@ -14,6 +14,10 @@ ;=>(1 2 3) (count (list 1 2 3)) ;=>3 +(count (list)) +;=>0 +(count nil) +;=>0 (if (> (count (list 1 2 3)) 3) "yes" "no") ;=>"no" (if (>= (count (list 1 2 3)) 3) "yes" "no") @@ -335,6 +339,14 @@ a ;; ;; -------- Optional Functionality -------- +;; Testing keywords +(= :abc :abc) +;=>true +(= :abc :def) +;=>false +(= :abc ":abc") +;=>false + ;; Testing vector truthiness (if [] 7 8) ;=>7 diff --git a/tests/step8_macros.mal b/tests/step8_macros.mal index 8773ba8..cf8f5d1 100644 --- a/tests/step8_macros.mal +++ b/tests/step8_macros.mal @@ -1,13 +1,13 @@ ;; Testing nth, first and rest functions -(nth '() 0) -;=>nil (nth '(1) 0) ;=>1 (nth '(1 2) 1) ;=>2 -(nth '(1 2) 2) -;=>nil +(def! x "x") +(def! x (nth '(1 2) 2)) +x +;=>"x" (first '()) ;=>nil @@ -132,14 +132,14 @@ ;; Testing nth, first, rest with vectors -(nth [] 0) -;=>nil (nth [1] 0) ;=>1 (nth [1 2] 1) ;=>2 -(nth [1 2] 2) -;=>nil +(def! x "x") +(def! x (nth [1 2] 2)) +x +;=>"x" (first []) ;=>nil diff --git a/tests/step9_try.mal b/tests/step9_try.mal index aee7908..3781e4d 100644 --- a/tests/step9_try.mal +++ b/tests/step9_try.mal @@ -88,6 +88,24 @@ ;; ;; -------- Optional Functionality -------- +;; Testing symbol and keyword functions +(symbol? :abc) +;=>false +(symbol? 'abc) +;=>true +(symbol? "abc") +;=>false +(symbol? (symbol "abc")) +;=>true +(keyword? :abc) +;=>true +(keyword? 'abc) +;=>false +(keyword? "abc") +;=>false +(keyword? (keyword "abc")) +;=>true + ;; Testing sequential? function (sequential? (list 1 2 3)) @@ -110,8 +128,16 @@ (vector 3 4 5) ;=>[3 4 5] +(map? {}) +;=>true +(map? '()) +;=>false (map? []) ;=>false +(map? 'abc) +;=>false +(map? :abc) +;=>false ;; ;; Testing hash-maps @@ -194,6 +220,26 @@ (count (keys hm3)) ;=>2 +;; Testing keywords as hash-map keys +(get {:abc 123} :abc) +;=>123 +(contains? {:abc 123} :abc) +;=>true +(contains? {:abcd 123} :abc) +;=>false +(assoc {} :bcd 234) +;=>{:bcd 234} +(dissoc {:cde 345 :fgh 456} :cde) +;=>{:fgh 456} +(keyword? (nth (keys {:abc 123 :def 456}) 0)) +;=>true +;;; TODO: support : in strings in make impl +;;;(keyword? (nth (keys {":abc" 123 ":def" 456}) 0)) +;;;;=>false +(keyword? (nth (vals {"a" :abc "b" :def}) 0)) +;=>true + + ;; ;; Testing conj function diff --git a/tests/test.txt b/tests/test.txt new file mode 100644 index 0000000..0f24bc0 --- /dev/null +++ b/tests/test.txt @@ -0,0 +1 @@ +A line of text |
