|
446 | 446 | (is (= (distinct [#{1 2} #{1 2}]) [#{1 2}]))
|
447 | 447 | (is (= (distinct [#{} #{}]) [#{}]))))
|
448 | 448 |
|
449 |
| -(deftest test-destructuring |
450 |
| - (testing "Testing destructuring" |
451 |
| - (is (= [2 1] (let [[a b] [1 2]] [b a]))) |
452 |
| - (is (= #{1 2} (let [[a b] [1 2]] #{a b}))) |
453 |
| - (is (= [1 2] (let [{a :a b :b} {:a 1 :b 2}] [a b]))) |
454 |
| - (is (= [1 2] (let [{:keys [a b]} {:a 1 :b 2}] [a b]))) |
455 |
| - (is (= [1 2 [1 2]] (let [[a b :as v] [1 2]] [a b v]))) |
456 |
| - (is (= [1 42] (let [{:keys [a b] :or {b 42}} {:a 1}] [a b]))) |
457 |
| - (is (= [1 nil] (let [{:keys [a b] :or {c 42}} {:a 1}] [a b]))) |
458 |
| - (is (= [2 1] (let [[a b] '(1 2)] [b a]))) |
459 |
| - (is (= {1 2} (let [[a b] [1 2]] {a b}))) |
460 |
| - (is (= [2 1] (let [[a b] (seq [1 2])] [b a]))) |
461 |
| - (testing "namespaced keys" |
462 |
| - (let [{:keys [:a :b]} {:a 1 :b 2}] |
463 |
| - (testing "basic" |
464 |
| - (is (= 1 a)) |
465 |
| - (is (= 2 b)))) |
466 |
| - (let [{:keys [:a/b :c/d]} {:a/b 1 :c/d 2}] |
467 |
| - (testing "keyword syntax" |
468 |
| - (is (= 1 b)) |
469 |
| - (is (= 2 d)))) |
470 |
| - (let [{:keys [a/b c/d]} {:a/b 1 :c/d 2}] |
471 |
| - (testing "symbol syntax" |
472 |
| - (is (= 1 b)) |
473 |
| - (is (= 2 d)))) |
474 |
| - (let [{:syms [a/b c/d]} {'a/b 1 'c/d 2}] |
475 |
| - (testing ":syms" |
476 |
| - (is (= 1 b)) |
477 |
| - (is (= 2 d)))) |
478 |
| - (let [{:keys [::s/x ::s/y]} {:clojure.string/x 1 :clojure.string/y 2}] |
479 |
| - (testing ":keys" |
480 |
| - (is (= x 1)) |
481 |
| - (is (= y 2)))) |
482 |
| - ))) |
483 |
| - |
484 |
| -(deftest keywords-in-destructuring |
485 |
| - (let [m {:a 1 :b 2}] |
486 |
| - (let [{:keys [:a :b]} m] |
487 |
| - (is (= [1 2] [a b]))) |
488 |
| - (let [{:keys [:a :b :c] :or {c 3}} m] |
489 |
| - (is (= [1 2 3] [a b c]))))) |
490 |
| - |
491 |
| -(deftest namespaced-keywords-in-destructuring |
492 |
| - (let [m {:a/b 1 :c/d 2}] |
493 |
| - (let [{:keys [:a/b :c/d]} m] |
494 |
| - (is (= [1 2] [b d]))) |
495 |
| - (let [{:keys [:a/b :c/d :e/f] :or {f 3}} m] |
496 |
| - (is (= [1 2 3] [b d f]))))) |
497 |
| - |
498 |
| -(deftest namespaced-keys-in-destructuring |
499 |
| - (let [m {:a/b 1 :c/d 2}] |
500 |
| - (let [{:keys [a/b c/d]} m] |
501 |
| - (is (= [1 2] [b d]))) |
502 |
| - (let [{:keys [a/b c/d e/f] :or {f 3}} m] |
503 |
| - (is (= [1 2 3] [b d f]))))) |
504 |
| - |
505 |
| -(deftest namespaced-syms-in-destructuring |
506 |
| - (let [{:syms [a/b c/d e/f] :or {f 3}} {'a/b 1 'c/d 2}] |
507 |
| - (is (= [1 2 3] [b d f])))) |
508 |
| - |
509 |
| -(deftest namespaced-keys-syntax |
510 |
| - (let [{:a/keys [b c d] :or {d 3}} {:a/b 1 :a/c 2}] |
511 |
| - (is (= [1 2 3] [b c d])))) |
512 |
| - |
513 |
| -(deftest namespaced-syms-syntax |
514 |
| - (let [{:a/syms [b c d] :or {d 3}} {'a/b 1 'a/c 2}] |
515 |
| - (is (= [1 2 3] [b c d])))) |
516 |
| - |
517 |
| -(deftest resolve-keyword-ns-alias-in-destructuring |
518 |
| - (let [{:keys [::s/x ::s/y ::s/z] :or {z 3}} {:clojure.string/x 1 :clojure.string/y 2}] |
519 |
| - (is (= [1 2 3] [x y z])))) |
520 |
| - |
521 | 449 | (deftest test-in-operations
|
522 | 450 | (testing "Testing update-in"
|
523 | 451 | (is (= {:foo {:bar {:baz 1}}}
|
|
546 | 474 | [1 :bar 1 :buzz]))))
|
547 | 475 | )
|
548 | 476 |
|
549 |
| -(deftest test-arrays |
550 |
| - (testing "Testing array operations" |
551 |
| - (let [a (to-array [1 2 3])] |
552 |
| - (testing "basic ops" |
553 |
| - (is (= [10 20 30] (seq (amap a i ret (* 10 (aget a i)))))) |
554 |
| - (is (= 6 (areduce a i ret 0 (+ ret (aget a i))))) |
555 |
| - (is (= (seq a) (seq (to-array [1 2 3])))) |
556 |
| - (is (= 42 (aset a 0 42))) |
557 |
| - (is (not= (seq a) (seq (to-array [1 2 3])))) |
558 |
| - (is (not= a (aclone a))))) |
559 |
| - (let [a (array (array 1 2 3) (array 4 5 6))] |
560 |
| - (testing "aget" |
561 |
| - (is (= (aget a 0 1) 2)) |
562 |
| - (is (= (apply aget a [0 1]) 2)) |
563 |
| - (is (= (aget a 1 1) 5)) |
564 |
| - (is (= (apply aget a [1 1]) 5)) |
565 |
| - (aset a 0 0 "foo") |
566 |
| - (is (= (aget a 0 0) "foo")) |
567 |
| - (apply aset a [0 0 "bar"]) |
568 |
| - (is (= (aget a 0 0) "bar")))))) |
569 |
| - |
570 |
| -(defn- primitive-arrays-equal |
571 |
| - [a b] |
572 |
| - (= (js->clj a) (js->clj b))) |
573 |
| - |
574 |
| -(deftest test-make-array |
575 |
| - (testing "Testing make-array" |
576 |
| - (is (primitive-arrays-equal #js [] (make-array 0))) |
577 |
| - (is (primitive-arrays-equal #js [] (apply make-array [0]))) |
578 |
| - (is (primitive-arrays-equal #js [nil] (make-array 1))) |
579 |
| - (is (primitive-arrays-equal #js [nil] (apply make-array [1]))) |
580 |
| - (is (primitive-arrays-equal #js [nil nil] (make-array 2))) |
581 |
| - (is (primitive-arrays-equal #js [nil nil] (apply make-array [2]))) |
582 |
| - (is (primitive-arrays-equal #js [] (make-array nil 0))) |
583 |
| - (is (primitive-arrays-equal #js [] (apply make-array [nil 0]))) |
584 |
| - (is (primitive-arrays-equal #js [nil] (make-array nil 1))) |
585 |
| - (is (primitive-arrays-equal #js [nil] (apply make-array [nil 1]))) |
586 |
| - (is (primitive-arrays-equal #js [nil nil] (make-array nil 2))) |
587 |
| - (is (primitive-arrays-equal #js [nil nil] (apply make-array [nil 2]))) |
588 |
| - (is (primitive-arrays-equal #js [] (make-array nil 0 0))) |
589 |
| - (is (primitive-arrays-equal #js [] (apply make-array [nil 0 0]))) |
590 |
| - (is (primitive-arrays-equal #js [] (make-array nil 0 1))) |
591 |
| - (is (primitive-arrays-equal #js [] (apply make-array [nil 0 1]))) |
592 |
| - (is (primitive-arrays-equal #js [#js []] (make-array nil 1 0))) |
593 |
| - (is (primitive-arrays-equal #js [#js []] (apply make-array [nil 1 0]))) |
594 |
| - (is (primitive-arrays-equal #js [#js [] #js []] (make-array nil 2 0))) |
595 |
| - (is (primitive-arrays-equal #js [#js [] #js []] (apply make-array [nil 2 0]))) |
596 |
| - (is (primitive-arrays-equal #js [#js [nil]] (make-array nil 1 1))) |
597 |
| - (is (primitive-arrays-equal #js [#js [nil]] (apply make-array [nil 1 1]))) |
598 |
| - (is (primitive-arrays-equal #js [#js [nil] #js [nil]] (make-array nil 2 1))) |
599 |
| - (is (primitive-arrays-equal #js [#js [nil] #js [nil]] (apply make-array [nil 2 1]))) |
600 |
| - (is (primitive-arrays-equal #js [#js [nil nil] #js [nil nil]] (make-array nil 2 2))) |
601 |
| - (is (primitive-arrays-equal #js [#js [nil nil] #js [nil nil]] (apply make-array [nil 2 2]))) |
602 |
| - (is (primitive-arrays-equal #js [] (make-array nil 0 0 0))) |
603 |
| - (is (primitive-arrays-equal #js [] (apply make-array [nil 0 0 0]))) |
604 |
| - (is (primitive-arrays-equal #js [] (make-array nil 0 1 1))) |
605 |
| - (is (primitive-arrays-equal #js [] (apply make-array [nil 0 1 1]))) |
606 |
| - (is (primitive-arrays-equal #js [#js []] (make-array nil 1 0 0))) |
607 |
| - (is (primitive-arrays-equal #js [#js []] (apply make-array [nil 1 0 0]))) |
608 |
| - (is (primitive-arrays-equal #js [#js [] #js []] (make-array nil 2 0 0))) |
609 |
| - (is (primitive-arrays-equal #js [#js [] #js []] (apply make-array [nil 2 0 0]))) |
610 |
| - (is (primitive-arrays-equal #js [#js [#js []]] (make-array nil 1 1 0))) |
611 |
| - (is (primitive-arrays-equal #js [#js [#js []]] (apply make-array [nil 1 1 0]))) |
612 |
| - (is (primitive-arrays-equal #js [#js [#js [nil]]] (make-array nil 1 1 1))) |
613 |
| - (is (primitive-arrays-equal #js [#js [#js [nil]]] (apply make-array [nil 1 1 1]))) |
614 |
| - (is (primitive-arrays-equal #js [#js [#js [nil nil] #js [nil nil]] #js [#js [nil nil] #js [nil nil]]] |
615 |
| - (make-array nil 2 2 2))) |
616 |
| - (is (primitive-arrays-equal #js [#js [#js [nil nil] #js [nil nil]] #js [#js [nil nil] #js [nil nil]]] |
617 |
| - (apply make-array [nil 2 2 2]))))) |
618 |
| - |
619 | 477 | (deftest test-rearrange-sequential
|
620 | 478 | (testing "Test rearranging sequential collections"
|
621 | 479 | (is (= [1 2 3 4 5] (sort [5 3 1 4 2])))
|
|
1354 | 1212 | (is (= expected (hash uuid)))
|
1355 | 1213 | (is (= expected (.-__hash uuid))))))
|
1356 | 1214 |
|
1357 |
| -(deftest test-comparable |
1358 |
| - (testing "Testing IComparable" |
1359 |
| - (is (= 0 (compare false false))) |
1360 |
| - (is (= -1 (compare false true))) |
1361 |
| - (is (= 1 (compare true false))) |
1362 |
| - |
1363 |
| - (is (= -1 (compare 0 1))) |
1364 |
| - (is (= -1 (compare -1 1))) |
1365 |
| - (is (= 0 (compare 1 1))) |
1366 |
| - (is (= 1 (compare 1 0))) |
1367 |
| - (is (= 1 (compare 1 -1))) |
1368 |
| - |
1369 |
| - (is (= 0 (compare "cljs" "cljs"))) |
1370 |
| - (is (= 0 (compare :cljs :cljs))) |
1371 |
| - (is (= 0 (compare 'cljs 'cljs))) |
1372 |
| - (is (= -1 (compare "a" "b"))) |
1373 |
| - (is (= -1 (compare :a :b))) |
1374 |
| - (is (= -1 (compare 'a 'b))) |
1375 |
| - ;; cases involving ns |
1376 |
| - (is (= -1 (compare :b/a :c/a))) |
1377 |
| - (is (= -1 (compare :c :a/b))) |
1378 |
| - (is (= 1 (compare :a/b :c))) |
1379 |
| - (is (= -1 (compare 'b/a 'c/a))) |
1380 |
| - (is (= -1 (compare 'c 'a/b))) |
1381 |
| - (is (= 1 (compare 'a/b 'c))) |
1382 |
| - |
1383 |
| - ;; This is different from clj. clj gives -2 next 3 tests |
1384 |
| - (is (= -1 (compare "a" "c"))) |
1385 |
| - (is (= -1 (compare :a :c))) |
1386 |
| - (is (= -1 (compare 'a 'c))) |
1387 |
| - |
1388 |
| - (is (= -1 (compare [1 2] [1 1 1]))) |
1389 |
| - (is (= -1 (compare [1 2] [1 2 1]))) |
1390 |
| - (is (= -1 (compare [1 1] [1 2]))) |
1391 |
| - (is (= 0 (compare [1 2] [1 2]))) |
1392 |
| - (is (= 1 (compare [1 2] [1 1]))) |
1393 |
| - (is (= 1 (compare [1 1 1] [1 2]))) |
1394 |
| - (is (= 1 (compare [1 1 2] [1 1 1]))) |
1395 |
| - (is (= 0 (compare [] []))) |
1396 |
| - (is (= 0 (compare (vec #js []) []))) |
1397 |
| - (is (= 0 (compare (with-meta [] {}) []))) |
1398 |
| - (is (= 0 (compare (pop [1]) []))) |
1399 |
| - |
1400 |
| - (is (= -1 (compare (subvec [1 2 3] 1) (subvec [1 2 4] 1)))) |
1401 |
| - (is (= 0 (compare (subvec [1 2 3] 1) (subvec [1 2 3] 1)))) |
1402 |
| - (is (= 1 (compare (subvec [1 2 4] 1) (subvec [1 2 3] 1)))) |
1403 |
| - (is (= 0 (compare (subvec [1] 0 0) (subvec [2] 0 0)))) |
1404 |
| - |
1405 |
| - (is (= 0 (compare (js/Date. 2015 2 8 19 13 00 999) |
1406 |
| - (js/Date. 2015 2 8 19 13 00 999)))) |
1407 |
| - (is (= -1 (compare (js/Date. 2015 2 8 19 12 00 999) |
1408 |
| - (js/Date. 2015 2 8 19 13 00 999)))) |
1409 |
| - (is (= 1 (compare (js/Date. 2015 2 8 19 14 00 999) |
1410 |
| - (js/Date. 2015 2 8 19 13 00 999)))) |
1411 |
| - )) |
1412 |
| - |
1413 |
| -(deftest test-dot |
1414 |
| - (let [s "abc"] |
1415 |
| - (testing "Testing dot operations" |
1416 |
| - (is (= 3 (.-length s))) |
1417 |
| - (is (= 3 (. s -length))) |
1418 |
| - (is (= 3 (. (str 138) -length))) |
1419 |
| - (is (= 3 (. "abc" -length))) |
1420 |
| - (is (= "bc" (.substring s 1))) |
1421 |
| - (is (= "bc" (.substring "abc" 1))) |
1422 |
| - (is (= "bc" ((memfn substring start) s 1))) |
1423 |
| - (is (= "bc" (. s substring 1))) |
1424 |
| - (is (= "bc" (. s (substring 1)))) |
1425 |
| - (is (= "bc" (. s (substring 1 3)))) |
1426 |
| - (is (= "bc" (.substring s 1 3))) |
1427 |
| - (is (= "ABC" (. s (toUpperCase)))) |
1428 |
| - (is (= "ABC" (. "abc" (toUpperCase)))) |
1429 |
| - (is (= "ABC" ((memfn toUpperCase) s))) |
1430 |
| - (is (= "BC" (. (. s (toUpperCase)) substring 1))) |
1431 |
| - (is (= 2 (.-length (. (. s (toUpperCase)) substring 1)))) |
1432 |
| - ))) |
1433 |
| - |
1434 | 1215 | (defrecord Person [firstname lastname])
|
1435 | 1216 | (defrecord A [])
|
1436 | 1217 | (defrecord C [a b c])
|
|
0 commit comments