Skip to content

Commit e1c5082

Browse files
committed
feat: Add comprehensive unit tests for package functions and templates
1 parent 5c425db commit e1c5082

File tree

1 file changed

+117
-3
lines changed

1 file changed

+117
-3
lines changed

tests/unit1/test.typ

Lines changed: 117 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,118 @@
1-
#import "/src/lib.typ" as my-package
1+
#import "/src/lib.typ": *
22

3-
// TODO real tests
4-
#assert(true)
3+
// Test 1: Color constants are correctly defined
4+
#assert.eq(ccPrimaryYellow, "#f8d7b0")
5+
#assert.eq(ccSecondaryBrown, "#392518")
6+
#assert.eq(ccAccentBlue, "#7bd4ff")
7+
#assert.eq(ccLighterBlue, "#cceeff")
8+
#assert.eq(ccAccentGreen, "#90ee90")
9+
#assert.eq(ccLightGrey, "#666666")
10+
#assert.eq(ccDividerGrey, "#dddddd")
11+
#assert.eq(ccCodeBackground, "#f8f9fa")
12+
#assert.eq(blockRadiusValue, 2pt)
13+
14+
// Test 2: Functions return content (smoke tests)
15+
#let result = callout[This is a test callout]
16+
#assert.ne(result, none)
17+
#assert(type(result) == content)
18+
19+
// Test 3: Callout with custom parameters doesn't crash
20+
#let result = callout(
21+
title: "Warning",
22+
icon: emoji.warning,
23+
color: rgb("#ff0000"),
24+
[Custom callout content]
25+
)
26+
#assert.ne(result, none)
27+
#assert(type(result) == content)
28+
29+
// Test 4: Quote functions return proper content type
30+
#let block_result = cc-quote(block: true, [Block quote])
31+
#let inline_result = cc-quote(block: false, [Inline quote])
32+
33+
#assert.ne(block_result, none)
34+
#assert.ne(inline_result, none)
35+
#assert(type(block_result) == content)
36+
#assert(type(inline_result) == content)
37+
38+
// Test 5: Markdown rendering smoke tests
39+
#let simple_md = "# Test\n\nSome **bold** text."
40+
#let result = render-markdown(simple_md)
41+
42+
#assert.ne(result, none)
43+
#assert(type(result) == content)
44+
45+
// Test 6: Markdown with math doesn't crash
46+
#let math_md = "Equation: $E = mc^2$"
47+
#let result = render-markdown(math_md)
48+
49+
#assert.ne(result, none)
50+
#assert(type(result) == content)
51+
52+
// Test 7: Template compiles without errors - minimal case
53+
#let result = articulate-coderscompass(
54+
title: "Test Title",
55+
[Test content]
56+
)
57+
#assert.ne(result, none)
58+
#assert(type(result) == content)
59+
60+
// Test 8: Template with multiple authors compiles
61+
#let result = articulate-coderscompass(
62+
title: "Multi-Author Test",
63+
authors: (
64+
(name: "First Author", email: "[email protected]", affiliation: "Test Org"),
65+
(name: "Second Author", email: "[email protected]", affiliation: "Test Org"),
66+
),
67+
[Test content with multiple authors]
68+
)
69+
#assert.ne(result, none)
70+
#assert(type(result) == content)
71+
72+
// Test 9: Template with all parameters compiles
73+
#let result = articulate-coderscompass(
74+
title: "Full Parameter Test",
75+
subtitle: "Testing All Options",
76+
authors: (
77+
(name: "Test Author", email: "[email protected]", affiliation: "Test Organization"),
78+
),
79+
abstract: [Complete test of all template parameters and options.],
80+
keywords: ("test", "template", "typst", "unit-testing"),
81+
version: "2.0.0",
82+
reading-time: "3 minutes",
83+
watermark: "TEST BUILD",
84+
website-url: "https://coderscompass.org",
85+
publication: "Test Publication",
86+
use-brand-fonts: false,
87+
[Full template test content goes here with all parameters specified.]
88+
)
89+
#assert.ne(result, none)
90+
#assert(type(result) == content)
91+
92+
// Test 10: Edge case - empty authors array
93+
#let result = articulate-coderscompass(
94+
title: "Empty Authors Test",
95+
authors: (),
96+
[Content with no authors specified]
97+
)
98+
#assert.ne(result, none)
99+
#assert(type(result) == content)
100+
101+
// Test 11: Color conversion functionality
102+
// Verify colors can be converted to rgb type
103+
#let primary_rgb = rgb(ccPrimaryYellow)
104+
#let secondary_rgb = rgb(ccSecondaryBrown)
105+
#let accent_rgb = rgb(ccAccentBlue)
106+
107+
#assert.ne(primary_rgb, none)
108+
#assert.ne(secondary_rgb, none)
109+
#assert.ne(accent_rgb, none)
110+
111+
// Test 12: Parameter type validation
112+
// Test that version parameter works with strings
113+
#assert(type("1.0.0") == str)
114+
#assert(type(2pt) == length)
115+
116+
// Test that date parameter accepts datetime
117+
#let test_date = datetime.today()
118+
#assert.ne(test_date, none)

0 commit comments

Comments
 (0)