nx_png_capacity_baseline_t278.nx source
↩ module page · 28 lines · 1420 B
1import "nx_png.nx"
2import "nx_sha256.nx"
3import "nx_lib_std.nx"
4func pg_hash(b:*u8,n:i64)->i64 {
5 let d:*u8=sys_mmap_try(SHA256_DIGEST_BYTES);if (d as i64)<=0{return 0}
6 if sha256_digest_checked_native(b,n,d)!=0{return 0}
7 let hex:*u8="0123456789abcdef" as *u8;var i:i64=0
8 while i<SHA256_DIGEST_BYTES{let v:i64=d[i] as i64;sys_write(1,((hex as i64)+v/16) as *u8,1);sys_write(1,((hex as i64)+v%16) as *u8,1);i=i+1}
9 sys_munmap(d,SHA256_DIGEST_BYTES);return 1
10}
11func pg_case(w:i64,h:i64)->i64{
12 let cap:i64=png_buf_cap(w,h);if cap<=0{return 0}
13 let n:i64=w*h;let fb:*i64=sys_mmap_try(n*8) as *i64;let b:*u8=sys_mmap_try(cap+2)
14 if (fb as i64)<=0 || (b as i64)<=0{return 0}
15 var i:i64=0;var seed:i64=17;while i<n{seed=(seed*1103515245+12345)&2147483647;fb[i]=seed&16777215;i=i+1}
16 b[0]=165 as u8;b[cap+1]=90 as u8;let out:*u8=((b as i64)+1) as *u8
17 let result:i64=write_png_buf(fb,w,h,out)
18 var ok:i64=1;if result<=0 || result>cap || b[0]!=(165 as u8) || b[cap+1]!=(90 as u8){ok=0}
19 std_puts("PNG-SHA " as *u8);pg_hash(out,result);std_putln("" as *u8)
20 out[0]=77 as u8
21 sys_munmap(fb as *u8,n*8);sys_munmap(b,cap+2);return ok
22}
23func main()->i64{
24 var pass:i64=0;pass=pass+pg_case(1,1);pass=pass+pg_case(3,5);pass=pass+pg_case(64,65);pass=pass+pg_case(480,1)
25 if png_buf_cap(2048,2048)==18877631{pass=pass+1}
26 if pass!=5{std_putln("PNG-CAPACITY FAIL" as *u8);return 1}
27 std_putln("PNG-CAPACITY 5/5 PASS" as *u8);return 0
28}