code wiki / (root) / nx_gltf_accessor_gate_t181.nx

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}