nx_gltf_accessor_gate_t181.nx source
↩ module page · 45 lines · 6803 B
1import "nx_gltf_accessor_candidate_t181.nx"
2func gp(s:*u8)->i64{sys_write(1,s,gll_slen(s));return 0}
3func gn(v:i64)->i64{let b:*u8=sys_mmap(32);var x:i64=v;var i:i64=31;if x<0{gp("-");x=0-x};if x==0{b[i]=48 as u8;i=i-1};while x>0{b[i]=(48+x%10) as u8;x=x/10;i=i-1};sys_write(1,(b as i64+i+1) as *u8,31-i);sys_munmap(b,32);return 0}
4func gtest(j:*u8,expected:i64)->i64 {
5 let jn:i64=gll_slen(j);let padded:i64=(jn+3)/4*4;let n:i64=28+padded+128;let src:*u8=sys_mmap(n)
6 glp_u32(src,0,0x46546c67);glp_u32(src,4,2);glp_u32(src,8,n);glp_u32(src,12,padded);glp_u32(src,16,0x4e4f534a)
7 var i:i64=0;while i<jn{src[20+i]=j[i];i=i+1};while i<padded{src[20+i]=32 as u8;i=i+1}
8 glp_u32(src,20+padded,128);glp_u32(src,24+padded,0x004e4942)
9 let cx:*i64=sys_mmap(GLD_CONTEXT_WORDS*8) as *i64;let view:*i64=sys_mmap(GLD_VIEW_WORDS*8) as *i64
10 var rc:i64=gltf_view_open(src,n,cx);if rc==0{rc=gltf_accessor_view(cx,0,128,view)}
11 var ok:i64=0;if rc==expected{ok=1};gp("fixture rc=");gn(rc);gp(" expected=");gn(expected);gp("
12")
13 gltf_view_close(cx);sys_munmap(cx as *u8,GLD_CONTEXT_WORDS*8);sys_munmap(view as *u8,GLD_VIEW_WORDS*8);sys_munmap(src,n);return ok
14}
15func main()->i64{
16 var passed:i64=0;var total:i64=0
17 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":0,\"componentType\":5126,\"count\":2,\"type\":\"VEC3\"}]}",0)
18 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":4,\"componentType\":5126,\"count\":2,\"type\":\"VEC3\"}]}",0)
19 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":1,\"componentType\":5126,\"count\":2,\"type\":\"VEC3\"}]}",-3)
20 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":0,\"componentType\":5126,\"count\":12,\"type\":\"VEC3\"}]}",-3)
21 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":0,\"componentType\":5126,\"count\":0,\"type\":\"VEC3\"}]}",-1)
22 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":0,\"componentType\":5126,\"count\":2,\"type\":\"VEC3\",\"normalized\":true}]}",-1)
23 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":0,\"componentType\":5126,\"count\":2,\"type\":\"VEC3\",\"sparse\":{}}]}",-2)
24 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128}],\"accessors\":[{\"bufferView\":7,\"byteOffset\":0,\"componentType\":5126,\"count\":2,\"type\":\"VEC3\"}]}",-1)
25 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":0,\"componentType\":5121,\"count\":2,\"type\":\"MAT3\"}]}",-2)
26 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128,\"byteStride\":16}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":0,\"componentType\":5126,\"count\":2,\"type\":\"VEC3\"}]}",0)
27 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128,\"byteStride\":4}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":0,\"componentType\":5126,\"count\":2,\"type\":\"VEC3\"}]}",-3)
28 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":129}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":0,\"componentType\":5126,\"count\":2,\"type\":\"VEC3\"}]}",-3)
29 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":125}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":0,\"componentType\":5126,\"count\":2,\"type\":\"VEC3\"}]}",-3)
30 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":125}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":125}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":0,\"componentType\":5126,\"count\":2,\"type\":\"VEC3\"}]}",0)
31 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128,\"byteStride\":3}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":0,\"componentType\":5121,\"count\":2,\"type\":\"SCALAR\"}]}",-3)
32 total=total+1;passed=passed+gtest("{\"asset\":{\"version\":\"2.0\"},\"buffers\":[{\"byteLength\":128}],\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":128,\"byteStride\":256}],\"accessors\":[{\"bufferView\":0,\"byteOffset\":0,\"componentType\":5126,\"count\":1,\"type\":\"VEC3\"}]}",-3)
33 let ln:*i64=sys_mmap(16) as *i64;let src:*u8=sys_read_file("../knowledge/fetched/rigmodels-tifa-catwalk-143925f3.glb",ln)
34 let cx:*i64=sys_mmap(GLD_CONTEXT_WORDS*8) as *i64;let view:*i64=sys_mmap(GLD_VIEW_WORDS*8) as *i64
35 let rc:i64=gltf_view_open(src,ln[0],cx);total=total+1;if rc==0{passed=passed+1}
36 gp("actual open=");gn(rc);gp("
37")
38 if rc==0{let st:*i64=cx[5] as *i64;var i:i64=0;var valid:i64=0;while i<st[10]{let ar:i64=gltf_accessor_view(cx,i,st[2],view);if ar==0{valid=valid+1}else{gp("accessor failed index=");gn(i);gp(" rc=");gn(ar);gp("
39")};i=i+1}
40 total=total+1;if valid==st[10]{passed=passed+1};gp("actual accessor views=");gn(valid);gp("/");gn(st[10]);gp("
41")}
42 gltf_view_close(cx);sys_munmap(cx as *u8,GLD_CONTEXT_WORDS*8);sys_munmap(view as *u8,GLD_VIEW_WORDS*8);if (src as i64)>0{sys_munmap(src,ln[0])};sys_munmap(ln as *u8,16)
43 gp("GLTF ACCESSOR passed=");gn(passed);gp(" total=");gn(total);gp("
44");if passed!=total{return 1};return 0
45}