diff --git a/common/src/app/common/svg/path/Parser.java b/common/src/app/common/svg/path/Parser.java index 3be70c220..cfceaf944 100644 --- a/common/src/app/common/svg/path/Parser.java +++ b/common/src/app/common/svg/path/Parser.java @@ -636,8 +636,9 @@ public class Parser { for (int i=0; i> (svg.path/parse data) + (mapv (fn [entry] + (update entry :params #(into (sorted-map) %))))) + result2 (->> (svg.path.legacy/parse data) + (mapv (fn [entry] + (update entry :params #(into (sorted-map) %)))))] + + (t/is (= 41 + (count result1) + (count result2))) + + ;; (pp/pprint result1 {:length 50}) + + (dotimes [i (count result1)] + (let [item1 (nth result1 i) + item2 (nth result2 i) + item3 (nth expect i)] + + (t/is (= (:command item1) + (:command item2) + (:command item3))) + + (doseq [[k v] (:params item1)] + (t/is (mth/close? v (get-in item2 [:params k]) 0.000000001)) + (t/is (mth/close? v (get-in item3 [:params k]) 0.000000001)) + ))))) + +(t/deftest parse-test-5 + (let [data (str "M363 826" + "q11-56 54-93" + "t101-37" + "h176" + "q22-35 34-75.179 12-40.178 12-84.821 0-125.357-87.321-212.679" + "Q565.357 236 440 236" + "t-212.679 87.321" + "Q140 410.643 140 536" + "q0 105 63 184.5T363 826Zm157 190" + "q-58 0-102" + "-36.5T363 888q-122-26-202.5-124T80 536q0-150 105-255t255-105" + "q150 0 255 105t105 " + "255q0 43-9.5 83.5T763 696q66 0 111.5 47T920 856q0 66-47 113t-113 47H520Zm-80" + "-485Zm200 325ZM520 956h240q42 0 71-29t29-71q0-42-29-71t-71-29H520q-42 0-71 29t" + "-29 71q0 42 29 71t71 29Zm-.175-70Q507 886 498.5 877.325" + "q-8.5-8.676-8.5-21.5 0" + "-12.825 8.675-21.325 8.676-8.5 21.5-8.5 12.825 0 21.325 8.675 8.5 8.676 8.5 " + "21.5 0 12.825-8.675 21.325-8.676 8.5-21.5 8.5Zm120 0Q627 886 618.5 877.325q-8.5" + "-8.676-8.5-21.5 0-12.825 8.675-21.325 8.676-8.5 21.5-8.5 12.825 0 21.325 8.675 " + "8.5 8.676 8.5 21.5 0 12.825-8.675 21.325-8.676 8.5-21.5 8.5Zm120 0Q747 886 " + "738.5 877.325q-8.5-8.676-8.5-21.5 0-12.825 8.675-21.325 8.676-8.5 21.5-8.5 " + "12.825 0 21.325 8.675 8.5 8.676 8.5 21.5 0 12.825-8.675 21.325-8.676 8.5-21.5 " + "8.5Z" + ) + + result1 (->> (svg.path/parse data) + (mapv (fn [entry] + (update entry :params #(into (sorted-map) %))))) + result2 (->> (svg.path.legacy/parse data) + (mapv (fn [entry] + (update entry :params #(into (sorted-map) %)))))] + + (t/is (= 76 + (count result1) + (count result2))) + + ;; (pp/pprint result1 {:length 100}) + ;; (pp/pprint result2 {:length 50}) + + (dotimes [i (count result1)] + (let [item1 (nth result1 i) + item2 (nth result2 i) + ] + + (t/is (= (:command item1) + (:command item2))) + + (doseq [[k v] (:params item1)] + (t/is (mth/close? v (get-in item2 [:params k]) 0.000000001)) + ))))) + (t/deftest arc-to-bezier-1 (let [expected1 [-1.6697754290362354e-13 -5.258016244624741e-13