ps.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. define(function (require) {
  2. var tdd = require('intern!tdd');
  3. // Not really Chai but a Chai-compatible "assert" library for old IE.
  4. var assert = require('intern/chai!assert');
  5. // parse-srcset is an AMD module.
  6. var parseSrcset = require('../../src/parse-srcset');
  7. var he = require('tests/he');
  8. tdd.suite('Parse Srcset', function() {
  9. // Adapted from the W3C srcset conformance checker at:
  10. // http://w3c-test.org/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute.html
  11. var w3Ctests = [
  12. {
  13. groupName: "Splitting Loop",
  14. testArray: [
  15. {srcset: '', expect: '', desc: 'empty string'},
  16. {srcset: ',' , expect: '', desc: 'single comma'},
  17. {srcset: ',,,', expect: '', desc: 'three commas'},
  18. {srcset: '		data:,a		1x		', expect: 'data:,a', desc: 'tabs'},
  19. {srcset: '

data:,a

1x

', expect: 'data:,a', desc: 'line feeds'},
  20. {srcset: 'data:,a1x', expect: 'data:,a1x', desc: 'line tab'},
  21. {srcset: 'data:,a1x', expect: 'data:,a', desc: 'form feed U+000C'},
  22. {srcset: '

data:,a

1x

', expect: 'data:,a', desc: 'carriage return U+000D'},
  23. {srcset: 'data:,a1x', expect: 'data:,a1x', desc: 'shift out U+000E'},
  24. {srcset: 'data:,a1x', expect: 'data:,a1x', desc: 'shift in U+000F' },
  25. {srcset: 'data:,a1x', expect: 'data:,a1x', desc: 'data link escape U+0010' },
  26. {srcset: 'data:,a', expect: 'data:,a', desc:'plain url'},
  27. {srcset: 'data:,a ', expect: 'data:,a', desc:'trailing space'},
  28. {srcset: 'data:,a ,', expect: 'data:,a', desc:'trailing space and comma'},
  29. {srcset: 'data:,a,', expect: 'data:,a', desc:'trailing comma'},
  30. {srcset: 'data:,a, ', expect: 'data:,a', desc:'trailing comma and space'},
  31. {srcset: 'data:,a,,,', expect: 'data:,a', desc:'trailing three commas'},
  32. {srcset: 'data:,a,, , ', expect: 'data:,a', desc:'trailing two commas space comma space'},
  33. {srcset: ' data:,a', expect: 'data:,a', desc:'leading space'},
  34. {srcset: ',,,data:,a', expect: 'data:,a', desc:'leading three commas'},
  35. {srcset: ' , ,,data:,a', expect: 'data:,a', desc:'leading space comma space comma comma'},
  36. {srcset: ' data:,a', expect: ' data:,a', desc:'leading non-breaking space'},
  37. {srcset: 'data:,a ', expect: 'data:,a ', desc:'trailing non-breaking space'}
  38. ]
  39. },
  40. {
  41. groupName: "Descriptor Tokenizer",
  42. testArray: [
  43. {srcset: 'data:,a 1x', expect: 'data:,a', desc: 'plain url with descriptor'},
  44. {srcset: 'data:,a 1x ', expect: 'data:,a', desc: 'trailing space'},
  45. {srcset: 'data:,a 1x,', expect: 'data:,a', desc: 'trailing comma'},
  46. {srcset: 'data:,a ( , data:,b 1x, ), data:,c', expect: 'data:,c', desc: 'irregular parens 1'},
  47. {srcset: 'data:,a ((( , data:,b 1x, ), data:,c', expect: 'data:,c', desc: 'irregular parens 2'},
  48. {srcset: 'data:,a [ , data:,b 1x, ], data:,c', expect: 'data:,b', desc: 'brackets'},
  49. {srcset: 'data:,a { , data:,b 1x, }, data:,c', expect: 'data:,b', desc: 'braces'},
  50. {srcset: 'data:,a " , data:,b 1x, ", data:,c', expect: 'data:,b', desc: 'double quotes'},
  51. {srcset: 'data:,a \\,data:;\\,b, data:,c', expect: 'data:;\\,b', desc: 'backslashes'},
  52. {srcset: 'data:,a, data:,b (', expect: 'data:,a', desc: 'trailing unclosed paren'},
  53. {srcset: 'data:,a, data:,b ( ', expect: 'data:,a', desc: 'unclosed paren space'},
  54. {srcset: 'data:,a, data:,b (,', expect: 'data:,a', desc: 'unclosed paren comma'},
  55. {srcset: 'data:,a, data:,b (x', expect: 'data:,a', desc: 'unclosed paren x'},
  56. {srcset: 'data:,a, data:,b ()', expect: 'data:,a', desc: 'parens, no descriptor'},
  57. {srcset: 'data:,a (, data:,b', expect: '', desc: 'unclosed paren'},
  58. {srcset: 'data:,a /*, data:,b, data:,c */', expect: 'data:,b', desc: 'block comments'},
  59. {srcset: 'data:,a //, data:,b', expect: 'data:,b', desc: 'double slash like a comment'}
  60. ]
  61. },
  62. { groupName: "Descriptor Parser",
  63. testArray : [
  64. {srcset: 'data:,a foo', expect: '', desc: 'trailing foo'},
  65. {srcset: 'data:,a foo foo', expect: '', desc: 'trailing foo foo'},
  66. {srcset: 'data:,a foo 1x', expect: '', desc: 'trailing foo 1x'},
  67. {srcset: 'data:,a foo 1x foo', expect: '', desc: 'trailing 1x foo'},
  68. {srcset: 'data:,a foo 1w', expect: '', desc: 'trailing foo 1w'},
  69. {srcset: 'data:,a foo 1w foo', expect: '', desc: 'trailing foo 1w foo'},
  70. {srcset: 'data:,a 1x 1x', expect: '', desc: 'two density descriptors'},
  71. {srcset: 'data:,a 1w 1w', expect: '', desc: 'two width descriptors'},
  72. {srcset: 'data:,a 1h 1h', expect: '', desc: 'two height descriptors'},
  73. {srcset: 'data:,a 1w 1x', expect: '', desc: 'width then density'},
  74. {srcset: 'data:,a 1x 1w', expect: '', desc: 'density then width'},
  75. {srcset: 'data:,a 1w 1h', expect: 'data:,a', desc: 'width then height'},
  76. {srcset: 'data:,a 1h 1w', expect: 'data:,a', desc: 'height then width'},
  77. {srcset: 'data:,a 1h 1x', expect: '', desc: 'height then density'},
  78. {srcset: 'data:,a 1h 1w 1x', expect: '', desc: 'height then width then density'},
  79. {srcset: 'data:,a 1x 1w 1h', expect: '', desc: 'density then width then height'},
  80. {srcset: 'data:,a 1h foo', expect: '', desc: 'trailing 1h foo'},
  81. {srcset: 'data:,a foo 1h', expect: '', desc: 'trailing foo 1h'},
  82. {srcset: 'data:,a 0w', expect: '', desc: 'zero width'},
  83. {srcset: 'data:,a -1w', expect: '', desc: 'negative width'},
  84. {srcset: 'data:,a 1w -1w', expect: '', desc: 'positive width, negative width'},
  85. {srcset: 'data:,a 1.0w', expect: '', desc: 'floating point width'},
  86. {srcset: 'data:,a 1w 1.0w', expect: '', desc: 'integer width, floating point width'},
  87. {srcset: 'data:,a 1e0w', expect: '', desc: 'exponent width'},
  88. {srcset: 'data:,a 1w 1e0w', expect: '', desc: 'integer width, exponent width'},
  89. {srcset: 'data:,a 1www', expect: '', desc: '1www'},
  90. {srcset: 'data:,a 1w 1www', expect: '', desc: '1w 1www'},
  91. {srcset: 'data:,a 1w +1w', expect: '', desc: '1w +1w'},
  92. {srcset: 'data:,a 1W', expect: '', desc: 'capital W descriptor'},
  93. {srcset: 'data:,a 1w 1W', expect: '', desc: 'lowercase w, capital W descriptors'},
  94. {srcset: 'data:,a Infinityw', expect: '', desc: 'Infinityw'},
  95. {srcset: 'data:,a 1w Infinityw', expect: '', desc: '1w Infinityw'},
  96. {srcset: 'data:,a NaNw', expect: '', desc: 'Nanw'},
  97. {srcset: 'data:,a 1w NaNw', expect: '', desc: '1w Nanw'},
  98. {srcset: 'data:,a 0x1w', expect: '', desc: 'ox1w'},
  99. {srcset: 'data:,a 1w', expect: '', desc: 'trailing U+0001'},
  100. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+00A0'},
  101. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+1680'},
  102. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+2000'},
  103. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+2001'},
  104. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+2002'},
  105. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+2003'},
  106. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+2004'},
  107. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+2005'},
  108. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+2006'},
  109. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+2007'},
  110. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+2008'},
  111. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+2009'},
  112. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+200A'},
  113. {srcset: 'data:,a 1‌w', expect: '', desc: 'trailing U+200C'},
  114. {srcset: 'data:,a 1‍w', expect: '', desc: 'trailing U+200D'},
  115. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+202F'},
  116. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+205F'},
  117. {srcset: 'data:,a 1 w', expect: '', desc: 'trailing U+3000'},
  118. {srcset: 'data:,a 1w', expect: '', desc: 'trailing U+FEFF'},
  119. {srcset: 'data:,a 1w' , expect: '', desc: 'leading U+0001'},
  120. // {srcset: 'data:,a  1w' , expect: '', desc: 'leading U+00A0 width'},
  121. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+1680'},
  122. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+2000'},
  123. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+2001'},
  124. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+2002'},
  125. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+2003'},
  126. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+2004'},
  127. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+2005'},
  128. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+2006'},
  129. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+2007'},
  130. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+2008'},
  131. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+2009'},
  132. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+200A'},
  133. {srcset: 'data:,a ‌1w', expect: '', desc: 'leading U+200C'},
  134. {srcset: 'data:,a ‍1w', expect: '', desc: 'leading U+200D'},
  135. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+202F'},
  136. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+205F'},
  137. {srcset: 'data:,a  1w', expect: '', desc: 'leading U+3000'},
  138. {srcset: 'data:,a 1w', expect: '', desc: 'leading U+FEFF'},
  139. {srcset: 'data:,a 0x', expect: 'data:,a', desc: 'zero density'},
  140. {srcset: 'data:,a -0x' , expect: 'data:,a', desc: 'negative zero density'},
  141. {srcset: 'data:,a 1x -0x', expect: '', desc: '1x -0x'},
  142. {srcset: 'data:,a -1x', expect: '', desc: '-1x'},
  143. {srcset: 'data:,a 1x -1x', expect: '', desc: '1x -1x'},
  144. {srcset: 'data:,a 1e0x', expect: 'data:,a', desc: '1e0x'},
  145. {srcset: 'data:,a 1E0x', expect: 'data:,a', desc: '1E0x'},
  146. {srcset: 'data:,a 1e-1x', expect: 'data:,a', desc: '1e-1x'},
  147. {srcset: 'data:,a 1.5e1x', expect: 'data:,a', desc: '1.5e1x'},
  148. {srcset: 'data:,a -x', expect: '', desc: 'negative density with no digits'},
  149. {srcset: 'data:,a .x', expect: '', desc: 'decimal density with no digits'},
  150. {srcset: 'data:,a -.x', expect: '', desc: '-.x'},
  151. {srcset: 'data:,a 1.x', expect: '', desc: '1.x'},
  152. {srcset: 'data:,a .5x', expect: 'data:,a', desc: 'floating point density descriptor'},
  153. {srcset: 'data:,a .5e1x', expect: 'data:,a', desc: '.5e1x'},
  154. {srcset: 'data:,a 1x 1.5e1x', expect: '', desc: '1x 1.5e1x'},
  155. {srcset: 'data:,a 1x 1e1.5x', expect: '', desc: '1x 1e1.5x'},
  156. {srcset: 'data:,a 1.0x', expect: 'data:,a', desc: '1.0x'},
  157. {srcset: 'data:,a 1x 1.0x', expect: '', desc: '1x 1.0x'},
  158. {srcset: 'data:,a +1x', expect: '', desc: 'no plus sign allowed on floating point number'},
  159. {srcset: 'data:,a 1X', expect: '', desc: 'Capital X descriptor'},
  160. {srcset: 'data:,a Infinityx', expect: '', desc: 'Infinityx'},
  161. {srcset: 'data:,a NaNx', expect: '', desc: 'NaNx'},
  162. {srcset: 'data:,a 0x1x', expect: '', desc: '0X1x'},
  163. {srcset: 'data:,a 0X1x', expect: '', desc: '1x'},
  164. {srcset: 'data:,a 1x', expect: '', desc: 'trailing U+0001'},
  165. {srcset: 'data:,a 1 x' , expect: '', desc: 'trailing U+00A0 density'},
  166. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+1680'},
  167. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+2000'},
  168. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+2001'},
  169. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+2002'},
  170. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+2003'},
  171. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+2004'},
  172. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+2005'},
  173. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+2006'},
  174. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+2007'},
  175. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+2008'},
  176. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+2009'},
  177. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+200A'},
  178. {srcset: 'data:,a 1‌x', expect: '', desc: 'trailing U+200C'},
  179. {srcset: 'data:,a 1‍x', expect: '', desc: 'trailing U+200D'},
  180. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+202F'},
  181. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+205F'},
  182. {srcset: 'data:,a 1 x', expect: '', desc: 'trailing U+3000'},
  183. {srcset: 'data:,a 1x', expect: '', desc: 'trailing U+FEFF'},
  184. {srcset: 'data:,a 1x' , expect: '', desc: 'leading U+0001'},
  185. {srcset: 'data:,a  1x' , expect: '', desc: 'leading U+00A0 density'},
  186. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+1680'},
  187. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+2000'},
  188. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+2001'},
  189. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+2002'},
  190. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+2003'},
  191. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+2004'},
  192. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+2005'},
  193. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+2006'},
  194. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+2007'},
  195. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+2008'},
  196. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+2009'},
  197. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+200A'},
  198. {srcset: 'data:,a ‌1x', expect: '', desc: 'leading U+200C'},
  199. {srcset: 'data:,a ‍1x', expect: '', desc: 'leading U+200D'},
  200. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+202F'},
  201. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+205F'},
  202. {srcset: 'data:,a  1x', expect: '', desc: 'leading U+3000'},
  203. {srcset: 'data:,a 1x', expect: '', desc: 'leading U+FEFF'},
  204. {srcset: 'data:,a 1w 0h', expect: '', desc: '1w 0h'},
  205. {srcset: 'data:,a 1w -1h', expect: '', desc: '1w -1h'},
  206. {srcset: 'data:,a 1w 1.0h', expect: '', desc: '1w 1.0h'},
  207. {srcset: 'data:,a 1w 1e0h', expect: '', desc: '1w 1e0h'},
  208. {srcset: 'data:,a 1w 1hhh', expect: '', desc: '1w 1hhh'},
  209. {srcset: 'data:,a 1w 1H', expect: '', desc: '1w 1H'},
  210. {srcset: 'data:,a 1w Infinityh', expect: '', desc: '1w Infinityh'},
  211. {srcset: 'data:,a 1w NaNh', expect: '', desc: '1w NaNh'},
  212. {srcset: 'data:,a 0x1h', expect: '', desc: '0x1h'},
  213. {srcset: 'data:,a 0X1h', expect: '', desc: '0X1h'},
  214. {srcset: 'data:,a 1w 1h', expect: '', desc: 'trailing U+0001'},
  215. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+00A0'},
  216. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+1680'},
  217. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+2000'},
  218. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+2001'},
  219. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+2002'},
  220. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+2003'},
  221. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+2004'},
  222. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+2005'},
  223. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+2006'},
  224. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+2007'},
  225. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+2008'},
  226. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+2009'},
  227. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+200A'},
  228. {srcset: 'data:,a 1w 1‌h', expect: '', desc: 'trailing U+200C'},
  229. {srcset: 'data:,a 1w 1‍h', expect: '', desc: 'trailing U+200D'},
  230. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+202F'},
  231. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+205F'},
  232. {srcset: 'data:,a 1w 1 h', expect: '', desc: 'trailing U+3000'},
  233. {srcset: 'data:,a 1w 1h', expect: '', desc: 'trailing U+FEFF'},
  234. {srcset: 'data:,a 1w 1h', expect: '', desc: 'leading U+0001'},
  235. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+00A0'},
  236. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+1680'},
  237. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+2000'},
  238. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+2001'},
  239. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+2002'},
  240. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+2003'},
  241. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+2004'},
  242. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+2005'},
  243. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+2006'},
  244. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+2007'},
  245. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+2008'},
  246. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+2009'},
  247. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+200A'},
  248. {srcset: 'data:,a 1w ‌1h', expect: '', desc: 'leading U+200C'},
  249. {srcset: 'data:,a 1w ‍1h', expect: '', desc: 'leading U+200D'},
  250. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+202F'},
  251. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+205F'},
  252. {srcset: 'data:,a 1w  1h', expect: '', desc: 'leading U+3000'},
  253. {srcset: 'data:,a 1w 1h', expect: '', desc: 'leading U+FEFF'}
  254. ]
  255. }
  256. ];
  257. // HTML Entities are much easier to troubleshoot in console.
  258. he.encode.options.useNamedReferences = true;
  259. function runTest(test) {
  260. var origAttr = test.srcset;
  261. var attrDecoded = he.decode(origAttr);
  262. var parsed = parseSrcset(attrDecoded);
  263. var firstCandidate = parsed[0];
  264. var url = "";
  265. var encodedUrl = "";
  266. if (firstCandidate) {
  267. url = firstCandidate.url;
  268. }
  269. // Must re-encode url prior to comparison with expected string.
  270. if (url) {
  271. encodedUrl = he.encode(url);
  272. }
  273. console.log("");
  274. console.log(test.desc);
  275. console.log("origAttr: '" + origAttr + "'");
  276. console.log("attrDecoded: '" + attrDecoded + "'");
  277. console.log("parsed: ", parsed);
  278. console.log("url: '" + url + "'");
  279. console.log("encodedUrl: '" + encodedUrl + "'");
  280. tdd.test( test.desc , function() {
  281. assert.strictEqual(encodedUrl, test.expect, "passed" );
  282. });
  283. }
  284. function runTestGroup(testGroup) {
  285. var j;
  286. var testArray = testGroup.testArray;
  287. // Group Tests
  288. tdd.suite(testGroup.groupName, function() {
  289. for (j = 0; j < testArray.length; j++) {
  290. runTest(testArray[j]);
  291. }
  292. });
  293. }
  294. var i;
  295. var w3CtestsLength = w3Ctests.length;
  296. for (i = 0; i < w3CtestsLength; i++) {
  297. runTestGroup(w3Ctests[i]);
  298. }
  299. // tdd.test('First Test', function () {
  300. // var parsed = parseSrcset('data:,a 1x');
  301. // var url = parsed[0].url;
  302. //
  303. // console.log("parsed: ", parsed);
  304. // console.log("url: ", url);
  305. //
  306. // assert.strictEqual(parsed, parsed, 'should be');
  307. //
  308. // // assert.strictEqual(url, 'data:,a', 'should be');
  309. // });
  310. // assert.strictEqual(parseSrcset('data:,a 1x')[0], 'data:,a', 'plain url with descriptor');
  311. // tdd.test('Second Test', function () {
  312. // assert.strictEqual(5, 5, '5 is itself, right?');
  313. // });
  314. });
  315. });