|
2453 | 2453 | cat |
2454 | 2454 | (iteration range-chunk :somef (partial some #(< % 7)) :kf (comp inc last) :initk 0)))))) |
2455 | 2455 |
|
2456 | | -(def test-generator-vals [0 1 2 "three" nil 5]) |
| 2456 | +(def test-generator-vals [0 1 [2] "three" nil 5]) |
2457 | 2457 |
|
2458 | 2458 | (defn test-generator [] |
2459 | 2459 | (dotimes [i (count test-generator-vals)] |
2460 | 2460 | (yield (nth test-generator-vals i)))) |
2461 | 2461 |
|
2462 | | -(deftest python-iterators-seq-fns-test |
| 2462 | +(deftest python-generators-seq-fns-test |
2463 | 2463 | ;; The plan here is to consume with each function the test generator |
2464 | 2464 | ;; in its entirety, and check for missing values. |
2465 | 2465 |
|
2466 | 2466 | (testing "every?" |
2467 | 2467 | (let [nums* (atom [])] |
2468 | 2468 | (is (every? #(do (swap! nums* conj %) |
2469 | | - (or (number? %) (string? %) (nil? %))) |
| 2469 | + (or (number? %) (string? %) (nil? %) (vector? %))) |
2470 | 2470 | (test-generator))) |
2471 | 2471 | (is (= test-generator-vals @nums*)))) |
2472 | 2472 |
|
|
2479 | 2479 |
|
2480 | 2480 | (testing "map" |
2481 | 2481 | (is (= test-generator-vals (map identity (test-generator)))) |
2482 | | - (is (= ["00" "11" "22" "threethree" "" "55"] (map str (test-generator) (test-generator))))) |
| 2482 | + (is (= ["00" "11" "[2][2]" "threethree" "" "55"] (map str (test-generator) (test-generator))))) |
2483 | 2483 |
|
2484 | 2484 | (testing "filter" |
2485 | | - (is (= [0 1 2 5] (filter #(and (number? %) (> % -1)) (test-generator))))) |
| 2485 | + (is (= [0 1 5] (filter #(and (number? %) (> % -1)) (test-generator))))) |
2486 | 2486 |
|
2487 | 2487 | (testing "keep" |
2488 | | - (is (= [0 1 2 "three" 5] (keep identity (test-generator))))) |
| 2488 | + (is (= [0 1 [2] "three" 5] (keep identity (test-generator))))) |
2489 | 2489 |
|
2490 | 2490 | (testing "keep-indexed" |
2491 | | - (is (= [[0 0] [1 1] [2 2] [3 "three"] [4 nil] [5 5]] (keep-indexed vector (test-generator))))) |
| 2491 | + (is (= [[0 0] [1 1] [2 [2]] [3 "three"] [4 nil] [5 5]] (keep-indexed vector (test-generator))))) |
2492 | 2492 |
|
2493 | 2493 | (testing "take" |
2494 | 2494 | (is (= test-generator-vals (take 6 (test-generator))))) |
|
2500 | 2500 | (is (= test-generator-vals (drop 0 (test-generator))))) |
2501 | 2501 |
|
2502 | 2502 | (testing "take-while" |
2503 | | - (is (= [1 2 "three" nil 5] (drop-while #(not= % 1) (test-generator))))) |
| 2503 | + (is (= [1 [2] "three" nil 5] (drop-while #(not= % 1) (test-generator))))) |
2504 | 2504 |
|
2505 | 2505 | (testing "interpose" |
2506 | | - (is (= [0 "-" 1 "-" 2 "-" "three" "-" nil "-" 5] (interpose "-" (test-generator))))) |
| 2506 | + (is (= [0 "-" 1 "-" [2] "-" "three" "-" nil "-" 5] (interpose "-" (test-generator))))) |
2507 | 2507 |
|
2508 | 2508 | (testing "interleave" |
2509 | | - (is (= [0 0 1 1 2 2 "three" "three" nil nil 5 5] (interleave (test-generator) (test-generator))))) |
| 2509 | + (is (= [0 0 1 1 [2] [2] "three" "three" nil nil 5 5] (interleave (test-generator) (test-generator))))) |
2510 | 2510 |
|
2511 | 2511 | (testing "cycle" |
2512 | | - (is (= [0 1 2 "three" nil 5 0 1 2 "three"] (take 10 (cycle (test-generator)))))) |
| 2512 | + (is (= [0 1 [2] "three" nil 5 0 1 [2] "three"] (take 10 (cycle (test-generator)))))) |
2513 | 2513 |
|
2514 | 2514 | (testing "take-nth" |
2515 | | - (is (= [0 2 nil] (take-nth 2 (test-generator))))) |
| 2515 | + (is (= [0 [2] nil] (take-nth 2 (test-generator))))) |
2516 | 2516 |
|
2517 | 2517 | (testing "partition" |
2518 | | - (is (= [[0 1] [2 "three"] [nil 5]] (partition 2 (test-generator)))) |
2519 | | - (is (= [[0 1] [1 2] [2 "three"] ["three" nil] [nil 5]] (partition 2 1 (test-generator)))) |
2520 | | - (is (= [[0 1 2 "three"] [nil 5 :pad :pad]] (partition 4 4 (repeat :pad) (test-generator))))) |
| 2518 | + (is (= [[0 1] [[2] "three"] [nil 5]] (partition 2 (test-generator)))) |
| 2519 | + (is (= [[0 1] [1 [2]] [[2] "three"] ["three" nil] [nil 5]] (partition 2 1 (test-generator)))) |
| 2520 | + (is (= [[0 1 [2] "three"] [nil 5 :pad :pad]] (partition 4 4 (repeat :pad) (test-generator))))) |
2521 | 2521 |
|
2522 | 2522 | (testing "partition-all" |
2523 | | - (is (= [[0 1 2 "three"] [nil 5]] (partition-all 4 (test-generator)))) |
2524 | | - (is (= [[0 1 2 "three"] [nil 5]] (partition-all 4 4 (test-generator))))) |
| 2523 | + (is (= [[0 1 [2] "three"] [nil 5]] (partition-all 4 (test-generator)))) |
| 2524 | + (is (= [[0 1 [2] "three"] [nil 5]] (partition-all 4 4 (test-generator))))) |
2525 | 2525 |
|
2526 | 2526 | (testing "distinct" |
2527 | 2527 | (is (= test-generator-vals (dedupe (test-generator))))) |
2528 | 2528 |
|
2529 | | - ;; TODO |
2530 | | - ;; (testing "flatten" |
2531 | | - ;; (is (= nil (flatten [[:a :b :c] (test-generator)])))) |
2532 | | - |
| 2529 | + (testing "flatten" |
| 2530 | + (is (= [:a :b :c 0 1 2 "three" nil 5] (flatten [[:a :b :c] (test-generator)])))) |
2533 | 2531 |
|
2534 | 2532 | (testing "take-last" |
2535 | | - (is (= [2 "three" nil 5] (take-last 4 (test-generator))))) |
| 2533 | + (is (= [[2] "three" nil 5] (take-last 4 (test-generator))))) |
2536 | 2534 |
|
2537 | | - (testing "sort-by" |
2538 | | - (is (= [5 nil "three" 2 1 0] (reverse (test-generator))))) |
| 2535 | + (testing "reverse" |
| 2536 | + (is (= [5 nil "three" [2] 1 0] (reverse (test-generator))))) |
2539 | 2537 |
|
| 2538 | + ;; others: sort-by, for, last ... |
2540 | 2539 | ) |
2541 | 2540 |
|
2542 | 2541 | ;;;;;;;;;; |
|
0 commit comments