aboutsummaryrefslogtreecommitdiff
path: root/scripts/theme-studio/test_generate.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/theme-studio/test_generate.py')
-rw-r--r--scripts/theme-studio/test_generate.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/scripts/theme-studio/test_generate.py b/scripts/theme-studio/test_generate.py
index ee13f8de..4f35e3a7 100644
--- a/scripts/theme-studio/test_generate.py
+++ b/scripts/theme-studio/test_generate.py
@@ -12,6 +12,7 @@ import os
import unittest
import generate # importable without side effects: the file write is __main__-guarded
+from default_faces import DefaultFaces
class StripExports(unittest.TestCase):
@@ -137,5 +138,64 @@ class FacesHelper(unittest.TestCase):
self.assertEqual(generate._faces([], "org-", {"org-todo": {"fg": "gold"}}), [])
+class DefaultFaceAdapter(unittest.TestCase):
+ def setUp(self):
+ self.defaults = DefaultFaces({
+ "faces": {
+ "sample": {
+ "chosenGuiLight": {
+ "foreground": "gray20",
+ "foregroundHex": "#333333",
+ "background": "white",
+ "backgroundHex": "#ffffff",
+ "weight": "bold",
+ "slant": "italic",
+ "underline": True,
+ "inherit": "parent",
+ "box": [":line-width", ["cons", 2, 2], ":style", "released-button"],
+ },
+ "effectiveGuiLight": {"foreground": "black", "foregroundHex": "#000000"},
+ },
+ "boxed": {
+ "chosenGuiLight": {
+ "box": [":line-width", -3, ":color", "gray20"],
+ },
+ "effectiveGuiLight": {},
+ },
+ }
+ })
+
+ def test_seed_uses_own_face_attributes_and_converts_boxes(self):
+ self.assertEqual(self.defaults.seed("sample", effective=False), {
+ "fg": "#333333",
+ "bg": "#ffffff",
+ "bold": True,
+ "italic": True,
+ "underline": True,
+ "inherit": "parent",
+ "box": {"style": "released", "width": 2, "color": None},
+ })
+
+ def test_color_reads_effective_hex_by_default(self):
+ self.assertEqual(self.defaults.color("sample"), "#000000")
+
+ def test_line_box_keeps_width_and_resolves_named_color(self):
+ self.assertEqual(self.defaults.seed("boxed")["box"], {
+ "style": "line",
+ "width": 3,
+ "color": "#333333",
+ })
+
+ def test_label_uses_captured_color_name_when_present(self):
+ self.assertEqual(self.defaults.label("#333333", "fallback"), "gray20")
+
+ def test_missing_snapshot_is_safe(self):
+ defaults = DefaultFaces(None)
+ self.assertFalse(defaults.available)
+ self.assertEqual(defaults.face("missing"), {})
+ self.assertEqual(defaults.seed("missing"), {})
+ self.assertEqual(defaults.label("#000000", "fallback"), "fallback")
+
+
if __name__ == "__main__":
unittest.main()