npc_test_checkweight.txt 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. //===== rAthena Script =======================================
  2. //= Sample: CheckWeight
  3. //===== By: ==================================================
  4. //= rAthena Dev Team
  5. //===== Last Updated: ========================================
  6. //= 20121113
  7. //===== Description: =========================================
  8. //= Demonstrates 'checkweight' command.
  9. //============================================================
  10. prontera,161,181,6 script ChkSpace 763,{
  11. function ChkResult;
  12. function FinalReport;
  13. L_RESET:
  14. resetlvl(1);
  15. getinventorylist;
  16. for(set .@i,0; .@i < @inventorylist_count; set .@i,.@i+1){
  17. delitem(@inventorylist_id[.@i],@inventorylist_amount[.@i]); //clear inventory
  18. }
  19. L_TEST1: //basic backward chk
  20. .@testid = 0;
  21. .@succes = 0;
  22. .@ret = checkweight(512,10);
  23. set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success
  24. .@ret = checkweight("Apple",10);
  25. set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success
  26. .@ret = checkweight(6320,33000);
  27. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure too many item amount item weight=0
  28. .@ret = checkweight("Premium_Reset_Stone",33000);
  29. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure too many item amount
  30. .@ret = checkweight(717,500);
  31. set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success weight based on max weight=2030
  32. .@ret = checkweight(717,1000);
  33. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure weight based on max weight=2030
  34. .@ret = checkweight(2794,100);
  35. set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success
  36. .@ret = checkweight(2794,101);
  37. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure (with MAX_INVENTORY = 100)
  38. .@ret = checkweight(-1,1);
  39. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure invalide item id
  40. .@ret = checkweight(512,0);
  41. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure invalide amount
  42. debugmes "End backward test";
  43. FinalReport(.@testid,.@succes);
  44. L_TEST2: //update using list test
  45. .@testid = 0;
  46. .@succes = 0;
  47. .@ret = checkweight(512,10,513,10);
  48. set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success
  49. .@ret = checkweight("Apple",10,"Banana",10);
  50. set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success
  51. .@ret = checkweight(512,80,513,33000);
  52. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure
  53. .@ret = checkweight("Apple",80,"Banana",33000);
  54. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure too many item amount
  55. .@ret = checkweight("Apple",10,"Banana",21,512);
  56. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure invalid nb of args
  57. .@ret = checkweight(717,500,716,100);
  58. set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be succes weight 1800/2030
  59. .@ret = checkweight(717,500,716,500);
  60. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure weight 3000/2030
  61. .@ret = checkweight(2794,95,2795,5);
  62. set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success
  63. .@ret = checkweight(2794,95,2795,10);
  64. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure (with MAX_INVENTORY = 100)
  65. .@ret = checkweight(512,1,-1,1);
  66. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure invalide item id
  67. .@ret = checkweight(512,1,513,0);
  68. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure invalide amount
  69. .@ret = checkweight(6320,31000,6320,2000);
  70. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure overamount inventory
  71. .@ret = checkweight(512,1,513,1,514,1,515,1);
  72. set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be sucess
  73. debugmes "End update by list tests";
  74. FinalReport(.@testid,.@succes);
  75. L_TEST3: //update using array tests
  76. .@testid = 0;
  77. .@succes = 0;
  78. setarray .@item[0], 512,513,514,515;
  79. setarray .@count[0], 1,5,9,12;
  80. .@ret = checkweight2(.@item,.@count);
  81. set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be sucess
  82. cleararray .@item[0], 0, 4;
  83. cleararray .@count[0], 0, 4;
  84. setarray .@item[0], 512,513,514,515;
  85. setarray .@count[0], 1,5,-1,12;
  86. .@ret = checkweight2(.@item,.@count);
  87. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure, invalide amout
  88. cleararray .@item[0], 0, 4;
  89. cleararray .@count[0], 0, 4;
  90. setarray .@item[0], 512,513,514,-1;
  91. setarray .@count[0], 1,5,15,12;
  92. .@ret = checkweight2(.@item,.@count);
  93. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure, invalide id
  94. cleararray .@item[0], 0, 4;
  95. cleararray .@count[0], 0, 4;
  96. setarray .@item[0], 717,715,716,714;
  97. setarray .@count[0], 300,300,300,300;
  98. .@ret = checkweight2(.@item,.@count);
  99. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure, total by weight
  100. cleararray .@item[0], 0, 4;
  101. cleararray .@count[0], 0, 4;
  102. setarray .@item[0], 6320,6320;
  103. setarray .@count[0], 31000,2000;
  104. .@ret = checkweight2(.@item,.@count);
  105. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure, total by weight
  106. cleararray .@item[0], 0, 2;
  107. cleararray .@count[0], 0, 2;
  108. setarray .@item[0], 2794,2795;
  109. setarray .@count[0], 95,5;
  110. .@ret = checkweight2(.@item,.@count);
  111. set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success
  112. setarray .@count[0], 95,10;
  113. .@ret = checkweight2(.@item,.@count);
  114. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure overamount item
  115. cleararray .@item[0], 0, 2;
  116. cleararray .@count[0], 0, 2;
  117. setarray .@item[0], 6320,6320,512;
  118. setarray .@count[0], 1,3;
  119. .@ret = checkweight2(.@item,.@count);
  120. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure, size mistmatch
  121. cleararray .@item[0], 0, 3;
  122. cleararray .@count[0], 0, 2;
  123. setarray .@item[0], 6320,6320;
  124. setarray .@count[0], 1,3,5;
  125. .@ret = checkweight2(.@item,.@count);
  126. set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure, size mistmatch
  127. debugmes "End update by array tests";
  128. FinalReport(.@testid,.@succes);
  129. L_FINAL:
  130. end;
  131. function ChkResult {
  132. .@tid = getarg(0);
  133. .@expected = getarg(1);
  134. .@ret = getarg(2);
  135. .@sucess = (.@ret==.@expected);
  136. debugmes "Test "+.@tid+" = "+(.@sucess?"Sucess":"Fail");
  137. return .@sucess;
  138. }
  139. function FinalReport {
  140. .@tdone = getarg(0);
  141. .@succes = getarg(1);
  142. debugmes "Results = Pass : "+.@succes+"/"+.@tdone+" Fails : "+(.@tdone-.@succes)+"/"+.@tdone;
  143. if(.@succes != .@tdone) { debugmes "Some failure as occured, enable chkresult print to found out"; }
  144. return;
  145. }
  146. }