mirror of
https://github.com/penpot/penpot.git
synced 2025-12-11 22:14:05 +01:00
127 lines
4.0 KiB
Clojure
127 lines
4.0 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) KALEIDOS INC
|
|
|
|
(ns frontend-tests.fonts-test
|
|
(:require
|
|
[app.main.fonts :as fonts]
|
|
[cljs.test :as t :include-macros true]))
|
|
|
|
(def sample-font
|
|
{:id "sourcesanspro"
|
|
:name "Source Sans Pro"
|
|
:family "sourcesanspro"
|
|
:variants
|
|
[{:id "200"
|
|
:name "200"
|
|
:weight "200"
|
|
:style "normal"
|
|
:suffix "extralight"
|
|
:ttf-url "sourcesanspro-extralight.ttf"}
|
|
{:id "200italic"
|
|
:name "200 Italic"
|
|
:weight "200"
|
|
:style "italic"
|
|
:suffix "extralightitalic"
|
|
:ttf-url "sourcesanspro-extralightitalic.ttf"}
|
|
{:id "300"
|
|
:name "300"
|
|
:weight "300"
|
|
:style "normal"
|
|
:suffix "light"
|
|
:ttf-url "sourcesanspro-light.ttf"}
|
|
{:id "300italic"
|
|
:name "300 Italic"
|
|
:weight "300"
|
|
:style "italic"
|
|
:suffix "lightitalic"
|
|
:ttf-url "sourcesanspro-lightitalic.ttf"}
|
|
{:id "regular"
|
|
:name "400"
|
|
:weight "400"
|
|
:style "normal"
|
|
:ttf-url "sourcesanspro-regular.ttf"}
|
|
{:id "italic"
|
|
:name "400 Italic"
|
|
:weight "400"
|
|
:style "italic"
|
|
:ttf-url "sourcesanspro-italic.ttf"}
|
|
{:id "bold"
|
|
:name "700"
|
|
:weight "700"
|
|
:style "normal"
|
|
:ttf-url "sourcesanspro-bold.ttf"}
|
|
{:id "bolditalic"
|
|
:name "700 Italic"
|
|
:weight "700"
|
|
:style "italic"
|
|
:ttf-url "sourcesanspro-bolditalic.ttf"}
|
|
{:id "black"
|
|
:name "900"
|
|
:weight "900"
|
|
:style "normal"
|
|
:ttf-url "sourcesanspro-black.ttf"}
|
|
{:id "blackitalic"
|
|
:name "900 Italic"
|
|
:weight "900"
|
|
:style "italic"
|
|
:ttf-url "sourcesanspro-blackitalic.ttf"}]
|
|
:backend :builtin})
|
|
|
|
(t/deftest find-closest-weight-variant-test
|
|
(t/testing "finds exact weight match"
|
|
(let [result (fonts/find-closest-variant sample-font "400" nil)]
|
|
(t/is (= "400" (:weight result)))
|
|
(t/is (= "normal" (:style result)))))
|
|
|
|
(t/testing "finds exact weight match with style"
|
|
(let [result (fonts/find-closest-variant sample-font "400" "italic")]
|
|
(t/is (= "400" (:weight result)))
|
|
(t/is (= "italic" (:style result)))))
|
|
|
|
(t/testing "chooses higher weight when exactly between two weights"
|
|
(let [result (fonts/find-closest-variant sample-font "350" nil)]
|
|
(t/is (= "400" (:weight result)))))
|
|
|
|
(t/testing "finds exact weight match with style"
|
|
(let [result (fonts/find-closest-variant sample-font "350" "italic")]
|
|
(t/is (= "400" (:weight result)))
|
|
(t/is (= "italic" (:style result)))))
|
|
|
|
(t/testing "finds closest weight below minimum available"
|
|
(let [result (fonts/find-closest-variant sample-font "0" nil)]
|
|
(t/is (= "200" (:weight result)))))
|
|
|
|
(t/testing "finds closest weight above maximum available"
|
|
(let [result (fonts/find-closest-variant sample-font "1000" nil)]
|
|
(t/is (= "900" (:weight result)))))
|
|
|
|
(t/testing "keeps the closest weight match when style is not found"
|
|
(let [font {:id "sourcesanspro"
|
|
:name "Source Sans Pro"
|
|
:family "sourcesanspro"
|
|
:variants
|
|
[{:id "200italic"
|
|
:name "200 Italic"
|
|
:weight "200"
|
|
:style "italic"
|
|
:suffix "extralightitalic"
|
|
:ttf-url "sourcesanspro-extralightitalic.ttf"}
|
|
{:id "300"
|
|
:name "300"
|
|
:weight "300"
|
|
:style "normal"
|
|
:suffix "light"
|
|
:ttf-url "sourcesanspro-light.ttf"}
|
|
{:id "300italic"
|
|
:name "300 Italic"
|
|
:weight "300"
|
|
:style "italic"
|
|
:suffix "lightitalic"
|
|
:ttf-url "sourcesanspro-lightitalic.ttf"}]}
|
|
result (fonts/find-closest-variant font "200" nil)]
|
|
(t/is (= "200" (:weight result)))
|
|
(t/is (= "italic" (:style result))))))
|