sprites 0.0.1.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. data/.gitignore +12 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +12 -0
  4. data/Rakefile +41 -0
  5. data/bin/sprites +18 -0
  6. data/features/cli.feature +11 -0
  7. data/features/step_definitions/common_steps.rb +36 -0
  8. data/features/support/env.rb +5 -0
  9. data/lib/sprites/application.rb +44 -0
  10. data/lib/sprites/cli/cli_application.rb +11 -0
  11. data/lib/sprites/cli/command_line_option_parser.rb +70 -0
  12. data/lib/sprites/cli.rb +4 -0
  13. data/lib/sprites/configuration.rb +59 -0
  14. data/lib/sprites/core_ext/pathname.rb +7 -0
  15. data/lib/sprites/notifier.rb +9 -0
  16. data/lib/sprites/sprite.rb +127 -0
  17. data/lib/sprites/sprite_generators/chunky_png_generator.rb +114 -0
  18. data/lib/sprites/sprite_piece.rb +36 -0
  19. data/lib/sprites/sprite_pieces.rb +47 -0
  20. data/lib/sprites/sprites.rb +61 -0
  21. data/lib/sprites/stylesheet.rb +22 -0
  22. data/lib/sprites/test/sprite_generator_tester.rb +78 -0
  23. data/lib/sprites/version.rb +3 -0
  24. data/lib/sprites.rb +24 -0
  25. data/spec/fixtures/known_good/sprite_images/buttons/.DS_Store +0 -0
  26. data/spec/fixtures/known_good/sprite_images/buttons/btn-black-default-28.png +0 -0
  27. data/spec/fixtures/known_good/sprite_images/buttons/btn-black-default-cap-28.png +0 -0
  28. data/spec/fixtures/known_good/sprite_images/buttons/btn-black-default-cap-long.png +0 -0
  29. data/spec/fixtures/known_good/sprite_images/buttons/btn-black-default.png +0 -0
  30. data/spec/fixtures/known_good/sprite_images/buttons/btn-black-onclick-28.png +0 -0
  31. data/spec/fixtures/known_good/sprite_images/buttons/btn-black-onclick-cap-28.png +0 -0
  32. data/spec/fixtures/known_good/sprite_images/buttons/btn-black-onclick-cap-long.png +0 -0
  33. data/spec/fixtures/known_good/sprite_images/buttons/btn-black-onclick.png +0 -0
  34. data/spec/fixtures/known_good/sprite_images/buttons/btn-black-rollover-28.png +0 -0
  35. data/spec/fixtures/known_good/sprite_images/buttons/btn-black-rollover-cap-28.png +0 -0
  36. data/spec/fixtures/known_good/sprite_images/buttons/btn-black-rollover-cap-long.png +0 -0
  37. data/spec/fixtures/known_good/sprite_images/buttons/btn-black-rollover.png +0 -0
  38. data/spec/fixtures/known_good/sprite_images/buttons/btn-blackarrow-default.png +0 -0
  39. data/spec/fixtures/known_good/sprite_images/buttons/btn-blackarrow-onclick.png +0 -0
  40. data/spec/fixtures/known_good/sprite_images/buttons/btn-blackarrow-rollover.png +0 -0
  41. data/spec/fixtures/known_good/sprite_images/buttons/btn-blue-default-cap.png +0 -0
  42. data/spec/fixtures/known_good/sprite_images/buttons/btn-blue-default-drop.png +0 -0
  43. data/spec/fixtures/known_good/sprite_images/buttons/btn-blue-default-edge.png +0 -0
  44. data/spec/fixtures/known_good/sprite_images/buttons/btn-blue-default.png +0 -0
  45. data/spec/fixtures/known_good/sprite_images/buttons/btn-blue-onclick-cap.png +0 -0
  46. data/spec/fixtures/known_good/sprite_images/buttons/btn-blue-onclick-drop.png +0 -0
  47. data/spec/fixtures/known_good/sprite_images/buttons/btn-blue-onclick-edge.png +0 -0
  48. data/spec/fixtures/known_good/sprite_images/buttons/btn-blue-onclick.png +0 -0
  49. data/spec/fixtures/known_good/sprite_images/buttons/btn-blue-rollover-cap.png +0 -0
  50. data/spec/fixtures/known_good/sprite_images/buttons/btn-blue-rollover-drop.png +0 -0
  51. data/spec/fixtures/known_good/sprite_images/buttons/btn-blue-rollover-edge.png +0 -0
  52. data/spec/fixtures/known_good/sprite_images/buttons/btn-blue-rollover.png +0 -0
  53. data/spec/fixtures/known_good/sprite_images/buttons/btn-green-default-cap.png +0 -0
  54. data/spec/fixtures/known_good/sprite_images/buttons/btn-green-default-drop.png +0 -0
  55. data/spec/fixtures/known_good/sprite_images/buttons/btn-green-default-edge.png +0 -0
  56. data/spec/fixtures/known_good/sprite_images/buttons/btn-green-default.png +0 -0
  57. data/spec/fixtures/known_good/sprite_images/buttons/btn-green-onclick-cap.png +0 -0
  58. data/spec/fixtures/known_good/sprite_images/buttons/btn-green-onclick-drop.png +0 -0
  59. data/spec/fixtures/known_good/sprite_images/buttons/btn-green-onclick-edge.png +0 -0
  60. data/spec/fixtures/known_good/sprite_images/buttons/btn-green-onclick.png +0 -0
  61. data/spec/fixtures/known_good/sprite_images/buttons/btn-green-rollover-cap.png +0 -0
  62. data/spec/fixtures/known_good/sprite_images/buttons/btn-green-rollover-drop.png +0 -0
  63. data/spec/fixtures/known_good/sprite_images/buttons/btn-green-rollover-edge.png +0 -0
  64. data/spec/fixtures/known_good/sprite_images/buttons/btn-green-rollover.png +0 -0
  65. data/spec/fixtures/known_good/sprite_images/buttons/btn-red-default-cap.png +0 -0
  66. data/spec/fixtures/known_good/sprite_images/buttons/btn-red-default-drop.png +0 -0
  67. data/spec/fixtures/known_good/sprite_images/buttons/btn-red-default-edge.png +0 -0
  68. data/spec/fixtures/known_good/sprite_images/buttons/btn-red-default.png +0 -0
  69. data/spec/fixtures/known_good/sprite_images/buttons/btn-red-onclick-cap.png +0 -0
  70. data/spec/fixtures/known_good/sprite_images/buttons/btn-red-onclick-drop.png +0 -0
  71. data/spec/fixtures/known_good/sprite_images/buttons/btn-red-onclick-edge.png +0 -0
  72. data/spec/fixtures/known_good/sprite_images/buttons/btn-red-onclick.png +0 -0
  73. data/spec/fixtures/known_good/sprite_images/buttons/btn-red-rollover-cap.png +0 -0
  74. data/spec/fixtures/known_good/sprite_images/buttons/btn-red-rollover-drop.png +0 -0
  75. data/spec/fixtures/known_good/sprite_images/buttons/btn-red-rollover-edge.png +0 -0
  76. data/spec/fixtures/known_good/sprite_images/buttons/btn-red-rollover.png +0 -0
  77. data/spec/fixtures/known_good/sprite_images/buttons/btn-trans-default-cap.png +0 -0
  78. data/spec/fixtures/known_good/sprite_images/buttons/btn-trans-default-drop.png +0 -0
  79. data/spec/fixtures/known_good/sprite_images/buttons/btn-trans-default-edge.png +0 -0
  80. data/spec/fixtures/known_good/sprite_images/buttons/btn-trans-default.png +0 -0
  81. data/spec/fixtures/known_good/sprite_images/buttons/btn-trans-onclick-cap.png +0 -0
  82. data/spec/fixtures/known_good/sprite_images/buttons/btn-trans-onclick-drop.png +0 -0
  83. data/spec/fixtures/known_good/sprite_images/buttons/btn-trans-onclick-edge.png +0 -0
  84. data/spec/fixtures/known_good/sprite_images/buttons/btn-trans-onclick.png +0 -0
  85. data/spec/fixtures/known_good/sprite_images/buttons/btn-trans-rollover-cap.png +0 -0
  86. data/spec/fixtures/known_good/sprite_images/buttons/btn-trans-rollover-drop.png +0 -0
  87. data/spec/fixtures/known_good/sprite_images/buttons/btn-trans-rollover-edge.png +0 -0
  88. data/spec/fixtures/known_good/sprite_images/buttons/btn-trans-rollover.png +0 -0
  89. data/spec/fixtures/known_good/sprite_images/buttons/btn-white-default-cap.png +0 -0
  90. data/spec/fixtures/known_good/sprite_images/buttons/btn-white-default-drop.png +0 -0
  91. data/spec/fixtures/known_good/sprite_images/buttons/btn-white-default-edge.png +0 -0
  92. data/spec/fixtures/known_good/sprite_images/buttons/btn-white-default.png +0 -0
  93. data/spec/fixtures/known_good/sprite_images/buttons/btn-white-onclick-cap.png +0 -0
  94. data/spec/fixtures/known_good/sprite_images/buttons/btn-white-onclick-drop.png +0 -0
  95. data/spec/fixtures/known_good/sprite_images/buttons/btn-white-onclick-edge.png +0 -0
  96. data/spec/fixtures/known_good/sprite_images/buttons/btn-white-onclick.png +0 -0
  97. data/spec/fixtures/known_good/sprite_images/buttons/btn-white-rollover-cap.png +0 -0
  98. data/spec/fixtures/known_good/sprite_images/buttons/btn-white-rollover-drop.png +0 -0
  99. data/spec/fixtures/known_good/sprite_images/buttons/btn-white-rollover-edge.png +0 -0
  100. data/spec/fixtures/known_good/sprite_images/buttons/btn-white-rollover.png +0 -0
  101. data/spec/fixtures/known_good/sprite_images/buttons/btn-yellow-default-cap.png +0 -0
  102. data/spec/fixtures/known_good/sprite_images/buttons/btn-yellow-default-drop.png +0 -0
  103. data/spec/fixtures/known_good/sprite_images/buttons/btn-yellow-default-edge.png +0 -0
  104. data/spec/fixtures/known_good/sprite_images/buttons/btn-yellow-default.png +0 -0
  105. data/spec/fixtures/known_good/sprite_images/buttons/btn-yellow-onclick-cap.png +0 -0
  106. data/spec/fixtures/known_good/sprite_images/buttons/btn-yellow-onclick-drop.png +0 -0
  107. data/spec/fixtures/known_good/sprite_images/buttons/btn-yellow-onclick-edge.png +0 -0
  108. data/spec/fixtures/known_good/sprite_images/buttons/btn-yellow-onclick.png +0 -0
  109. data/spec/fixtures/known_good/sprite_images/buttons/btn-yellow-rollover-cap.png +0 -0
  110. data/spec/fixtures/known_good/sprite_images/buttons/btn-yellow-rollover-drop.png +0 -0
  111. data/spec/fixtures/known_good/sprite_images/buttons/btn-yellow-rollover-edge.png +0 -0
  112. data/spec/fixtures/known_good/sprite_images/buttons/btn-yellow-rollover.png +0 -0
  113. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-black-default-28.png +0 -0
  114. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-black-default-cap-28.png +0 -0
  115. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-black-onclick-28.png +0 -0
  116. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-black-onclick-cap-28.png +0 -0
  117. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-black-rollover-28.png +0 -0
  118. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-black-rollover-cap-28.png +0 -0
  119. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-blue-default-cap.png +0 -0
  120. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-blue-default.png +0 -0
  121. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-blue-onclick-cap.png +0 -0
  122. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-blue-onclick.png +0 -0
  123. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-blue-rollover-cap.png +0 -0
  124. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-blue-rollover.png +0 -0
  125. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-green-default-cap.png +0 -0
  126. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-green-default-drop.png +0 -0
  127. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-green-default-edge.png +0 -0
  128. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-green-default.png +0 -0
  129. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-green-onclick-cap.png +0 -0
  130. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-green-onclick-drop.png +0 -0
  131. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-green-onclick-edge.png +0 -0
  132. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-green-onclick.png +0 -0
  133. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-green-rollover-cap.png +0 -0
  134. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-green-rollover-drop.png +0 -0
  135. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-green-rollover-edge.png +0 -0
  136. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-green-rollover.png +0 -0
  137. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-red-default-cap.png +0 -0
  138. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-red-default.png +0 -0
  139. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-red-onclick-cap.png +0 -0
  140. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-red-onclick.png +0 -0
  141. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-red-rollover-cap.png +0 -0
  142. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-red-rollover.png +0 -0
  143. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-trans-default-cap.png +0 -0
  144. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-trans-default-drop.png +0 -0
  145. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-trans-default-edge.png +0 -0
  146. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-trans-default.png +0 -0
  147. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-trans-onclick-cap.png +0 -0
  148. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-trans-onclick-drop.png +0 -0
  149. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-trans-onclick-edge.png +0 -0
  150. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-trans-onclick.png +0 -0
  151. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-trans-rollover-cap.png +0 -0
  152. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-trans-rollover-drop.png +0 -0
  153. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-trans-rollover-edge.png +0 -0
  154. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-trans-rollover.png +0 -0
  155. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-white-default-cap.png +0 -0
  156. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-white-default.png +0 -0
  157. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-white-onclick-cap.png +0 -0
  158. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-white-onclick.png +0 -0
  159. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-white-rollover-cap.png +0 -0
  160. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-white-rollover.png +0 -0
  161. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-yellow-default-cap.png +0 -0
  162. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-yellow-default.png +0 -0
  163. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-yellow-onclick-cap.png +0 -0
  164. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-yellow-onclick.png +0 -0
  165. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-yellow-rollover-cap.png +0 -0
  166. data/spec/fixtures/known_good/sprite_images/buttons/dark_background/btn-yellow-rollover.png +0 -0
  167. data/spec/fixtures/known_good/sprites/buttons.png +0 -0
  168. data/spec/fixtures/known_good/stylesheets/buttons.css +1127 -0
  169. data/spec/fixtures/project1/config/sprites.rb +145 -0
  170. data/spec/fixtures/project1/public/images/sprite_images/buttons/.DS_Store +0 -0
  171. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-black-default-28.png +0 -0
  172. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-black-default-cap-28.png +0 -0
  173. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-black-default-cap-long.png +0 -0
  174. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-black-default.png +0 -0
  175. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-black-onclick-28.png +0 -0
  176. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-black-onclick-cap-28.png +0 -0
  177. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-black-onclick-cap-long.png +0 -0
  178. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-black-onclick.png +0 -0
  179. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-black-rollover-28.png +0 -0
  180. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-black-rollover-cap-28.png +0 -0
  181. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-black-rollover-cap-long.png +0 -0
  182. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-black-rollover.png +0 -0
  183. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blackarrow-default.png +0 -0
  184. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blackarrow-onclick.png +0 -0
  185. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blackarrow-rollover.png +0 -0
  186. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blue-default-cap.png +0 -0
  187. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blue-default-drop.png +0 -0
  188. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blue-default-edge.png +0 -0
  189. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blue-default.png +0 -0
  190. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blue-onclick-cap.png +0 -0
  191. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blue-onclick-drop.png +0 -0
  192. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blue-onclick-edge.png +0 -0
  193. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blue-onclick.png +0 -0
  194. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blue-rollover-cap.png +0 -0
  195. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blue-rollover-drop.png +0 -0
  196. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blue-rollover-edge.png +0 -0
  197. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-blue-rollover.png +0 -0
  198. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-green-default-cap.png +0 -0
  199. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-green-default-drop.png +0 -0
  200. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-green-default-edge.png +0 -0
  201. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-green-default.png +0 -0
  202. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-green-onclick-cap.png +0 -0
  203. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-green-onclick-drop.png +0 -0
  204. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-green-onclick-edge.png +0 -0
  205. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-green-onclick.png +0 -0
  206. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-green-rollover-cap.png +0 -0
  207. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-green-rollover-drop.png +0 -0
  208. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-green-rollover-edge.png +0 -0
  209. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-green-rollover.png +0 -0
  210. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-red-default-cap.png +0 -0
  211. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-red-default-drop.png +0 -0
  212. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-red-default-edge.png +0 -0
  213. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-red-default.png +0 -0
  214. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-red-onclick-cap.png +0 -0
  215. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-red-onclick-drop.png +0 -0
  216. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-red-onclick-edge.png +0 -0
  217. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-red-onclick.png +0 -0
  218. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-red-rollover-cap.png +0 -0
  219. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-red-rollover-drop.png +0 -0
  220. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-red-rollover-edge.png +0 -0
  221. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-red-rollover.png +0 -0
  222. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-trans-default-cap.png +0 -0
  223. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-trans-default-drop.png +0 -0
  224. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-trans-default-edge.png +0 -0
  225. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-trans-default.png +0 -0
  226. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-trans-onclick-cap.png +0 -0
  227. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-trans-onclick-drop.png +0 -0
  228. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-trans-onclick-edge.png +0 -0
  229. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-trans-onclick.png +0 -0
  230. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-trans-rollover-cap.png +0 -0
  231. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-trans-rollover-drop.png +0 -0
  232. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-trans-rollover-edge.png +0 -0
  233. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-trans-rollover.png +0 -0
  234. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-white-default-cap.png +0 -0
  235. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-white-default-drop.png +0 -0
  236. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-white-default-edge.png +0 -0
  237. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-white-default.png +0 -0
  238. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-white-onclick-cap.png +0 -0
  239. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-white-onclick-drop.png +0 -0
  240. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-white-onclick-edge.png +0 -0
  241. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-white-onclick.png +0 -0
  242. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-white-rollover-cap.png +0 -0
  243. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-white-rollover-drop.png +0 -0
  244. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-white-rollover-edge.png +0 -0
  245. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-white-rollover.png +0 -0
  246. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-yellow-default-cap.png +0 -0
  247. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-yellow-default-drop.png +0 -0
  248. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-yellow-default-edge.png +0 -0
  249. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-yellow-default.png +0 -0
  250. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-yellow-onclick-cap.png +0 -0
  251. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-yellow-onclick-drop.png +0 -0
  252. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-yellow-onclick-edge.png +0 -0
  253. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-yellow-onclick.png +0 -0
  254. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-yellow-rollover-cap.png +0 -0
  255. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-yellow-rollover-drop.png +0 -0
  256. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-yellow-rollover-edge.png +0 -0
  257. data/spec/fixtures/project1/public/images/sprite_images/buttons/btn-yellow-rollover.png +0 -0
  258. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-black-default-28.png +0 -0
  259. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-black-default-cap-28.png +0 -0
  260. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-black-onclick-28.png +0 -0
  261. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-black-onclick-cap-28.png +0 -0
  262. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-black-rollover-28.png +0 -0
  263. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-black-rollover-cap-28.png +0 -0
  264. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-blue-default-cap.png +0 -0
  265. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-blue-default.png +0 -0
  266. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-blue-onclick-cap.png +0 -0
  267. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-blue-onclick.png +0 -0
  268. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-blue-rollover-cap.png +0 -0
  269. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-blue-rollover.png +0 -0
  270. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-green-default-cap.png +0 -0
  271. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-green-default-drop.png +0 -0
  272. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-green-default-edge.png +0 -0
  273. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-green-default.png +0 -0
  274. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-green-onclick-cap.png +0 -0
  275. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-green-onclick-drop.png +0 -0
  276. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-green-onclick-edge.png +0 -0
  277. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-green-onclick.png +0 -0
  278. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-green-rollover-cap.png +0 -0
  279. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-green-rollover-drop.png +0 -0
  280. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-green-rollover-edge.png +0 -0
  281. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-green-rollover.png +0 -0
  282. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-red-default-cap.png +0 -0
  283. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-red-default.png +0 -0
  284. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-red-onclick-cap.png +0 -0
  285. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-red-onclick.png +0 -0
  286. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-red-rollover-cap.png +0 -0
  287. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-red-rollover.png +0 -0
  288. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-trans-default-cap.png +0 -0
  289. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-trans-default-drop.png +0 -0
  290. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-trans-default-edge.png +0 -0
  291. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-trans-default.png +0 -0
  292. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-trans-onclick-cap.png +0 -0
  293. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-trans-onclick-drop.png +0 -0
  294. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-trans-onclick-edge.png +0 -0
  295. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-trans-onclick.png +0 -0
  296. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-trans-rollover-cap.png +0 -0
  297. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-trans-rollover-drop.png +0 -0
  298. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-trans-rollover-edge.png +0 -0
  299. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-trans-rollover.png +0 -0
  300. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-white-default-cap.png +0 -0
  301. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-white-default.png +0 -0
  302. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-white-onclick-cap.png +0 -0
  303. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-white-onclick.png +0 -0
  304. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-white-rollover-cap.png +0 -0
  305. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-white-rollover.png +0 -0
  306. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-yellow-default-cap.png +0 -0
  307. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-yellow-default.png +0 -0
  308. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-yellow-onclick-cap.png +0 -0
  309. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-yellow-onclick.png +0 -0
  310. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-yellow-rollover-cap.png +0 -0
  311. data/spec/fixtures/project1/public/images/sprite_images/buttons/dark_background/btn-yellow-rollover.png +0 -0
  312. data/spec/fixtures/sprite_images/foo/foo.png +0 -0
  313. data/spec/lib/sprites/application_spec.rb +60 -0
  314. data/spec/lib/sprites/cli/command_line_option_parser_spec.rb +5 -0
  315. data/spec/lib/sprites/configuration_spec.rb +52 -0
  316. data/spec/lib/sprites/core_ext/pathname_spec.rb +4 -0
  317. data/spec/lib/sprites/notifier_spec.rb +5 -0
  318. data/spec/lib/sprites/sprite_generators/chunky_png_generator_spec.rb +19 -0
  319. data/spec/lib/sprites/sprite_piece_spec.rb +41 -0
  320. data/spec/lib/sprites/sprite_pieces_spec.rb +32 -0
  321. data/spec/lib/sprites/sprite_spec.rb +146 -0
  322. data/spec/lib/sprites/sprites_spec.rb +100 -0
  323. data/spec/lib/sprites/stylesheet_spec.rb +25 -0
  324. data/spec/lib/sprites/test/sprite_generator_tester_spec.rb +17 -0
  325. data/spec/lib/sprites_spec.rb +19 -0
  326. data/spec/spec_helper.rb +12 -0
  327. data/spec/support/sprites_helper.rb +149 -0
  328. data/sprites.gemspec +29 -0
  329. metadata +802 -0
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe Application do
4
+ before do
5
+ @app = Application.new
6
+ end
7
+
8
+ context "#define" do
9
+ it 'should respond to define' do
10
+ @app.should respond_to(:define)
11
+ end
12
+
13
+ it 'should allow access to the api when defining a sprite with a symbol' do
14
+ @app.sprite(:foo) {}
15
+
16
+ @app.sprites[:foo].should be_a(Sprite)
17
+ @app.sprites[:foo].name.should be(:foo)
18
+ @app.sprites[:foo].path.to_s.should == "foo.png"
19
+ @app.sprites[:foo].stylesheet_path.should == "foo.css"
20
+ end
21
+
22
+ it 'should allow access to the api when defining a sprite with a hash' do
23
+ @app.sprite('sprites/foo.png' => 'sprites/foo.css') {}
24
+ @app.sprites[:foo].should be_a(Sprite)
25
+ @app.sprites[:foo].name.should be(:foo)
26
+ @app.sprites[:foo].path.to_s.should == "sprites/foo.png"
27
+ @app.sprites[:foo].stylesheet_path.should == "sprites/foo.css"
28
+ end
29
+
30
+
31
+ it 'should allow access to the api when defining a sprite with a string' do
32
+ @app.sprite('sprites/foo.png') {}
33
+
34
+ @app.sprites[:foo].should be_a(Sprite)
35
+ @app.sprites[:foo].name.should be(:foo)
36
+ @app.sprites[:foo].path.to_s.should == "sprites/foo.png"
37
+ @app.sprites[:foo].stylesheet_path.should == "sprites/foo.css"
38
+ end
39
+
40
+ end
41
+
42
+ context "#sprite" do
43
+ it 'should respond_to sprite' do
44
+ @app.should respond_to(:sprite)
45
+ end
46
+
47
+ it 'should add a sprite' do
48
+ @app.sprite(:foo) {}
49
+ @app.sprites.should_not be_empty
50
+ @app.sprites.count.should be(1)
51
+ @app.sprites[:foo].should be_a(Sprite)
52
+ end
53
+ end
54
+
55
+ context 'initialize' do
56
+ it 'should create the sprites adt' do
57
+ @app.sprites.should_not be_nil
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+ require 'sprites/cli'
3
+
4
+ describe CommandLineOptionParser do
5
+ end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+ require 'sprites/configuration'
3
+
4
+ describe Configuration do
5
+ let(:config) do
6
+ Configuration.new
7
+ end
8
+
9
+ context "#backend" do
10
+ it 'should be rmagick by default' do
11
+ config.backend.should be(:rmagick)
12
+ end
13
+
14
+ it 'should set the backend' do
15
+ config.backend(:mini_magick).backend.should == :mini_magick
16
+ end
17
+
18
+ it 'should coerse backend into a symbol' do
19
+ config.backend('mini_magick').backend.should == :mini_magick
20
+ end
21
+ end
22
+
23
+ context '#sprites_path' do
24
+ it 'should return the default' do
25
+ config.sprites_path.should == 'public/images/sprites'
26
+ end
27
+
28
+ it 'should accept an override' do
29
+ config.sprites_path('foo').sprites_path.should == 'foo'
30
+ end
31
+ end
32
+
33
+ context '#sprite_stylesheets_path' do
34
+ it 'should return the default' do
35
+ config.sprite_stylesheets_path.should == 'public/stylesheets/sprites'
36
+ end
37
+
38
+ it 'should accept an override' do
39
+ config.sprite_stylesheets_path('foo').sprite_stylesheets_path.should == 'foo'
40
+ end
41
+ end
42
+
43
+ context '#sprite_stylesheets_path' do
44
+ it 'should return the default' do
45
+ config.sprite_pieces_path.should == 'public/images/sprite_images'
46
+ end
47
+
48
+ it 'should accept an override' do
49
+ config.sprite_pieces_path('foo').sprite_pieces_path.should == 'foo'
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe Pathname do
4
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+ require 'sprites/notifier'
3
+
4
+ describe Notifier do
5
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe ChunkyPngGenerator do
4
+ it 'should generate a sprite and a stylesheet' do
5
+ Sprites.configure do
6
+ sprites_path 'tmp/images/sprites/foo2'
7
+ sprite_stylesheets_path 'tmp/images/stylesheets/foo2'
8
+ sprite_pieces_path File.join(Sprites.gem_root, 'spec/fixtures/known_good/sprite_images')
9
+ end
10
+
11
+ define_buttons_sprite
12
+
13
+ sprite_generator = ChunkyPngGenerator.new(Sprites.configuration)
14
+ sprite_generator.generate(Sprites.application.sprites)
15
+
16
+ tester = SpriteGeneratorTester.new(Sprites.application.sprites[:buttons], Sprites.configuration)
17
+ tester.should be_accurate
18
+ end
19
+ end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe SpritePiece do
4
+ context 'self.sprite_piece_full_path' do
5
+ it 'should return the full sprite piece path' do
6
+ config = Configuration.new
7
+ config.sprite_pieces_path('tmp/images/sprite_images')
8
+
9
+ sprite_piece = SpritePiece.new('foo/bar.png')
10
+
11
+ SpritePiece.sprite_piece_full_path(config, sprite_piece).should == 'tmp/images/sprite_images/foo/bar.png'
12
+ end
13
+ end
14
+
15
+ context '#css' do
16
+ it 'should return the css for the sprite piece' do
17
+ config = Configuration.new
18
+ config.sprites_path('tmp/images/sprites')
19
+
20
+ sprite = Sprite.new(:foo).define do
21
+ sprite_piece 'foo/bar.png' => '.foo'
22
+ end
23
+
24
+ sprite_piece = sprite.sprite_pieces['foo/bar.png']
25
+ sprite_piece.x = 0
26
+ sprite_piece.y = 345
27
+ sprite_piece.width = 40
28
+ sprite_piece.height = 50
29
+
30
+ sprite_piece.css(config, sprite).should == <<-CSS
31
+ .foo
32
+ {
33
+ display:block;
34
+ width:40px;
35
+ height:50px;
36
+ background:url('/tmp/images/sprites/foo.png') no-repeat 0 -345px;
37
+ }
38
+ CSS
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+ require 'sprites/sprite_pieces'
3
+
4
+ describe SpritePieces do
5
+
6
+ before do
7
+ @sprite_pieces = SpritePieces.new
8
+
9
+ @sprite_piece_definitions = [
10
+ {'foo.png' => 'foo.css'},
11
+ {'bar.png' => 'bar.css'},
12
+ {'bas.png' => 'bas.css'}
13
+ ]
14
+
15
+ @sprite_piece_definitions.each do |spd|
16
+ @sprite_pieces.add(spd)
17
+ end
18
+ end
19
+
20
+ context '#map' do
21
+ it 'should allow access to the @sprite_pieces OrderedHash values and allow them to be mapped' do
22
+ @sprite_pieces.map {|sp| {sp.path => sp.selector} }.should == @sprite_piece_definitions
23
+ end
24
+ end
25
+
26
+ context '#element_at' do
27
+ it 'should return the element at the given index' do
28
+ @sprite_pieces.element_at(1).path.should == 'bar.png'
29
+ @sprite_pieces.element_at(1).selector.should == 'bar.css'
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,146 @@
1
+ require 'spec_helper'
2
+ require 'sprites/sprite'
3
+
4
+ describe Sprite do
5
+ before do
6
+ @sprite = Sprite.new(:foo)
7
+ end
8
+
9
+ context '#name' do
10
+ it 'should retrieve the name' do
11
+ @sprite.name.should == :foo
12
+ end
13
+ end
14
+
15
+ context '#path' do
16
+ it 'should retrieve the path' do
17
+ @sprite.define(:foo) {}
18
+ @sprite.path.to_s.should == "foo.png"
19
+ end
20
+ end
21
+
22
+ context "#define", "a method to further initialize the Sprite, e.g. with spite pieces" do
23
+ shared_examples "a sprite definition with no options" do
24
+ it 'the options should be a hash' do
25
+ @sprite.instance_variable_get(:@options).should be_a(Hash)
26
+ end
27
+
28
+ it 'should set the path' do
29
+ @sprite.path.should be_a(Pathname)
30
+ @sprite.path.to_s.should == 'sprites/foo.png'
31
+ end
32
+
33
+ it 'should set the create the Stylesheet' do
34
+ @sprite.stylesheet.should be_a(Stylesheet)
35
+ end
36
+ end
37
+
38
+ context 'when defining with a symbol and no options' do
39
+ before do
40
+ @sprite.define(:foo) {}
41
+ end
42
+
43
+ it 'the options should be a hash' do
44
+ @sprite.instance_variable_get(:@options).should be_a(Hash)
45
+ end
46
+
47
+ it 'should set the path' do
48
+ @sprite.path.should be_a(Pathname)
49
+ @sprite.path.to_s.should == 'foo.png'
50
+ end
51
+
52
+ it 'should set the create the Stylesheet' do
53
+ @sprite.stylesheet.should be_a(Stylesheet)
54
+ end
55
+ end
56
+
57
+ context 'when defining with hash but no extra options' do
58
+ before do
59
+ @sprite.define('sprites/foo.png' => 'stylesheets/sprites/foo.css') {}
60
+ end
61
+
62
+ it_behaves_like("a sprite definition with no options")
63
+ end
64
+
65
+ context 'when defining with a string and no options' do
66
+ before do
67
+ @sprite.define('sprites/foo.png') {}
68
+ end
69
+
70
+ it_behaves_like("a sprite definition with no options")
71
+ end
72
+
73
+ end
74
+
75
+ context "#sprite_piece" do
76
+ it 'should respond_to sprite_piece' do
77
+ Sprite.new(:foo).should respond_to(:sprite_piece)
78
+ end
79
+
80
+ it 'should return a Sprites::SpritePiece' do
81
+ sprite = Sprite.new(:foo)
82
+ sprite.sprite_piece('sprite_images/foo.png' => '.foo').should be_a(SpritePiece)
83
+ end
84
+
85
+ it 'should add a sprite piece to the collection' do
86
+ sprite = Sprite.new(:foo)
87
+ sprite.sprite_piece('sprite_images/foo.png' => '.foo')
88
+ sprite.sprite_pieces.should_not be_empty
89
+ sprite.sprite_pieces.count.should be(1)
90
+ sprite.sprite_pieces['sprite_images/foo.png'].selector.should == '.foo'
91
+ end
92
+ end
93
+
94
+ context '#sprite_pieces' do
95
+ it 'should return a SpritePieces adt' do
96
+ @sprite.sprite_pieces.should be_a(SpritePieces)
97
+ end
98
+ end
99
+
100
+ context '#stylesheet' do
101
+ it 'should return a Stylesheet' do
102
+ @sprite.define(:foo) {}
103
+ @sprite.stylesheet.should be_a(Stylesheet)
104
+ end
105
+ end
106
+
107
+ context '#stylesheet_path' do
108
+ it 'should return the stylesheet path' do
109
+ @sprite.define(:foo) {}
110
+ @sprite.stylesheet_path.to_s.should == 'foo.css'
111
+ end
112
+ end
113
+
114
+ context '#orientation' do
115
+ it 'should set the orientation' do
116
+ @sprite.orientation(Sprite::Orientations::HORIZONTAL)
117
+ @sprite.orientation.should be(Sprite::Orientations::HORIZONTAL)
118
+ end
119
+
120
+ it 'should set and return the default orientation' do
121
+ @sprite.orientation.should be(Sprite::Orientations::VERTICAL)
122
+ end
123
+ end
124
+
125
+ context "self.sprite_full_path(configuration, sprite)" do
126
+ it 'should return the sprite full path' do
127
+ config = Configuration.new
128
+ config.sprites_path('tmp/images/sprites')
129
+
130
+ sprite = Sprite.new(:foo)
131
+
132
+ Sprite.sprite_full_path(config, sprite).should == 'tmp/images/sprites/foo.png'
133
+ end
134
+ end
135
+
136
+ context 'self.sprite_css_path(configuration, sprite)' do
137
+ it 'should return the path for use in the url in the background style attribute' do
138
+ config = Configuration.new
139
+ config.sprites_path('tmp/images/sprites')
140
+
141
+ sprite = Sprite.new(:foo)
142
+
143
+ Sprite.sprite_css_path(config, sprite).should == '/tmp/images/sprites/foo.png'
144
+ end
145
+ end
146
+ end
@@ -0,0 +1,100 @@
1
+ require 'spec_helper'
2
+
3
+ describe Sprites do
4
+ before do
5
+ @sprites = Sprites::Sprites.new
6
+ end
7
+
8
+ context 'initialize' do
9
+ it 'should create the @sprites Hash' do
10
+ @sprites.instance_variable_get(:@sprites).should be_a(Hash)
11
+ end
12
+ end
13
+
14
+ context '#add' do
15
+ context 'with the sprite identified by a symbol' do
16
+ it 'should add a sprite to the collection' do
17
+ @sprites.add(:foo) {}
18
+ @sprites[:foo].should be_a(Sprite)
19
+ end
20
+ end
21
+
22
+ context 'with the sprite identified by a string--the path to the sprite image' do
23
+ it 'should add a sprite to the collection' do
24
+ @sprites.add('images/sprites/foo.png') {}
25
+ @sprites[:foo].should be_a(Sprite)
26
+ end
27
+ end
28
+
29
+ context 'with the sprite identified by a hash--the mapping between the sprite image file and its stylesheet' do
30
+ it 'should add a sprite to the collection' do
31
+ @sprites.add('images/sprites/foo.png' => 'stylesheets/sprites/foo.css') {}
32
+ @sprites[:foo].should be_a(Sprite)
33
+ end
34
+ end
35
+
36
+ it 'should add the sprite if passed in a Sprites::Sprite' do
37
+ sprite = Sprite.new(:"foo") {}
38
+ @sprites.add(sprite)
39
+ @sprites[:foo].should be(sprite)
40
+ end
41
+ end
42
+
43
+ context '#clear' do
44
+ it 'should clear the collection' do
45
+ @sprites.add(:foo) {}
46
+ @sprites.should_not be_empty
47
+ @sprites.clear
48
+ @sprites.should be_empty
49
+ end
50
+ end
51
+
52
+ context '#[]' do
53
+ it 'should retrieve the sprite' do
54
+ @sprites[:foo].should be_nil
55
+ @sprites.add(:foo) {}
56
+ @sprites[:foo].should be_a(Sprite)
57
+ end
58
+
59
+ it 'should not add to the collection during retrieval' do
60
+ @sprites[:foo]
61
+ @sprites.count.should be(0)
62
+ end
63
+ end
64
+
65
+ context '#empty?' do
66
+ it 'should be empty when initialized' do
67
+ @sprites.should be_empty
68
+ end
69
+ end
70
+
71
+ context '#count' do
72
+ it 'should respond with the number of sprites in the collection' do
73
+ @sprites.count.should be(0)
74
+ @sprites.add(:foo) {}
75
+ @sprites.count.should be(1)
76
+ @sprites.add(:bar) {}
77
+ @sprites.count.should be(2)
78
+ end
79
+ end
80
+
81
+ context "#each" do
82
+ it 'should iterate through the sprites' do
83
+ sprites = Set.new
84
+ test_sprites = Set.new
85
+
86
+ 4.times do |i|
87
+ sprite = Sprite.new(:"foo#{i}") {}
88
+ sprites << sprite
89
+ @sprites.add(sprite)
90
+ end
91
+
92
+ @sprites.each do |sprite|
93
+ test_sprites << sprite
94
+ end
95
+
96
+ sprites.should == test_sprites
97
+ end
98
+ end
99
+
100
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Stylesheet do
4
+
5
+ context "self.sprite_full_path(configuration, sprite)" do
6
+ it 'should return the stylesheet full path' do
7
+ config = Configuration.new
8
+ config.sprite_stylesheets_path('tmp/stylesheets')
9
+ sprite = Sprite.new(:foo)
10
+ stylesheet = Stylesheet.new('sprites/foo.css', sprite)
11
+
12
+ Stylesheet.stylesheet_full_path(config, stylesheet).should == 'tmp/stylesheets/sprites/foo.css'
13
+ end
14
+ end
15
+
16
+ context '#sprite_pieces, #sprite_pieces=' do
17
+ it 'should allow access to and setting of sprite_pieces' do
18
+ sprite = Sprite.new(:foo)
19
+ stylesheet = Stylesheet.new('foo/bar.css', sprite)
20
+ sprite_pieces = SpritePieces.new
21
+ stylesheet.sprite_pieces = sprite_pieces
22
+ stylesheet.sprite_pieces.should be(sprite_pieces)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+ require 'sprites/test/sprite_generator_tester'
3
+
4
+ describe SpriteGeneratorTester do
5
+ describe "#test_generator" do
6
+ it 'should return 0 for known good sprite' do
7
+ Sprites.configure do
8
+ sprites_path 'spec/fixtures/known_good/sprites'
9
+ sprite_stylesheets_path 'spec/fixtures/known_good/stylesheets'
10
+ sprite_pieces_path 'spec/fixtures/known_good/sprite_images'
11
+ end
12
+ define_buttons_sprite
13
+ tester = SpriteGeneratorTester.new(Sprites.application.sprites[:buttons], Sprites.configuration)
14
+ tester.should be_accurate
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Sprites do
4
+ context 'self.application' do
5
+ it 'should return an application' do
6
+ Sprites.application.should be_a(Sprites::Application)
7
+ end
8
+ end
9
+
10
+ context 'self.configure' do
11
+ it 'should congfigure the application' do
12
+ Sprites.configure do
13
+ backend :rmagick
14
+ end
15
+
16
+ Sprites.configuration.backend.should == :rmagick
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,12 @@
1
+ require 'rspec'
2
+ require 'sprites'
3
+
4
+ include Sprites
5
+
6
+ ROOT = Sprites.gem_root
7
+
8
+ Dir['spec/support/*.rb'].each {|support_file| load support_file}
9
+
10
+ RSpec.configure do |config|
11
+ config.include SpritesHelper
12
+ end