             (f/foreach (f/fn [x] x))) => nil)
 
       (fact
+        "fold returns aggregate each partition, and then the results for all the partitions,
+        using a given associative function and a neutral 'zero value'"
+        (-> (f/parallelize c [1 2 3 4 5])
+            (f/fold 0 (f/fn [x y] (+ x y)))) => 15)
+
+      (fact
         "first returns the first element of an RDD"
         (-> (f/parallelize c [1 2 3 4 5])
             f/first) => 1)

            f/collect) => [1 4 7 11 14])

      (fact
        "fold returns aggregate each partition, and then the results for all the partitions,
        using a given associative function and a neutral 'zero value'"
        (-> (f/parallelize c [1 2 3 4 5])
            (f/fold 0 (f/fn [x y] (+ x y)))) => 15)

      #_(fact
        "group-by"
        (-> (f/parallelize c [["key1" 1]
                              ["key1" 2]
                              ["key2" 3]
                              ["key2" 4]
                              ["key3" 5]])
            (f/group-by (f/fn [x] (first x)))
            (f/map f/untuple)
            f/collect
            vec) => [["key1" [1 2]] ["key2" [3 4]] ["key3" [5]]])

      #_(fact
        "group-by-key"

            f/group-by-key
            (f/map f/double-untuple)
            f/collect
            vec) => [["key1" [1 2]] ["key2" [3 4]] ["key3" [5]]])

      #_(fact
        "flat-map-to-pair"
