                   (= attrs new-attrs))))
 
 (defspec test-dump
-  {:num-tests (* 1000 (property-tests-multiplier))}
-  (prop/for-all [rubbish (gen/vector (gen/one-of [(gen/choose 0 0xd7ff)
-                                                  ; skip Unicode surrogates and private use area
-                                                  (gen/choose 0xf900 0xffff)]) 10 100)]
+  {:num-tests (* 100 (property-tests-multiplier))}
+  (prop/for-all [input (gen/vector gen-input 5 100)]
     (let [blank-vt (make-vt 10 5)
-          vt (feed blank-vt rubbish)
+          vt (reduce feed blank-vt input)
           text (dump vt)
           new-vt (feed-str blank-vt text)]
       (= (:lines vt) (:lines new-vt)))))

  (let [vt (-> (make-vt 4 3) (assoc-in [:parser :param-chars] [0x3b 0x3b 0x31 0x32 0x3b 0x3b 0x32 0x33 0x3b 0x31 0x3b]))]
    (is (= (get-params vt) [0 0 12 0 23 1]))))

(def gen-ascii-rubbish (gen/vector (gen/choose 0 0x9f) 1 100))
(def gen-unicode-rubbish (gen/vector (gen/choose 0 0x10ffff) 1 100))

(defspec test-parser-state-for-random-input
  {:num-tests (* 100 (property-tests-multiplier))}

  {:num-tests (* 100 (property-tests-multiplier))}
  (prop/for-all [x (gen/choose 0 19)
                 y (gen/choose 0 9)
                 input gen-input]
                (let [vt (-> (make-vt 20 10)
                             (move-cursor x y)
                             (feed input))
                      {:keys [lines]} vt]
                  (and (= 10 (count lines))
                       (every? #(= 20 (count %)) lines)))))
