|
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