nx_font_bitmap_5x7_test.nx source
↩ module page · 82 lines · 3377 B
1// nx_font_bitmap_5x7_test.nx -- smoke for the 5x7 bitmap font lookup.
2// Verifies specific glyph row patterns, space + period, and the
3// out-of-range / unsupported-char rejection.
4
5import "nx_syscalls.nx"
6import "nx_font_bitmap_5x7.nx"
7
8func main() -> i64 {
9 // ---- Space (32): all rows zero ----
10 var i: i64 = 0
11 while i < 7 {
12 if nx_font_5x7_glyph_row(32, i) != 0 { return 1 }
13 i = i + 1
14 }
15
16 // ---- '0' (48): top row .###. = 14; row 3 ##..# = 25 ----
17 if nx_font_5x7_glyph_row(48, 0) != 14 { return 10 }
18 if nx_font_5x7_glyph_row(48, 1) != 19 { return 11 }
19 if nx_font_5x7_glyph_row(48, 2) != 21 { return 12 }
20 if nx_font_5x7_glyph_row(48, 3) != 25 { return 13 }
21 if nx_font_5x7_glyph_row(48, 4) != 17 { return 14 }
22 if nx_font_5x7_glyph_row(48, 5) != 17 { return 15 }
23 if nx_font_5x7_glyph_row(48, 6) != 14 { return 16 }
24
25 // ---- '1' (49): row 0 = 4 (..#..), row 1 = 12 (.##..) ----
26 if nx_font_5x7_glyph_row(49, 0) != 4 { return 20 }
27 if nx_font_5x7_glyph_row(49, 1) != 12 { return 21 }
28 if nx_font_5x7_glyph_row(49, 6) != 14 { return 22 }
29
30 // ---- '2' (50): row 6 = ##### = 31 ----
31 if nx_font_5x7_glyph_row(50, 6) != 31 { return 30 }
32
33 // ---- '7' (55): row 0 = ##### = 31; row 6 = .#... = 8 ----
34 if nx_font_5x7_glyph_row(55, 0) != 31 { return 40 }
35 if nx_font_5x7_glyph_row(55, 6) != 8 { return 41 }
36
37 // ---- '9' (57): row 3 = .#### = 15 ----
38 if nx_font_5x7_glyph_row(57, 3) != 15 { return 50 }
39
40 // ---- '.' (46): row 5 + 6 = ..#.. = 4; row 0..4 = 0 ----
41 if nx_font_5x7_glyph_row(46, 0) != 0 { return 60 }
42 if nx_font_5x7_glyph_row(46, 4) != 0 { return 61 }
43 if nx_font_5x7_glyph_row(46, 5) != 4 { return 62 }
44 if nx_font_5x7_glyph_row(46, 6) != 4 { return 63 }
45
46 // ---- Out-of-range row index -> -1 ----
47 if nx_font_5x7_glyph_row(48, 0 - 1) != 0 - 1 { return 70 }
48 if nx_font_5x7_glyph_row(48, 7) != 0 - 1 { return 71 }
49
50 // ---- Newly added uppercase letters return valid 5-bit patterns ----
51 // 'A' (65) row 0 = ..#.. = 4 (peak of the triangle)
52 if nx_font_5x7_glyph_row(65, 0) != 4 { return 80 }
53 // 'Z' (90) row 0 = ##### = 31
54 if nx_font_5x7_glyph_row(90, 0) != 31 { return 81 }
55 // 'T' (84) row 0 = ##### = 31
56 if nx_font_5x7_glyph_row(84, 0) != 31 { return 82 }
57
58 // ---- Lowercase letters now supported ----
59 if nx_font_5x7_glyph_row(97, 0) != 0 { return 83 } // 'a' row 0 = blank
60 if nx_font_5x7_glyph_row(97, 2) != 14 { return 84 } // 'a' row 2 = .###.
61 if nx_font_5x7_glyph_row(122, 2) != 31 { return 85 } // 'z' row 2 = #####
62
63 // ---- Still-unsupported chars (punctuation) -> -1 ----
64 if nx_font_5x7_glyph_row(33, 0) != 0 - 1 { return 86 } // '!' not yet supported
65 if nx_font_5x7_glyph_row(64, 0) != 0 - 1 { return 87 } // '@' not yet supported
66 if nx_font_5x7_glyph_row(63, 0) != 0 - 1 { return 88 } // '?' not yet supported
67
68 // ---- All 10 digits return non-negative for all 7 rows ----
69 var d: i64 = 48 // '0'
70 while d <= 57 { // '9'
71 var r: i64 = 0
72 while r < 7 {
73 let val: i64 = nx_font_5x7_glyph_row(d, r)
74 if val < 0 { return 90 }
75 if val > 31 { return 91 } // 5-bit max = 31
76 r = r + 1
77 }
78 d = d + 1
79 }
80
81 return 0
82}