diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-13 15:05:27 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-13 15:05:27 -0500 |
| commit | 2d8047ccf453b1248f9e9ba25d53f5f49d7a9c97 (patch) | |
| tree | 15eee28d9bdc064301b34129d19bda413f74ba0e /scripts/theme-studio/test_generate.py | |
| parent | a090138d84f3e93b2d57b38159cf0b3b7330fe11 (diff) | |
| download | dotemacs-2d8047ccf453b1248f9e9ba25d53f5f49d7a9c97.tar.gz dotemacs-2d8047ccf453b1248f9e9ba25d53f5f49d7a9c97.zip | |
Extract theme studio default face adapter
Diffstat (limited to 'scripts/theme-studio/test_generate.py')
| -rw-r--r-- | scripts/theme-studio/test_generate.py | 60 |
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() |
