nx_surface_boundary_gate_t207.nx source
↩ module page · 30 lines · 12838 B
1import "nx_surface_anchor_gate_t140.nx"
2func main(argc:i64,argv:*i64)->i64{
3 if argc!=2{return 2};let len:*i64=sys_mmap(16) as *i64;let b:*u8=sys_map_file(argv[1] as *u8,len);if (b as i64)==0{return 3};let n:i64=len[0];let valid:i64=ngb_attach_source_v1(b,n);if valid<0{return 4}
4 let h:*i64=b as *i64;let va:i64=nxa_counted_section(b,n,nxa_tag4("VERT"),3);let ta:i64=nxa_counted_section(b,n,nxa_tag4("TRIS"),3);let nv:i64=h[va];let nt:i64=h[ta]
5 let labels:*i64=sys_mmap_try(nv*8) as *i64;let work:*i64=sys_mmap_try(nt*24) as *i64;let out:*i64=sys_mmap_try(nt*48) as *i64;let ctr:*i64=sys_mmap_try(16) as *i64;if (labels as i64)<=0||(work as i64)<=0||(out as i64)<=0||(ctr as i64)<=0{return 5};ctr[0]=0;ctr[1]=0;var rc:i64=0;var same:i64=0;
6 rc=nsa_component_boundary_v1(b,n,11012,labels,nv,work,nt*3,out,nt*6);sa_check(rc==10,"actual component11012 boundary cardinality",ctr);
7same=1;if out[0]!=11012||out[1]!=11015{same=0};if out[2]!=11012||out[3]!=11024{same=0};if out[4]!=11015||out[5]!=11017{same=0};if out[6]!=11017||out[7]!=11036{same=0};if out[8]!=11024||out[9]!=11026{same=0};if out[10]!=11026||out[11]!=11028{same=0};if out[12]!=11028||out[13]!=11030{same=0};if out[14]!=11030||out[15]!=11032{same=0};if out[16]!=11032||out[17]!=11034{same=0};if out[18]!=11034||out[19]!=11036{same=0};sa_check(same==1,"actual component11012 exact endpoint identity",ctr);
8rc=nsa_component_boundary_v1(b,n,13110,labels,nv,work,nt*3,out,nt*6);sa_check(rc==10,"actual component13110 boundary cardinality",ctr);
9same=1;if out[0]!=13112||out[1]!=13113{same=0};if out[2]!=13112||out[3]!=13123{same=0};if out[4]!=13113||out[5]!=13115{same=0};if out[6]!=13115||out[7]!=13135{same=0};if out[8]!=13123||out[9]!=13125{same=0};if out[10]!=13125||out[11]!=13126{same=0};if out[12]!=13126||out[13]!=13128{same=0};if out[14]!=13128||out[15]!=13131{same=0};if out[16]!=13131||out[17]!=13133{same=0};if out[18]!=13133||out[19]!=13135{same=0};sa_check(same==1,"actual component13110 exact endpoint identity",ctr);
10rc=nsa_component_boundary_v1(b,n,13411,labels,nv,work,nt*3,out,nt*6);sa_check(rc==48,"actual component13411 boundary cardinality",ctr);
11same=1;if out[0]!=13412||out[1]!=13413{same=0};if out[2]!=13412||out[3]!=13482{same=0};if out[4]!=13413||out[5]!=13442{same=0};if out[6]!=13426||out[7]!=13427{same=0};if out[8]!=13426||out[9]!=13472{same=0};if out[10]!=13427||out[11]!=13433{same=0};if out[12]!=13430||out[13]!=13431{same=0};if out[14]!=13430||out[15]!=13460{same=0};if out[16]!=13431||out[17]!=13472{same=0};if out[18]!=13433||out[19]!=13481{same=0};if out[20]!=13435||out[21]!=13436{same=0};if out[22]!=13435||out[23]!=13439{same=0};if out[24]!=13436||out[25]!=13437{same=0};if out[26]!=13437||out[27]!=13459{same=0};if out[28]!=13439||out[29]!=13442{same=0};if out[30]!=13459||out[31]!=13460{same=0};if out[32]!=13476||out[33]!=13477{same=0};if out[34]!=13476||out[35]!=13478{same=0};if out[36]!=13477||out[37]!=13487{same=0};if out[38]!=13478||out[39]!=13479{same=0};if out[40]!=13479||out[41]!=13480{same=0};if out[42]!=13480||out[43]!=13481{same=0};if out[44]!=13482||out[45]!=13672{same=0};if out[46]!=13487||out[47]!=13762{same=0};if out[48]!=13492||out[49]!=13493{same=0};if out[50]!=13492||out[51]!=13645{same=0};if out[52]!=13493||out[53]!=13498{same=0};if out[54]!=13498||out[55]!=13634{same=0};if out[56]!=13501||out[57]!=13502{same=0};if out[58]!=13501||out[59]!=13650{same=0};if out[60]!=13502||out[61]!=13651{same=0};if out[62]!=13504||out[63]!=13505{same=0};if out[64]!=13504||out[65]!=13600{same=0};if out[66]!=13505||out[67]!=13672{same=0};if out[68]!=13600||out[69]!=13620{same=0};if out[70]!=13608||out[71]!=13609{same=0};if out[72]!=13608||out[73]!=13612{same=0};if out[74]!=13609||out[75]!=13645{same=0};if out[76]!=13612||out[77]!=13651{same=0};if out[78]!=13613||out[79]!=13614{same=0};if out[80]!=13613||out[81]!=13634{same=0};if out[82]!=13614||out[83]!=13615{same=0};if out[84]!=13615||out[85]!=13619{same=0};if out[86]!=13619||out[87]!=13620{same=0};if out[88]!=13648||out[89]!=13649{same=0};if out[90]!=13648||out[91]!=13656{same=0};if out[92]!=13649||out[93]!=13650{same=0};if out[94]!=13656||out[95]!=13762{same=0};sa_check(same==1,"actual component13411 exact endpoint identity",ctr);
12rc=nsa_component_boundary_v1(b,n,13510,labels,nv,work,nt*3,out,nt*6);sa_check(rc==52,"actual component13510 boundary cardinality",ctr);
13same=1;if out[0]!=13512||out[1]!=13513{same=0};if out[2]!=13512||out[3]!=13523{same=0};if out[4]!=13513||out[5]!=13596{same=0};if out[6]!=13522||out[7]!=13523{same=0};if out[8]!=13522||out[9]!=13557{same=0};if out[10]!=13527||out[11]!=13528{same=0};if out[12]!=13527||out[13]!=13599{same=0};if out[14]!=13528||out[15]!=13537{same=0};if out[16]!=13531||out[17]!=13532{same=0};if out[18]!=13531||out[19]!=13535{same=0};if out[20]!=13532||out[21]!=13560{same=0};if out[22]!=13535||out[23]!=13537{same=0};if out[24]!=13557||out[25]!=13559{same=0};if out[26]!=13559||out[27]!=13565{same=0};if out[28]!=13560||out[29]!=13561{same=0};if out[30]!=13561||out[31]!=13588{same=0};if out[32]!=13562||out[33]!=13563{same=0};if out[34]!=13562||out[35]!=13592{same=0};if out[36]!=13563||out[37]!=13564{same=0};if out[38]!=13564||out[39]!=13565{same=0};if out[40]!=13573||out[41]!=13574{same=0};if out[42]!=13573||out[43]!=13576{same=0};if out[44]!=13574||out[45]!=13592{same=0};if out[46]!=13576||out[47]!=13588{same=0};if out[48]!=13596||out[49]!=13678{same=0};if out[50]!=13599||out[51]!=13684{same=0};if out[52]!=13677||out[53]!=13678{same=0};if out[54]!=13677||out[55]!=13688{same=0};if out[56]!=13683||out[57]!=13684{same=0};if out[58]!=13683||out[59]!=13702{same=0};if out[60]!=13685||out[61]!=13688{same=0};if out[62]!=13685||out[63]!=13698{same=0};if out[64]!=13698||out[65]!=13699{same=0};if out[66]!=13699||out[67]!=13731{same=0};if out[68]!=13701||out[69]!=13702{same=0};if out[70]!=13701||out[71]!=13711{same=0};if out[72]!=13705||out[73]!=13706{same=0};if out[74]!=13705||out[75]!=13735{same=0};if out[76]!=13706||out[77]!=13709{same=0};if out[78]!=13709||out[79]!=13711{same=0};if out[80]!=13731||out[81]!=13733{same=0};if out[82]!=13733||out[83]!=13739{same=0};if out[84]!=13735||out[85]!=13736{same=0};if out[86]!=13736||out[87]!=13756{same=0};if out[88]!=13737||out[89]!=13738{same=0};if out[90]!=13737||out[91]!=13740{same=0};if out[92]!=13738||out[93]!=13759{same=0};if out[94]!=13739||out[95]!=13740{same=0};if out[96]!=13743||out[97]!=13744{same=0};if out[98]!=13743||out[99]!=13759{same=0};if out[100]!=13744||out[101]!=13746{same=0};if out[102]!=13746||out[103]!=13756{same=0};sa_check(same==1,"actual component13510 exact endpoint identity",ctr);
14rc=nsa_component_boundary_v1(b,n,13763,labels,nv,work,nt*3,out,nt*6);sa_check(rc==48,"actual component13763 boundary cardinality",ctr);
15same=1;if out[0]!=13764||out[1]!=13765{same=0};if out[2]!=13764||out[3]!=13834{same=0};if out[4]!=13765||out[5]!=13794{same=0};if out[6]!=13778||out[7]!=13779{same=0};if out[8]!=13778||out[9]!=13824{same=0};if out[10]!=13779||out[11]!=13785{same=0};if out[12]!=13781||out[13]!=13782{same=0};if out[14]!=13781||out[15]!=13814{same=0};if out[16]!=13782||out[17]!=13824{same=0};if out[18]!=13785||out[19]!=13833{same=0};if out[20]!=13787||out[21]!=13788{same=0};if out[22]!=13787||out[23]!=13790{same=0};if out[24]!=13788||out[25]!=13813{same=0};if out[26]!=13790||out[27]!=13791{same=0};if out[28]!=13791||out[29]!=13794{same=0};if out[30]!=13813||out[31]!=13814{same=0};if out[32]!=13828||out[33]!=13829{same=0};if out[34]!=13828||out[35]!=13839{same=0};if out[36]!=13829||out[37]!=13830{same=0};if out[38]!=13830||out[39]!=13831{same=0};if out[40]!=13831||out[41]!=13832{same=0};if out[42]!=13832||out[43]!=13833{same=0};if out[44]!=13834||out[45]!=14024{same=0};if out[46]!=13839||out[47]!=14114{same=0};if out[48]!=13844||out[49]!=13847{same=0};if out[50]!=13844||out[51]!=13850{same=0};if out[52]!=13847||out[53]!=13997{same=0};if out[54]!=13850||out[55]!=13986{same=0};if out[56]!=13852||out[57]!=13853{same=0};if out[58]!=13852||out[59]!=14002{same=0};if out[60]!=13853||out[61]!=14003{same=0};if out[62]!=13856||out[63]!=13857{same=0};if out[64]!=13856||out[65]!=13952{same=0};if out[66]!=13857||out[67]!=14024{same=0};if out[68]!=13952||out[69]!=13972{same=0};if out[70]!=13960||out[71]!=13961{same=0};if out[72]!=13960||out[73]!=13964{same=0};if out[74]!=13961||out[75]!=13997{same=0};if out[76]!=13964||out[77]!=14003{same=0};if out[78]!=13965||out[79]!=13966{same=0};if out[80]!=13965||out[81]!=13968{same=0};if out[82]!=13966||out[83]!=13971{same=0};if out[84]!=13968||out[85]!=13986{same=0};if out[86]!=13971||out[87]!=13972{same=0};if out[88]!=14000||out[89]!=14001{same=0};if out[90]!=14000||out[91]!=14008{same=0};if out[92]!=14001||out[93]!=14002{same=0};if out[94]!=14008||out[95]!=14114{same=0};sa_check(same==1,"actual component13763 exact endpoint identity",ctr);
16rc=nsa_component_boundary_v1(b,n,13862,labels,nv,work,nt*3,out,nt*6);sa_check(rc==52,"actual component13862 boundary cardinality",ctr);
17same=1;if out[0]!=13864||out[1]!=13865{same=0};if out[2]!=13864||out[3]!=13875{same=0};if out[4]!=13865||out[5]!=13948{same=0};if out[6]!=13874||out[7]!=13875{same=0};if out[8]!=13874||out[9]!=13908{same=0};if out[10]!=13879||out[11]!=13880{same=0};if out[12]!=13879||out[13]!=13951{same=0};if out[14]!=13880||out[15]!=13889{same=0};if out[16]!=13883||out[17]!=13884{same=0};if out[18]!=13883||out[19]!=13887{same=0};if out[20]!=13884||out[21]!=13912{same=0};if out[22]!=13887||out[23]!=13889{same=0};if out[24]!=13908||out[25]!=13910{same=0};if out[26]!=13910||out[27]!=13916{same=0};if out[28]!=13912||out[29]!=13913{same=0};if out[30]!=13913||out[31]!=13940{same=0};if out[32]!=13914||out[33]!=13915{same=0};if out[34]!=13914||out[35]!=13917{same=0};if out[36]!=13915||out[37]!=13944{same=0};if out[38]!=13916||out[39]!=13917{same=0};if out[40]!=13925||out[41]!=13926{same=0};if out[42]!=13925||out[43]!=13928{same=0};if out[44]!=13926||out[45]!=13944{same=0};if out[46]!=13928||out[47]!=13940{same=0};if out[48]!=13948||out[49]!=14029{same=0};if out[50]!=13951||out[51]!=14036{same=0};if out[52]!=14029||out[53]!=14030{same=0};if out[54]!=14030||out[55]!=14040{same=0};if out[56]!=14035||out[57]!=14036{same=0};if out[58]!=14035||out[59]!=14054{same=0};if out[60]!=14037||out[61]!=14040{same=0};if out[62]!=14037||out[63]!=14050{same=0};if out[64]!=14050||out[65]!=14051{same=0};if out[66]!=14051||out[67]!=14083{same=0};if out[68]!=14053||out[69]!=14054{same=0};if out[70]!=14053||out[71]!=14063{same=0};if out[72]!=14057||out[73]!=14058{same=0};if out[74]!=14057||out[75]!=14087{same=0};if out[76]!=14058||out[77]!=14061{same=0};if out[78]!=14061||out[79]!=14063{same=0};if out[80]!=14083||out[81]!=14085{same=0};if out[82]!=14085||out[83]!=14091{same=0};if out[84]!=14087||out[85]!=14088{same=0};if out[86]!=14088||out[87]!=14108{same=0};if out[88]!=14089||out[89]!=14090{same=0};if out[90]!=14089||out[91]!=14092{same=0};if out[92]!=14090||out[93]!=14111{same=0};if out[94]!=14091||out[95]!=14092{same=0};if out[96]!=14095||out[97]!=14096{same=0};if out[98]!=14095||out[99]!=14111{same=0};if out[100]!=14096||out[101]!=14098{same=0};if out[102]!=14098||out[103]!=14108{same=0};sa_check(same==1,"actual component13862 exact endpoint identity",ctr);
18
19 out[0]=991;out[1]=992;sa_check(nsa_component_boundary_v1(b,n,13411,labels,nv,work,nt*3,0 as *i64,0)==48&&out[0]==991,"measure returns required edges without output",ctr);
20 sa_check(nsa_component_boundary_v1(b,n,13411,labels,nv,work,nt*3,out,95)==NSA_E_INPUT&&out[0]==991&&out[1]==992,"one word short output refuses before write",ctr);
21 sa_check(nsa_component_boundary_v1(b,n,-1,labels,nv,work,nt*3,out,96)==NSA_E_INPUT&&out[0]==991,"negative seed refuses",ctr);
22 sa_check(nsa_component_boundary_v1(b,n,nv,labels,nv,work,nt*3,out,96)==NSA_E_INPUT&&out[0]==991,"one past seed refuses",ctr);
23 sa_check(nsa_component_boundary_v1(b,n,13411,labels,nv-1,work,nt*3,out,96)==NSA_E_INPUT&&out[0]==991,"short label storage refuses",ctr);
24 sa_check(nsa_component_boundary_v1(b,n,13411,labels,nv,work,nt*3-1,out,96)==NSA_E_INPUT&&out[0]==991,"short sort workspace refuses",ctr);
25 sa_check(nsa_component_boundary_v1(b,n,13411,labels,nv,work,nt*3,labels,96)==NSA_E_INPUT,"output-label alias refuses",ctr);
26 sa_check(nsa_component_boundary_v1(b,n,13411,labels,nv,work,nt*3,work,96)==NSA_E_INPUT,"output-sort alias refuses",ctr);
27 sa_check(nsa_component_boundary_v1(b,n,13411,labels,nv,labels,nt*3,out,96)==NSA_E_INPUT,"label-sort alias refuses",ctr);
28 sa_check(nsa_component_boundary_v1(b,n,13411,labels,nv,work,nt*3,b as *i64,96)==NSA_E_INPUT,"source output alias refuses",ctr);
29 sa_check(nsa_component_boundary_v1(b,n,13411,labels,nv,work,nt*3,out,0)==NSA_E_INPUT,"non-null zero-capacity output refuses",ctr);
30 sa_put("BOUNDARY-GATE total=");sa_num(ctr[0]);sa_put(" fail=");sa_num(ctr[1]);sa_put("\n");if ctr[1]!=0{return 1};return 0
31}