code wiki / (root) / nx_font_bitmap_5x7_test.nx

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}