test_tools.sh 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. #!/usr/bin/env bash
  2. # Copyright (c) 2008-2023 the Urho3D project
  3. # License: MIT
  4. if [[ $# != 2 ]]
  5. then
  6. echo "Usage: test_tools.sh repo_dir build_dir"
  7. exit 1
  8. fi
  9. repo_dir=$1
  10. build_dir=$2
  11. # Remove trailing slash in Unix and Windows
  12. repo_dir=${repo_dir%/}
  13. repo_dir=${repo_dir%\\}
  14. build_dir=${build_dir%/}
  15. build_dir=${build_dir%\\}
  16. # ================== OgreImporter ==================
  17. src_filenames=(
  18. Jack.mesh.xml
  19. Level.mesh.xml
  20. Mushroom.mesh.xml
  21. Ninja.mesh.xml
  22. Potion.mesh.xml
  23. SnowBall.mesh.xml
  24. SnowCrate.mesh.xml
  25. )
  26. result_filenames=(
  27. Jack_Walk.ani
  28. Ninja_Attack1.ani
  29. Ninja_Attack2.ani
  30. Ninja_Attack3.ani
  31. Ninja_Backflip.ani
  32. Ninja_Block.ani
  33. Ninja_Climb.ani
  34. Ninja_Crouch.ani
  35. Ninja_Death1.ani
  36. Ninja_Death2.ani
  37. Ninja_HighJump.ani
  38. Ninja_Idle1.ani
  39. Ninja_Idle2.ani
  40. Ninja_Idle3.ani
  41. Ninja_Jump.ani
  42. Ninja_JumpNoHeight.ani
  43. Ninja_Kick.ani
  44. Ninja_SideKick.ani
  45. Ninja_Spin.ani
  46. Ninja_Stealth.ani
  47. Ninja_Walk.ani
  48. Jack.mdl
  49. Level.mdl
  50. Mushroom.mdl
  51. Ninja.mdl
  52. Potion.mdl
  53. SnowBall.mdl
  54. SnowCrate.mdl
  55. )
  56. # This is not used because the result is compiler dependent.
  57. # Perhaps this is due to the calculation error when using float
  58. result_checksums=(
  59. a07f69d23b84b0039d7e9159a494d7c5a587ae6d # Jack_Walk.ani
  60. 5abfe9cee41a2d8c4d8af8af5baf879fc6ab36cb # Ninja_Attack1.ani
  61. f73548094148f9d18d6a93b66eac647db50672eb # Ninja_Attack2.ani
  62. 0549824bcbf73ebaff17964ba81ae2ca813ad684 # Ninja_Attack3.ani
  63. a2aab4ad61b9de9038135abf9b1e459e17d6bb20 # Ninja_Backflip.ani
  64. dec34fb0ec43f6fca8037328fc0dc8bd1e55d30d # Ninja_Block.ani
  65. ae20b728ca1f2776ab6bb66ab4855f56710e8d14 # Ninja_Climb.ani
  66. 8f21ea4e1f999167a2b82a575c15de614f576a0f # Ninja_Crouch.ani
  67. b3314a675d1a41f97f818f06b562e20ab072de5a # Ninja_Death1.ani
  68. e3dd6aa2fb9b585180e3772b7c598828d935bf15 # Ninja_Death2.ani
  69. ff6766e3d55855a240fc35ccf7395a6517911c99 # Ninja_HighJump.ani
  70. d565fea93087a60df836637aad7f9c8184c28c6a # Ninja_Idle1.ani
  71. 065f7d89e032c18dedeae0b64975984ec80d3557 # Ninja_Idle2.ani
  72. 00b4d893b3cffbf58db4fb7f0e970990accb1155 # Ninja_Idle3.ani
  73. bad0c363ec9cf9283ca08b8ca44a86dc09068603 # Ninja_Jump.ani
  74. e55e9a21e635eb8a31b708fa009e9aca06ea9e7d # Ninja_JumpNoHeight.ani
  75. 82fcc8eda8929809fd771805466b8e287af3a3c7 # Ninja_Kick.ani
  76. b09e8cc6e0fb58786c21184bcc0aa8dcd4b51b57 # Ninja_SideKick.ani
  77. 63683537161f7352684bc50a44b753b5f9691af3 # Ninja_Spin.ani
  78. 801383ba0ad30d4a0d401a69af5ca88bf5c6b39f # Ninja_Stealth.ani
  79. 608a91452ff6980ef34ca68c4fd688fd719592c2 # Ninja_Walk.ani
  80. c8b032146ccde40058af94d5578e61345f6fb648 # Jack.mdl
  81. cde0671fced710d666f15cd941c9f385359a45e9 # Level.mdl
  82. 39afeecb472b8be081fddb59419db595ccae2105 # Mushroom.mdl
  83. ef5b6c831566f45cef0c7652fe16a7eec7f57f4c # Ninja.mdl
  84. 351044e86480d7ab0ee5bac2f557f800e6770925 # Potion.mdl
  85. 4c3c7b1c47f62c5c0a99e1f33bd20463a64d6b93 # SnowBall.mdl
  86. 110a90536d58e0a57ef6070b2b372341cb97bdaa # SnowCrate.mdl
  87. )
  88. result_sizes=(
  89. 56410 # Jack_Walk.ani
  90. 2916 # Ninja_Attack1.ani
  91. 2788 # Ninja_Attack2.ani
  92. 2628 # Ninja_Attack3.ani
  93. 3141 # Ninja_Backflip.ani
  94. 1186 # Ninja_Block.ani
  95. 2466 # Ninja_Climb.ani
  96. 4003 # Ninja_Crouch.ani
  97. 2307 # Ninja_Death1.ani
  98. 2723 # Ninja_Death2.ani
  99. 5541 # Ninja_HighJump.ani
  100. 3682 # Ninja_Idle1.ani
  101. 2434 # Ninja_Idle2.ani
  102. 2658 # Ninja_Idle3.ani
  103. 2785 # Ninja_Jump.ani
  104. 2857 # Ninja_JumpNoHeight.ani
  105. 3745 # Ninja_Kick.ani
  106. 2885 # Ninja_SideKick.ani
  107. 2625 # Ninja_Spin.ani
  108. 2244 # Ninja_Stealth.ani
  109. 3201 # Ninja_Walk.ani
  110. 433684 # Jack.mdl
  111. 26100 # Level.mdl
  112. 74196 # Mushroom.mdl
  113. 66895 # Ninja.mdl
  114. 7092 # Potion.mdl
  115. 2484 # SnowBall.mdl
  116. 11724 # SnowCrate.mdl
  117. )
  118. # Convert models
  119. for (( i = 0; i < ${#src_filenames[*]}; ++i ))
  120. do
  121. src_filepath=${repo_dir}/SourceAssets/${src_filenames[$i]}
  122. # Replace extension from .mesh.xml to .mdl
  123. output_filename=${src_filenames[$i]%.mesh.xml}.mdl
  124. ${build_dir}/bin/tool/OgreImporter $src_filepath $output_filename -t
  125. # Check exit code of the previous command
  126. if [[ $? != 0 ]]
  127. then
  128. exit 1
  129. fi
  130. done
  131. # Compare checksums
  132. #for (( i = 0; i < ${#result_filenames[*]}; ++i ))
  133. #do
  134. # checksum=$(sha1sum ${result_filenames[$i]})
  135. #
  136. # # Check exit code of the previous command
  137. # if [[ $? != 0 ]]
  138. # then
  139. # exit 1
  140. # fi
  141. #
  142. # # Extract checksum from string
  143. # checksum=$(echo $checksum | awk '{print $1}')
  144. #
  145. # if [[ $checksum != ${result_checksums[$i]} ]]
  146. # then
  147. # echo "${result_filenames[$i]}: incorrect checksum"
  148. # exit 1
  149. # fi
  150. #done
  151. # Check sizes instead checksums
  152. for (( i = 0; i < ${#result_filenames[*]}; ++i ))
  153. do
  154. # This works on any platform
  155. file_size=$(wc -c ${result_filenames[$i]})
  156. # Check exit code of the previous command
  157. if [[ $? != 0 ]]
  158. then
  159. exit 1
  160. fi
  161. # Extract size from string
  162. file_size=$(echo $file_size | awk '{print $1}')
  163. if [[ $file_size != ${result_sizes[$i]} ]]
  164. then
  165. echo "${result_filenames[$i]}: incorrect size"
  166. exit 1
  167. fi
  168. done
  169. # ================== AssetImporter ==================
  170. src_filenames=(
  171. TeaPot.blend
  172. Box.blend
  173. )
  174. result_filenames=(
  175. #Materials/Default.xml # Is rewritten by default.xml on Windows
  176. Materials/default.xml
  177. Materials/DefaultMaterial.xml
  178. Box.mdl
  179. TeaPot.mdl
  180. )
  181. result_sizes=(
  182. #256 # Materials/Default.xml
  183. 306 # Materials/default.xml
  184. 261 # Materials/DefaultMaterial.xml
  185. 1456 # Box.mdl
  186. 494912 # TeaPot.mdl
  187. )
  188. # Convert models
  189. for (( i = 0; i < ${#src_filenames[*]}; ++i ))
  190. do
  191. src_filepath=${repo_dir}/SourceAssets/${src_filenames[$i]}
  192. # Replace extension from .blend to .mdl
  193. output_filename=${src_filenames[$i]%.blend}.mdl
  194. ${build_dir}/bin/tool/AssetImporter model $src_filepath $output_filename -t
  195. # Check exit code of the previous command
  196. if [[ $? != 0 ]]
  197. then
  198. exit 1
  199. fi
  200. done
  201. # Check sizes instead checksums
  202. for (( i = 0; i < ${#result_filenames[*]}; ++i ))
  203. do
  204. # This works on any platform
  205. file_size=$(wc -c ${result_filenames[$i]})
  206. # Check exit code of the previous command
  207. if [[ $? != 0 ]]
  208. then
  209. exit 1
  210. fi
  211. # Extract size from string
  212. file_size=$(echo $file_size | awk '{print $1}')
  213. if [[ $file_size != ${result_sizes[$i]} ]]
  214. then
  215. echo "${result_filenames[$i]}: incorrect size"
  216. exit 1
  217. fi
  218. done
  219. # vi: set ts=4 sw=4 expandtab: