mdarray-sol 0.1.0-java

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 (683) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +35 -0
  3. data/LICENSE.txt~ +73 -0
  4. data/README.md +140 -0
  5. data/README.md~ +290 -0
  6. data/Rakefile +80 -0
  7. data/config.rb +223 -0
  8. data/doc/Nashorn.html +1406 -0
  9. data/doc/Sol.html +692 -0
  10. data/doc/Sol/BarChart.html +181 -0
  11. data/doc/Sol/BaseChart.html +799 -0
  12. data/doc/Sol/Bootstrap.html +1134 -0
  13. data/doc/Sol/Bridge.html +448 -0
  14. data/doc/Sol/Chart.html +1162 -0
  15. data/doc/Sol/CoordinateChart.html +673 -0
  16. data/doc/Sol/DCFX.html +807 -0
  17. data/doc/Sol/Dashboard.html +1967 -0
  18. data/doc/Sol/ExecMessages.html +332 -0
  19. data/doc/Sol/GuiCommunication.html +230 -0
  20. data/doc/Sol/Interval.html +1213 -0
  21. data/doc/Sol/JS.html +448 -0
  22. data/doc/Sol/LineChart.html +344 -0
  23. data/doc/Sol/LinearScale.html +334 -0
  24. data/doc/Sol/Margins.html +219 -0
  25. data/doc/Sol/OrdinalScale.html +263 -0
  26. data/doc/Sol/ReadBuffer.html +302 -0
  27. data/doc/Sol/Scale.html +462 -0
  28. data/doc/Sol/Stack.html +199 -0
  29. data/doc/Sol/TimeScale.html +396 -0
  30. data/doc/_index.html +362 -0
  31. data/doc/class_list.html +58 -0
  32. data/doc/css/common.css +1 -0
  33. data/doc/css/full_list.css +57 -0
  34. data/doc/css/style.css +339 -0
  35. data/doc/file.README.html +95 -0
  36. data/doc/file_list.html +60 -0
  37. data/doc/frames.html +26 -0
  38. data/doc/index.html +95 -0
  39. data/doc/js/app.js +219 -0
  40. data/doc/js/full_list.js +181 -0
  41. data/doc/js/jquery.js +4 -0
  42. data/doc/method_list.html +849 -0
  43. data/doc/top-level-namespace.html +135 -0
  44. data/examples/bar_chart/bar_chart.rb +268 -0
  45. data/examples/bar_plot.rb +96 -0
  46. data/examples/charts/area.rb +25 -0
  47. data/examples/charts/area_script.rb +69 -0
  48. data/examples/charts/env.rb +8 -0
  49. data/examples/charts/monthly-move.csv +6725 -0
  50. data/examples/charts/morley.csv +101 -0
  51. data/examples/charts/morley2.csv +81 -0
  52. data/examples/charts/morley3.csv +121 -0
  53. data/examples/d3_tutorial.rb +98 -0
  54. data/examples/sc_plot.rb +57 -0
  55. data/examples/scatterplot/axes.rb +111 -0
  56. data/examples/scatterplot/scatterplot.rb +221 -0
  57. data/examples/us_states/map.rb +90 -0
  58. data/examples/us_states/us-ag-productivity2004.csv +49 -0
  59. data/examples/us_states/us-cities.csv +51 -0
  60. data/examples/util/linear_scale.rb +83 -0
  61. data/examples/util/ordinal_scale.rb +72 -0
  62. data/init.rb +39 -0
  63. data/lib/jx/array_handler.js +70 -0
  64. data/lib/jx/callback.rb +255 -0
  65. data/lib/jx/hash_handler.js +87 -0
  66. data/lib/jx/irbobject.rb +121 -0
  67. data/lib/jx/js.rb +442 -0
  68. data/lib/jx/js_array.rb +31 -0
  69. data/lib/jx/js_hash.rb +76 -0
  70. data/lib/jx/js_init.rb +62 -0
  71. data/lib/jx/jsarray.rb +66 -0
  72. data/lib/jx/jsfunction.rb +73 -0
  73. data/lib/jx/jsobject.rb +188 -0
  74. data/lib/jx/jsstyle_sheet.rb +231 -0
  75. data/lib/jx/jsundefined.rb +46 -0
  76. data/lib/jx/proxy_array.rb +62 -0
  77. data/lib/jx/rbobject.rb +80 -0
  78. data/lib/jx/ruby_proxy.js +176 -0
  79. data/lib/jx/ruby_rich.js +70 -0
  80. data/lib/jx/sol.rb +109 -0
  81. data/lib/mdarray-sol.rb +34 -0
  82. data/lib/mdarray/jsmdarray.rb +39 -0
  83. data/lib/ruby_rich/bootstrap.rb +230 -0
  84. data/lib/ruby_rich/config.html +22 -0
  85. data/lib/ruby_rich/dashboard.rb +299 -0
  86. data/lib/ruby_rich/ruby_rich.rb +120 -0
  87. data/lib/sol/bar_chart.rb +35 -0
  88. data/lib/sol/base_chart.rb +148 -0
  89. data/lib/sol/chart.rb +138 -0
  90. data/lib/sol/coordinate_chart.rb +128 -0
  91. data/lib/sol/interval.rb +156 -0
  92. data/lib/sol/line_chart.rb +58 -0
  93. data/lib/sol/margins.rb +52 -0
  94. data/lib/sol/scale.rb +212 -0
  95. data/lib/sol/stack.rb +44 -0
  96. data/node_modules/bootstrap/Gruntfile.js +533 -0
  97. data/node_modules/bootstrap/dist/js/bootstrap.js +2363 -0
  98. data/node_modules/bootstrap/dist/js/bootstrap.min.js +7 -0
  99. data/node_modules/bootstrap/dist/js/npm.js +13 -0
  100. data/node_modules/bootstrap/grunt/bs-commonjs-generator.js +30 -0
  101. data/node_modules/bootstrap/grunt/bs-glyphicons-data-generator.js +42 -0
  102. data/node_modules/bootstrap/grunt/bs-lessdoc-parser.js +237 -0
  103. data/node_modules/bootstrap/grunt/bs-raw-files-generator.js +44 -0
  104. data/node_modules/bootstrap/js/affix.js +162 -0
  105. data/node_modules/bootstrap/js/alert.js +94 -0
  106. data/node_modules/bootstrap/js/button.js +120 -0
  107. data/node_modules/bootstrap/js/carousel.js +237 -0
  108. data/node_modules/bootstrap/js/collapse.js +211 -0
  109. data/node_modules/bootstrap/js/dropdown.js +165 -0
  110. data/node_modules/bootstrap/js/modal.js +337 -0
  111. data/node_modules/bootstrap/js/popover.js +108 -0
  112. data/node_modules/bootstrap/js/scrollspy.js +172 -0
  113. data/node_modules/bootstrap/js/tab.js +155 -0
  114. data/node_modules/bootstrap/js/tooltip.js +514 -0
  115. data/node_modules/bootstrap/js/transition.js +59 -0
  116. data/node_modules/chai/chai.js +6142 -0
  117. data/node_modules/chai/index.js +1 -0
  118. data/node_modules/chai/karma.conf.js +28 -0
  119. data/node_modules/chai/karma.sauce.js +41 -0
  120. data/node_modules/chai/lib/chai.js +93 -0
  121. data/node_modules/chai/lib/chai/assertion.js +131 -0
  122. data/node_modules/chai/lib/chai/config.js +55 -0
  123. data/node_modules/chai/lib/chai/core/assertions.js +1860 -0
  124. data/node_modules/chai/lib/chai/interface/assert.js +1645 -0
  125. data/node_modules/chai/lib/chai/interface/expect.js +34 -0
  126. data/node_modules/chai/lib/chai/interface/should.js +201 -0
  127. data/node_modules/chai/lib/chai/utils/addChainableMethod.js +112 -0
  128. data/node_modules/chai/lib/chai/utils/addMethod.js +44 -0
  129. data/node_modules/chai/lib/chai/utils/addProperty.js +48 -0
  130. data/node_modules/chai/lib/chai/utils/expectTypes.js +42 -0
  131. data/node_modules/chai/lib/chai/utils/flag.js +33 -0
  132. data/node_modules/chai/lib/chai/utils/getActual.js +20 -0
  133. data/node_modules/chai/lib/chai/utils/getEnumerableProperties.js +26 -0
  134. data/node_modules/chai/lib/chai/utils/getMessage.js +51 -0
  135. data/node_modules/chai/lib/chai/utils/getName.js +22 -0
  136. data/node_modules/chai/lib/chai/utils/getPathInfo.js +111 -0
  137. data/node_modules/chai/lib/chai/utils/getPathValue.js +43 -0
  138. data/node_modules/chai/lib/chai/utils/getProperties.js +36 -0
  139. data/node_modules/chai/lib/chai/utils/hasProperty.js +64 -0
  140. data/node_modules/chai/lib/chai/utils/index.js +130 -0
  141. data/node_modules/chai/lib/chai/utils/inspect.js +335 -0
  142. data/node_modules/chai/lib/chai/utils/objDisplay.js +50 -0
  143. data/node_modules/chai/lib/chai/utils/overwriteChainableMethod.js +54 -0
  144. data/node_modules/chai/lib/chai/utils/overwriteMethod.js +52 -0
  145. data/node_modules/chai/lib/chai/utils/overwriteProperty.js +55 -0
  146. data/node_modules/chai/lib/chai/utils/test.js +28 -0
  147. data/node_modules/chai/lib/chai/utils/transferFlags.js +45 -0
  148. data/node_modules/chai/node_modules/assertion-error/index.js +116 -0
  149. data/node_modules/chai/node_modules/deep-eql/index.js +1 -0
  150. data/node_modules/chai/node_modules/deep-eql/karma.conf.js +20 -0
  151. data/node_modules/chai/node_modules/deep-eql/lib/eql.js +257 -0
  152. data/node_modules/chai/node_modules/deep-eql/node_modules/type-detect/index.js +1 -0
  153. data/node_modules/chai/node_modules/deep-eql/node_modules/type-detect/lib/type.js +142 -0
  154. data/node_modules/chai/node_modules/type-detect/index.js +1 -0
  155. data/node_modules/chai/node_modules/type-detect/lib/type.js +134 -0
  156. data/node_modules/chai/sauce.browsers.js +128 -0
  157. data/node_modules/dc/Gruntfile.js +437 -0
  158. data/node_modules/dc/dc.js +10477 -0
  159. data/node_modules/dc/dc.min.js +23 -0
  160. data/node_modules/dc/docs/coverage.js +203 -0
  161. data/node_modules/dc/grunt/format-file-list.js +33 -0
  162. data/node_modules/dc/index.js +5 -0
  163. data/node_modules/dc/node_modules/crossfilter2/crossfilter.js +1401 -0
  164. data/node_modules/dc/node_modules/crossfilter2/crossfilter.min.js +1 -0
  165. data/node_modules/dc/node_modules/crossfilter2/index.js +1 -0
  166. data/node_modules/dc/node_modules/crossfilter2/src/array.js +46 -0
  167. data/node_modules/dc/node_modules/crossfilter2/src/bisect.js +44 -0
  168. data/node_modules/dc/node_modules/crossfilter2/src/crossfilter.js +872 -0
  169. data/node_modules/dc/node_modules/crossfilter2/src/filter.js +19 -0
  170. data/node_modules/dc/node_modules/crossfilter2/src/heap.js +44 -0
  171. data/node_modules/dc/node_modules/crossfilter2/src/heapselect.js +36 -0
  172. data/node_modules/dc/node_modules/crossfilter2/src/identity.js +3 -0
  173. data/node_modules/dc/node_modules/crossfilter2/src/insertionsort.js +18 -0
  174. data/node_modules/dc/node_modules/crossfilter2/src/null.js +3 -0
  175. data/node_modules/dc/node_modules/crossfilter2/src/permute.js +8 -0
  176. data/node_modules/dc/node_modules/crossfilter2/src/quicksort.js +283 -0
  177. data/node_modules/dc/node_modules/crossfilter2/src/reduce.js +19 -0
  178. data/node_modules/dc/node_modules/crossfilter2/src/zero.js +3 -0
  179. data/node_modules/dc/node_modules/d3/d3.js +9554 -0
  180. data/node_modules/dc/node_modules/d3/d3.min.js +5 -0
  181. data/node_modules/dc/node_modules/d3/package.js +13 -0
  182. data/node_modules/dc/node_modules/d3/src/arrays/ascending.js +5 -0
  183. data/node_modules/dc/node_modules/d3/src/arrays/bisect.js +36 -0
  184. data/node_modules/dc/node_modules/d3/src/arrays/descending.js +3 -0
  185. data/node_modules/dc/node_modules/d3/src/arrays/deviation.js +6 -0
  186. data/node_modules/dc/node_modules/d3/src/arrays/entries.js +5 -0
  187. data/node_modules/dc/node_modules/d3/src/arrays/extent.js +21 -0
  188. data/node_modules/dc/node_modules/d3/src/arrays/index.js +25 -0
  189. data/node_modules/dc/node_modules/d3/src/arrays/keys.js +5 -0
  190. data/node_modules/dc/node_modules/d3/src/arrays/map.js +84 -0
  191. data/node_modules/dc/node_modules/d3/src/arrays/max.js +14 -0
  192. data/node_modules/dc/node_modules/d3/src/arrays/mean.js +15 -0
  193. data/node_modules/dc/node_modules/d3/src/arrays/median.js +16 -0
  194. data/node_modules/dc/node_modules/d3/src/arrays/merge.js +21 -0
  195. data/node_modules/dc/node_modules/d3/src/arrays/min.js +14 -0
  196. data/node_modules/dc/node_modules/d3/src/arrays/nest.js +97 -0
  197. data/node_modules/dc/node_modules/d3/src/arrays/pairs.js +5 -0
  198. data/node_modules/dc/node_modules/d3/src/arrays/permute.js +5 -0
  199. data/node_modules/dc/node_modules/d3/src/arrays/quantile.js +8 -0
  200. data/node_modules/dc/node_modules/d3/src/arrays/range.js +26 -0
  201. data/node_modules/dc/node_modules/d3/src/arrays/set.js +27 -0
  202. data/node_modules/dc/node_modules/d3/src/arrays/shuffle.js +9 -0
  203. data/node_modules/dc/node_modules/d3/src/arrays/sum.js +14 -0
  204. data/node_modules/dc/node_modules/d3/src/arrays/transpose.js +15 -0
  205. data/node_modules/dc/node_modules/d3/src/arrays/values.js +5 -0
  206. data/node_modules/dc/node_modules/d3/src/arrays/variance.js +29 -0
  207. data/node_modules/dc/node_modules/d3/src/arrays/zip.js +5 -0
  208. data/node_modules/dc/node_modules/d3/src/behavior/behavior.js +1 -0
  209. data/node_modules/dc/node_modules/d3/src/behavior/drag.js +88 -0
  210. data/node_modules/dc/node_modules/d3/src/behavior/index.js +3 -0
  211. data/node_modules/dc/node_modules/d3/src/behavior/zoom.js +348 -0
  212. data/node_modules/dc/node_modules/d3/src/color/color.js +7 -0
  213. data/node_modules/dc/node_modules/d3/src/color/hcl.js +34 -0
  214. data/node_modules/dc/node_modules/d3/src/color/hsl.js +56 -0
  215. data/node_modules/dc/node_modules/d3/src/color/index.js +6 -0
  216. data/node_modules/dc/node_modules/d3/src/color/lab.js +60 -0
  217. data/node_modules/dc/node_modules/d3/src/color/rgb.js +301 -0
  218. data/node_modules/dc/node_modules/d3/src/color/xyz.js +7 -0
  219. data/node_modules/dc/node_modules/d3/src/compat/array.js +15 -0
  220. data/node_modules/dc/node_modules/d3/src/compat/date.js +3 -0
  221. data/node_modules/dc/node_modules/d3/src/compat/index.js +3 -0
  222. data/node_modules/dc/node_modules/d3/src/compat/style.js +23 -0
  223. data/node_modules/dc/node_modules/d3/src/core/array.js +2 -0
  224. data/node_modules/dc/node_modules/d3/src/core/class.js +8 -0
  225. data/node_modules/dc/node_modules/d3/src/core/document.js +15 -0
  226. data/node_modules/dc/node_modules/d3/src/core/functor.js +5 -0
  227. data/node_modules/dc/node_modules/d3/src/core/identity.js +3 -0
  228. data/node_modules/dc/node_modules/d3/src/core/index.js +3 -0
  229. data/node_modules/dc/node_modules/d3/src/core/noop.js +1 -0
  230. data/node_modules/dc/node_modules/d3/src/core/ns.js +18 -0
  231. data/node_modules/dc/node_modules/d3/src/core/rebind.js +16 -0
  232. data/node_modules/dc/node_modules/d3/src/core/source.js +3 -0
  233. data/node_modules/dc/node_modules/d3/src/core/subclass.js +11 -0
  234. data/node_modules/dc/node_modules/d3/src/core/target.js +3 -0
  235. data/node_modules/dc/node_modules/d3/src/core/true.js +3 -0
  236. data/node_modules/dc/node_modules/d3/src/core/vendor.js +10 -0
  237. data/node_modules/dc/node_modules/d3/src/core/zero.js +3 -0
  238. data/node_modules/dc/node_modules/d3/src/d3.js +23 -0
  239. data/node_modules/dc/node_modules/d3/src/dsv/csv.js +3 -0
  240. data/node_modules/dc/node_modules/d3/src/dsv/dsv.js +136 -0
  241. data/node_modules/dc/node_modules/d3/src/dsv/index.js +3 -0
  242. data/node_modules/dc/node_modules/d3/src/dsv/tsv.js +3 -0
  243. data/node_modules/dc/node_modules/d3/src/end.js +4 -0
  244. data/node_modules/dc/node_modules/d3/src/event/dispatch.js +69 -0
  245. data/node_modules/dc/node_modules/d3/src/event/drag.js +36 -0
  246. data/node_modules/dc/node_modules/d3/src/event/event.js +50 -0
  247. data/node_modules/dc/node_modules/d3/src/event/index.js +6 -0
  248. data/node_modules/dc/node_modules/d3/src/event/mouse.js +39 -0
  249. data/node_modules/dc/node_modules/d3/src/event/timer.js +82 -0
  250. data/node_modules/dc/node_modules/d3/src/event/touch.js +11 -0
  251. data/node_modules/dc/node_modules/d3/src/event/touches.js +12 -0
  252. data/node_modules/dc/node_modules/d3/src/format/collapse.js +3 -0
  253. data/node_modules/dc/node_modules/d3/src/format/format.js +3 -0
  254. data/node_modules/dc/node_modules/d3/src/format/formatPrefix.js +24 -0
  255. data/node_modules/dc/node_modules/d3/src/format/index.js +4 -0
  256. data/node_modules/dc/node_modules/d3/src/format/precision.js +3 -0
  257. data/node_modules/dc/node_modules/d3/src/format/requote.js +5 -0
  258. data/node_modules/dc/node_modules/d3/src/format/round.js +5 -0
  259. data/node_modules/dc/node_modules/d3/src/geo/albers-usa.js +129 -0
  260. data/node_modules/dc/node_modules/d3/src/geo/albers.js +11 -0
  261. data/node_modules/dc/node_modules/d3/src/geo/area.js +69 -0
  262. data/node_modules/dc/node_modules/d3/src/geo/azimuthal-equal-area.js +12 -0
  263. data/node_modules/dc/node_modules/d3/src/geo/azimuthal-equidistant.js +13 -0
  264. data/node_modules/dc/node_modules/d3/src/geo/azimuthal.js +25 -0
  265. data/node_modules/dc/node_modules/d3/src/geo/bounds.js +168 -0
  266. data/node_modules/dc/node_modules/d3/src/geo/cartesian.js +47 -0
  267. data/node_modules/dc/node_modules/d3/src/geo/centroid.js +149 -0
  268. data/node_modules/dc/node_modules/d3/src/geo/circle.js +81 -0
  269. data/node_modules/dc/node_modules/d3/src/geo/clip-antimeridian.js +95 -0
  270. data/node_modules/dc/node_modules/d3/src/geo/clip-circle.js +178 -0
  271. data/node_modules/dc/node_modules/d3/src/geo/clip-extent.js +196 -0
  272. data/node_modules/dc/node_modules/d3/src/geo/clip-polygon.js +104 -0
  273. data/node_modules/dc/node_modules/d3/src/geo/clip.js +149 -0
  274. data/node_modules/dc/node_modules/d3/src/geo/compose.js +12 -0
  275. data/node_modules/dc/node_modules/d3/src/geo/conic-conformal.js +39 -0
  276. data/node_modules/dc/node_modules/d3/src/geo/conic-equal-area.js +33 -0
  277. data/node_modules/dc/node_modules/d3/src/geo/conic-equidistant.js +36 -0
  278. data/node_modules/dc/node_modules/d3/src/geo/conic.js +16 -0
  279. data/node_modules/dc/node_modules/d3/src/geo/distance.js +13 -0
  280. data/node_modules/dc/node_modules/d3/src/geo/equirectangular.js +10 -0
  281. data/node_modules/dc/node_modules/d3/src/geo/geo.js +1 -0
  282. data/node_modules/dc/node_modules/d3/src/geo/gnomonic.js +12 -0
  283. data/node_modules/dc/node_modules/d3/src/geo/graticule.js +103 -0
  284. data/node_modules/dc/node_modules/d3/src/geo/greatArc.js +42 -0
  285. data/node_modules/dc/node_modules/d3/src/geo/index.js +33 -0
  286. data/node_modules/dc/node_modules/d3/src/geo/interpolate.js +38 -0
  287. data/node_modules/dc/node_modules/d3/src/geo/length.js +44 -0
  288. data/node_modules/dc/node_modules/d3/src/geo/mercator.js +48 -0
  289. data/node_modules/dc/node_modules/d3/src/geo/orthographic.js +12 -0
  290. data/node_modules/dc/node_modules/d3/src/geo/path-area.js +41 -0
  291. data/node_modules/dc/node_modules/d3/src/geo/path-bounds.js +21 -0
  292. data/node_modules/dc/node_modules/d3/src/geo/path-buffer.js +59 -0
  293. data/node_modules/dc/node_modules/d3/src/geo/path-centroid.js +78 -0
  294. data/node_modules/dc/node_modules/d3/src/geo/path-context.js +49 -0
  295. data/node_modules/dc/node_modules/d3/src/geo/path.js +87 -0
  296. data/node_modules/dc/node_modules/d3/src/geo/point-in-polygon.js +71 -0
  297. data/node_modules/dc/node_modules/d3/src/geo/projection.js +121 -0
  298. data/node_modules/dc/node_modules/d3/src/geo/resample.js +109 -0
  299. data/node_modules/dc/node_modules/d3/src/geo/rotation.js +79 -0
  300. data/node_modules/dc/node_modules/d3/src/geo/spherical.js +13 -0
  301. data/node_modules/dc/node_modules/d3/src/geo/stereographic.js +12 -0
  302. data/node_modules/dc/node_modules/d3/src/geo/stream.js +71 -0
  303. data/node_modules/dc/node_modules/d3/src/geo/transform.js +36 -0
  304. data/node_modules/dc/node_modules/d3/src/geo/transverse-mercator.js +31 -0
  305. data/node_modules/dc/node_modules/d3/src/geom/clip-line.js +66 -0
  306. data/node_modules/dc/node_modules/d3/src/geom/delaunay.js +6 -0
  307. data/node_modules/dc/node_modules/d3/src/geom/geom.js +1 -0
  308. data/node_modules/dc/node_modules/d3/src/geom/hull.js +91 -0
  309. data/node_modules/dc/node_modules/d3/src/geom/index.js +6 -0
  310. data/node_modules/dc/node_modules/d3/src/geom/point.js +7 -0
  311. data/node_modules/dc/node_modules/d3/src/geom/polygon.js +105 -0
  312. data/node_modules/dc/node_modules/d3/src/geom/quadtree.js +243 -0
  313. data/node_modules/dc/node_modules/d3/src/geom/voronoi.js +110 -0
  314. data/node_modules/dc/node_modules/d3/src/geom/voronoi/beach.js +186 -0
  315. data/node_modules/dc/node_modules/d3/src/geom/voronoi/cell.js +64 -0
  316. data/node_modules/dc/node_modules/d3/src/geom/voronoi/circle.js +73 -0
  317. data/node_modules/dc/node_modules/d3/src/geom/voronoi/clip.js +80 -0
  318. data/node_modules/dc/node_modules/d3/src/geom/voronoi/edge.js +50 -0
  319. data/node_modules/dc/node_modules/d3/src/geom/voronoi/index.js +59 -0
  320. data/node_modules/dc/node_modules/d3/src/geom/voronoi/red-black.js +235 -0
  321. data/node_modules/dc/node_modules/d3/src/interpolate/array.js +19 -0
  322. data/node_modules/dc/node_modules/d3/src/interpolate/ease.js +111 -0
  323. data/node_modules/dc/node_modules/d3/src/interpolate/hcl.js +20 -0
  324. data/node_modules/dc/node_modules/d3/src/interpolate/hsl.js +20 -0
  325. data/node_modules/dc/node_modules/d3/src/interpolate/index.js +14 -0
  326. data/node_modules/dc/node_modules/d3/src/interpolate/interpolate.js +26 -0
  327. data/node_modules/dc/node_modules/d3/src/interpolate/lab.js +17 -0
  328. data/node_modules/dc/node_modules/d3/src/interpolate/number.js +6 -0
  329. data/node_modules/dc/node_modules/d3/src/interpolate/object.js +25 -0
  330. data/node_modules/dc/node_modules/d3/src/interpolate/rgb.js +20 -0
  331. data/node_modules/dc/node_modules/d3/src/interpolate/round.js +6 -0
  332. data/node_modules/dc/node_modules/d3/src/interpolate/string.js +54 -0
  333. data/node_modules/dc/node_modules/d3/src/interpolate/transform.js +59 -0
  334. data/node_modules/dc/node_modules/d3/src/interpolate/uninterpolate.js +9 -0
  335. data/node_modules/dc/node_modules/d3/src/interpolate/zoom.js +53 -0
  336. data/node_modules/dc/node_modules/d3/src/layout/bundle.js +59 -0
  337. data/node_modules/dc/node_modules/d3/src/layout/chord.js +157 -0
  338. data/node_modules/dc/node_modules/d3/src/layout/cluster.js +92 -0
  339. data/node_modules/dc/node_modules/d3/src/layout/force.js +372 -0
  340. data/node_modules/dc/node_modules/d3/src/layout/hierarchy.js +136 -0
  341. data/node_modules/dc/node_modules/d3/src/layout/histogram.js +110 -0
  342. data/node_modules/dc/node_modules/d3/src/layout/index.js +13 -0
  343. data/node_modules/dc/node_modules/d3/src/layout/layout.js +1 -0
  344. data/node_modules/dc/node_modules/d3/src/layout/pack.js +211 -0
  345. data/node_modules/dc/node_modules/d3/src/layout/partition.js +51 -0
  346. data/node_modules/dc/node_modules/d3/src/layout/pie.js +78 -0
  347. data/node_modules/dc/node_modules/d3/src/layout/stack.js +247 -0
  348. data/node_modules/dc/node_modules/d3/src/layout/tree.js +240 -0
  349. data/node_modules/dc/node_modules/d3/src/layout/treemap.js +229 -0
  350. data/node_modules/dc/node_modules/d3/src/locale/ca-ES.js +16 -0
  351. data/node_modules/dc/node_modules/d3/src/locale/de-CH.js +16 -0
  352. data/node_modules/dc/node_modules/d3/src/locale/de-DE.js +16 -0
  353. data/node_modules/dc/node_modules/d3/src/locale/en-CA.js +16 -0
  354. data/node_modules/dc/node_modules/d3/src/locale/en-GB.js +16 -0
  355. data/node_modules/dc/node_modules/d3/src/locale/en-US.js +16 -0
  356. data/node_modules/dc/node_modules/d3/src/locale/es-ES.js +16 -0
  357. data/node_modules/dc/node_modules/d3/src/locale/fi-FI.js +16 -0
  358. data/node_modules/dc/node_modules/d3/src/locale/fr-CA.js +16 -0
  359. data/node_modules/dc/node_modules/d3/src/locale/fr-FR.js +16 -0
  360. data/node_modules/dc/node_modules/d3/src/locale/he-IL.js +16 -0
  361. data/node_modules/dc/node_modules/d3/src/locale/hu-HU.js +16 -0
  362. data/node_modules/dc/node_modules/d3/src/locale/it-IT.js +16 -0
  363. data/node_modules/dc/node_modules/d3/src/locale/ja-JP.js +16 -0
  364. data/node_modules/dc/node_modules/d3/src/locale/ko-KR.js +16 -0
  365. data/node_modules/dc/node_modules/d3/src/locale/locale.js +9 -0
  366. data/node_modules/dc/node_modules/d3/src/locale/mk-MK.js +16 -0
  367. data/node_modules/dc/node_modules/d3/src/locale/nl-NL.js +16 -0
  368. data/node_modules/dc/node_modules/d3/src/locale/number-format.js +155 -0
  369. data/node_modules/dc/node_modules/d3/src/locale/pl-PL.js +16 -0
  370. data/node_modules/dc/node_modules/d3/src/locale/pt-BR.js +16 -0
  371. data/node_modules/dc/node_modules/d3/src/locale/ru-RU.js +16 -0
  372. data/node_modules/dc/node_modules/d3/src/locale/sv-SE.js +16 -0
  373. data/node_modules/dc/node_modules/d3/src/locale/time-format.js +370 -0
  374. data/node_modules/dc/node_modules/d3/src/locale/time-scale.js +0 -0
  375. data/node_modules/dc/node_modules/d3/src/locale/zh-CN.js +16 -0
  376. data/node_modules/dc/node_modules/d3/src/math/abs.js +1 -0
  377. data/node_modules/dc/node_modules/d3/src/math/adder.js +34 -0
  378. data/node_modules/dc/node_modules/d3/src/math/index.js +2 -0
  379. data/node_modules/dc/node_modules/d3/src/math/number.js +7 -0
  380. data/node_modules/dc/node_modules/d3/src/math/random.js +34 -0
  381. data/node_modules/dc/node_modules/d3/src/math/transform.js +64 -0
  382. data/node_modules/dc/node_modules/d3/src/math/trigonometry.js +44 -0
  383. data/node_modules/dc/node_modules/d3/src/scale/bilinear.js +7 -0
  384. data/node_modules/dc/node_modules/d3/src/scale/category.js +58 -0
  385. data/node_modules/dc/node_modules/d3/src/scale/identity.js +33 -0
  386. data/node_modules/dc/node_modules/d3/src/scale/index.js +11 -0
  387. data/node_modules/dc/node_modules/d3/src/scale/linear.js +160 -0
  388. data/node_modules/dc/node_modules/d3/src/scale/log.js +92 -0
  389. data/node_modules/dc/node_modules/d3/src/scale/nice.js +30 -0
  390. data/node_modules/dc/node_modules/d3/src/scale/ordinal.js +102 -0
  391. data/node_modules/dc/node_modules/d3/src/scale/polylinear.js +24 -0
  392. data/node_modules/dc/node_modules/d3/src/scale/pow.js +57 -0
  393. data/node_modules/dc/node_modules/d3/src/scale/quantile.js +55 -0
  394. data/node_modules/dc/node_modules/d3/src/scale/quantize.js +44 -0
  395. data/node_modules/dc/node_modules/d3/src/scale/scale.js +10 -0
  396. data/node_modules/dc/node_modules/d3/src/scale/sqrt.js +6 -0
  397. data/node_modules/dc/node_modules/d3/src/scale/threshold.js +36 -0
  398. data/node_modules/dc/node_modules/d3/src/selection/append.js +28 -0
  399. data/node_modules/dc/node_modules/d3/src/selection/attr.js +62 -0
  400. data/node_modules/dc/node_modules/d3/src/selection/call.js +8 -0
  401. data/node_modules/dc/node_modules/d3/src/selection/classed.js +76 -0
  402. data/node_modules/dc/node_modules/d3/src/selection/data.js +117 -0
  403. data/node_modules/dc/node_modules/d3/src/selection/datum.js +7 -0
  404. data/node_modules/dc/node_modules/d3/src/selection/each.js +16 -0
  405. data/node_modules/dc/node_modules/d3/src/selection/empty.js +5 -0
  406. data/node_modules/dc/node_modules/d3/src/selection/enter-insert.js +20 -0
  407. data/node_modules/dc/node_modules/d3/src/selection/enter-select.js +27 -0
  408. data/node_modules/dc/node_modules/d3/src/selection/enter.js +21 -0
  409. data/node_modules/dc/node_modules/d3/src/selection/filter.js +28 -0
  410. data/node_modules/dc/node_modules/d3/src/selection/html.js +10 -0
  411. data/node_modules/dc/node_modules/d3/src/selection/index.js +1 -0
  412. data/node_modules/dc/node_modules/d3/src/selection/insert.js +9 -0
  413. data/node_modules/dc/node_modules/d3/src/selection/interrupt.js +27 -0
  414. data/node_modules/dc/node_modules/d3/src/selection/node.js +11 -0
  415. data/node_modules/dc/node_modules/d3/src/selection/on.js +106 -0
  416. data/node_modules/dc/node_modules/d3/src/selection/order.js +13 -0
  417. data/node_modules/dc/node_modules/d3/src/selection/property.js +43 -0
  418. data/node_modules/dc/node_modules/d3/src/selection/remove.js +13 -0
  419. data/node_modules/dc/node_modules/d3/src/selection/select.js +32 -0
  420. data/node_modules/dc/node_modules/d3/src/selection/selectAll.js +27 -0
  421. data/node_modules/dc/node_modules/d3/src/selection/selection.js +81 -0
  422. data/node_modules/dc/node_modules/d3/src/selection/size.js +7 -0
  423. data/node_modules/dc/node_modules/d3/src/selection/sort.js +15 -0
  424. data/node_modules/dc/node_modules/d3/src/selection/style.js +59 -0
  425. data/node_modules/dc/node_modules/d3/src/selection/text.js +10 -0
  426. data/node_modules/dc/node_modules/d3/src/selection/transition.js +21 -0
  427. data/node_modules/dc/node_modules/d3/src/start.js +2 -0
  428. data/node_modules/dc/node_modules/d3/src/svg/arc.js +292 -0
  429. data/node_modules/dc/node_modules/d3/src/svg/area-radial.js +14 -0
  430. data/node_modules/dc/node_modules/d3/src/svg/area.js +121 -0
  431. data/node_modules/dc/node_modules/d3/src/svg/axis.js +160 -0
  432. data/node_modules/dc/node_modules/d3/src/svg/brush.js +429 -0
  433. data/node_modules/dc/node_modules/d3/src/svg/chord.js +90 -0
  434. data/node_modules/dc/node_modules/d3/src/svg/diagonal-radial.js +27 -0
  435. data/node_modules/dc/node_modules/d3/src/svg/diagonal.js +43 -0
  436. data/node_modules/dc/node_modules/d3/src/svg/index.js +12 -0
  437. data/node_modules/dc/node_modules/d3/src/svg/line-radial.js +27 -0
  438. data/node_modules/dc/node_modules/d3/src/svg/line.js +432 -0
  439. data/node_modules/dc/node_modules/d3/src/svg/svg.js +1 -0
  440. data/node_modules/dc/node_modules/d3/src/svg/symbol.js +105 -0
  441. data/node_modules/dc/node_modules/d3/src/time/day.js +21 -0
  442. data/node_modules/dc/node_modules/d3/src/time/format-iso.js +19 -0
  443. data/node_modules/dc/node_modules/d3/src/time/format-utc.js +3 -0
  444. data/node_modules/dc/node_modules/d3/src/time/format.js +4 -0
  445. data/node_modules/dc/node_modules/d3/src/time/hour.js +14 -0
  446. data/node_modules/dc/node_modules/d3/src/time/index.js +14 -0
  447. data/node_modules/dc/node_modules/d3/src/time/interval.js +71 -0
  448. data/node_modules/dc/node_modules/d3/src/time/minute.js +13 -0
  449. data/node_modules/dc/node_modules/d3/src/time/month.js +16 -0
  450. data/node_modules/dc/node_modules/d3/src/time/scale-utc.js +25 -0
  451. data/node_modules/dc/node_modules/d3/src/time/scale.js +155 -0
  452. data/node_modules/dc/node_modules/d3/src/time/second.js +13 -0
  453. data/node_modules/dc/node_modules/d3/src/time/time.js +33 -0
  454. data/node_modules/dc/node_modules/d3/src/time/week.js +31 -0
  455. data/node_modules/dc/node_modules/d3/src/time/year.js +16 -0
  456. data/node_modules/dc/node_modules/d3/src/transition/attr.js +58 -0
  457. data/node_modules/dc/node_modules/d3/src/transition/delay.js +10 -0
  458. data/node_modules/dc/node_modules/d3/src/transition/duration.js +10 -0
  459. data/node_modules/dc/node_modules/d3/src/transition/each.js +26 -0
  460. data/node_modules/dc/node_modules/d3/src/transition/ease.js +10 -0
  461. data/node_modules/dc/node_modules/d3/src/transition/filter.js +22 -0
  462. data/node_modules/dc/node_modules/d3/src/transition/index.js +1 -0
  463. data/node_modules/dc/node_modules/d3/src/transition/remove.js +9 -0
  464. data/node_modules/dc/node_modules/d3/src/transition/select.js +28 -0
  465. data/node_modules/dc/node_modules/d3/src/transition/selectAll.js +31 -0
  466. data/node_modules/dc/node_modules/d3/src/transition/style.js +53 -0
  467. data/node_modules/dc/node_modules/d3/src/transition/subtransition.js +25 -0
  468. data/node_modules/dc/node_modules/d3/src/transition/text.js +11 -0
  469. data/node_modules/dc/node_modules/d3/src/transition/transition.js +161 -0
  470. data/node_modules/dc/node_modules/d3/src/transition/tween.js +17 -0
  471. data/node_modules/dc/node_modules/d3/src/xhr/html.js +12 -0
  472. data/node_modules/dc/node_modules/d3/src/xhr/index.js +5 -0
  473. data/node_modules/dc/node_modules/d3/src/xhr/json.js +9 -0
  474. data/node_modules/dc/node_modules/d3/src/xhr/text.js +5 -0
  475. data/node_modules/dc/node_modules/d3/src/xhr/xhr.js +126 -0
  476. data/node_modules/dc/node_modules/d3/src/xhr/xml.js +5 -0
  477. data/node_modules/dc/regression/inject-serializer.js +6 -0
  478. data/node_modules/dc/regression/stock-regression-test.js +140 -0
  479. data/node_modules/dc/spec/bar-chart-spec.js +1230 -0
  480. data/node_modules/dc/spec/base-mixin-spec.js +611 -0
  481. data/node_modules/dc/spec/biggish-data-spec.js +136 -0
  482. data/node_modules/dc/spec/box-plot-spec.js +211 -0
  483. data/node_modules/dc/spec/bubble-chart-spec.js +450 -0
  484. data/node_modules/dc/spec/bubble-overlay-spec.js +102 -0
  485. data/node_modules/dc/spec/color-spec.js +89 -0
  486. data/node_modules/dc/spec/composite-chart-spec.js +691 -0
  487. data/node_modules/dc/spec/coordinate-grid-chart-spec.js +962 -0
  488. data/node_modules/dc/spec/core-spec.js +301 -0
  489. data/node_modules/dc/spec/data-addition-spec.js +122 -0
  490. data/node_modules/dc/spec/data-count-spec.js +180 -0
  491. data/node_modules/dc/spec/data-grid-spec.js +124 -0
  492. data/node_modules/dc/spec/data-table-spec.js +251 -0
  493. data/node_modules/dc/spec/event-spec.js +41 -0
  494. data/node_modules/dc/spec/filter-dates-spec.js +92 -0
  495. data/node_modules/dc/spec/filters-spec.js +140 -0
  496. data/node_modules/dc/spec/geo-choropleth-chart-spec.js +225 -0
  497. data/node_modules/dc/spec/heatmap-spec.js +363 -0
  498. data/node_modules/dc/spec/helpers/custom_matchers.js +213 -0
  499. data/node_modules/dc/spec/helpers/fixtures.js +81 -0
  500. data/node_modules/dc/spec/helpers/geoFixtures.js +113 -0
  501. data/node_modules/dc/spec/helpers/load-jsreporter.js +37 -0
  502. data/node_modules/dc/spec/helpers/spec-helper.js +53 -0
  503. data/node_modules/dc/spec/legend-spec.js +266 -0
  504. data/node_modules/dc/spec/line-chart-spec.js +709 -0
  505. data/node_modules/dc/spec/logger-spec.js +80 -0
  506. data/node_modules/dc/spec/number-display-spec.js +168 -0
  507. data/node_modules/dc/spec/pie-chart-spec.js +677 -0
  508. data/node_modules/dc/spec/row-chart-spec.js +362 -0
  509. data/node_modules/dc/spec/scatter-plot-spec.js +336 -0
  510. data/node_modules/dc/spec/series-chart-spec.js +133 -0
  511. data/node_modules/dc/spec/utils-spec.js +110 -0
  512. data/node_modules/dc/src/banner.js +2 -0
  513. data/node_modules/dc/src/bar-chart.js +374 -0
  514. data/node_modules/dc/src/base-mixin.js +1478 -0
  515. data/node_modules/dc/src/box-plot.js +240 -0
  516. data/node_modules/dc/src/bubble-chart.js +177 -0
  517. data/node_modules/dc/src/bubble-mixin.js +244 -0
  518. data/node_modules/dc/src/bubble-overlay.js +207 -0
  519. data/node_modules/dc/src/cap-mixin.js +151 -0
  520. data/node_modules/dc/src/color-mixin.js +172 -0
  521. data/node_modules/dc/src/composite-chart.js +544 -0
  522. data/node_modules/dc/src/coordinate-grid-mixin.js +1300 -0
  523. data/node_modules/dc/src/core.js +425 -0
  524. data/node_modules/dc/src/d3.box.js +317 -0
  525. data/node_modules/dc/src/data-count.js +110 -0
  526. data/node_modules/dc/src/data-grid.js +243 -0
  527. data/node_modules/dc/src/data-table.js +419 -0
  528. data/node_modules/dc/src/errors.js +28 -0
  529. data/node_modules/dc/src/events.js +37 -0
  530. data/node_modules/dc/src/filters.js +124 -0
  531. data/node_modules/dc/src/footer.js +35 -0
  532. data/node_modules/dc/src/geo-choropleth-chart.js +279 -0
  533. data/node_modules/dc/src/heatmap.js +378 -0
  534. data/node_modules/dc/src/legend.js +277 -0
  535. data/node_modules/dc/src/line-chart.js +504 -0
  536. data/node_modules/dc/src/logger.js +40 -0
  537. data/node_modules/dc/src/margin-mixin.js +44 -0
  538. data/node_modules/dc/src/number-display.js +141 -0
  539. data/node_modules/dc/src/pie-chart.js +571 -0
  540. data/node_modules/dc/src/row-chart.js +425 -0
  541. data/node_modules/dc/src/scatter-plot.js +338 -0
  542. data/node_modules/dc/src/series-chart.js +192 -0
  543. data/node_modules/dc/src/stack-mixin.js +319 -0
  544. data/node_modules/dc/src/utils.js +290 -0
  545. data/node_modules/dc/web/docs/html/scripts/docstrap.lib.js +11 -0
  546. data/node_modules/dc/web/docs/html/scripts/fulltext-search-ui.js +89 -0
  547. data/node_modules/dc/web/docs/html/scripts/fulltext-search.js +36 -0
  548. data/node_modules/dc/web/docs/html/scripts/lunr.min.js +7 -0
  549. data/node_modules/dc/web/docs/html/scripts/prettify/jquery.min.js +6 -0
  550. data/node_modules/dc/web/docs/html/scripts/prettify/lang-css.js +21 -0
  551. data/node_modules/dc/web/docs/html/scripts/prettify/prettify.js +496 -0
  552. data/node_modules/dc/web/docs/html/scripts/sunlight.js +1157 -0
  553. data/node_modules/dc/web/docs/html/scripts/toc.js +203 -0
  554. data/node_modules/dc/web/ep/list.js +106 -0
  555. data/node_modules/dc/web/examples/lysenko-interval-tree.js +447 -0
  556. data/node_modules/dc/web/highlighter/shAutoloader.js +17 -0
  557. data/node_modules/dc/web/highlighter/shBrushJScript.js +52 -0
  558. data/node_modules/dc/web/highlighter/shBrushXml.js +69 -0
  559. data/node_modules/dc/web/highlighter/shCore.js +17 -0
  560. data/node_modules/dc/web/js/colorbrewer.js +1 -0
  561. data/node_modules/dc/web/js/crossfilter.js +1401 -0
  562. data/node_modules/dc/web/js/d3.js +9554 -0
  563. data/node_modules/dc/web/js/dc.js +10477 -0
  564. data/node_modules/dc/web/js/dc.min.js +23 -0
  565. data/node_modules/dc/web/js/env-data.js +218 -0
  566. data/node_modules/dc/web/js/jasmine-jsreporter.js +394 -0
  567. data/node_modules/dc/web/stock.js +685 -0
  568. data/node_modules/dc/web/transitions/transition-test.js +45 -0
  569. data/node_modules/jquery/dist/jquery.js +9814 -0
  570. data/node_modules/jquery/dist/jquery.min.js +4 -0
  571. data/node_modules/jquery/external/sizzle/dist/sizzle.js +2143 -0
  572. data/node_modules/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  573. data/node_modules/jquery/src/ajax.js +845 -0
  574. data/node_modules/jquery/src/ajax/jsonp.js +100 -0
  575. data/node_modules/jquery/src/ajax/load.js +83 -0
  576. data/node_modules/jquery/src/ajax/parseJSON.js +13 -0
  577. data/node_modules/jquery/src/ajax/parseXML.js +27 -0
  578. data/node_modules/jquery/src/ajax/script.js +68 -0
  579. data/node_modules/jquery/src/ajax/var/location.js +3 -0
  580. data/node_modules/jquery/src/ajax/var/nonce.js +5 -0
  581. data/node_modules/jquery/src/ajax/var/rquery.js +3 -0
  582. data/node_modules/jquery/src/ajax/xhr.js +167 -0
  583. data/node_modules/jquery/src/attributes.js +11 -0
  584. data/node_modules/jquery/src/attributes/attr.js +142 -0
  585. data/node_modules/jquery/src/attributes/classes.js +177 -0
  586. data/node_modules/jquery/src/attributes/prop.js +125 -0
  587. data/node_modules/jquery/src/attributes/support.js +36 -0
  588. data/node_modules/jquery/src/attributes/val.js +177 -0
  589. data/node_modules/jquery/src/callbacks.js +232 -0
  590. data/node_modules/jquery/src/core.js +494 -0
  591. data/node_modules/jquery/src/core/access.js +65 -0
  592. data/node_modules/jquery/src/core/init.js +134 -0
  593. data/node_modules/jquery/src/core/parseHTML.js +41 -0
  594. data/node_modules/jquery/src/core/ready.js +103 -0
  595. data/node_modules/jquery/src/core/var/rsingleTag.js +5 -0
  596. data/node_modules/jquery/src/css.js +502 -0
  597. data/node_modules/jquery/src/css/addGetHookIf.js +24 -0
  598. data/node_modules/jquery/src/css/adjustCSS.js +65 -0
  599. data/node_modules/jquery/src/css/curCSS.js +60 -0
  600. data/node_modules/jquery/src/css/defaultDisplay.js +72 -0
  601. data/node_modules/jquery/src/css/hiddenVisibleSelectors.js +18 -0
  602. data/node_modules/jquery/src/css/showHide.js +48 -0
  603. data/node_modules/jquery/src/css/support.js +121 -0
  604. data/node_modules/jquery/src/css/var/cssExpand.js +3 -0
  605. data/node_modules/jquery/src/css/var/getStyles.js +15 -0
  606. data/node_modules/jquery/src/css/var/isHidden.js +16 -0
  607. data/node_modules/jquery/src/css/var/rmargin.js +3 -0
  608. data/node_modules/jquery/src/css/var/rnumnonpx.js +5 -0
  609. data/node_modules/jquery/src/css/var/swap.js +24 -0
  610. data/node_modules/jquery/src/data.js +187 -0
  611. data/node_modules/jquery/src/data/Data.js +200 -0
  612. data/node_modules/jquery/src/data/var/acceptData.js +18 -0
  613. data/node_modules/jquery/src/data/var/dataPriv.js +5 -0
  614. data/node_modules/jquery/src/data/var/dataUser.js +5 -0
  615. data/node_modules/jquery/src/deferred.js +158 -0
  616. data/node_modules/jquery/src/deprecated.js +32 -0
  617. data/node_modules/jquery/src/dimensions.js +54 -0
  618. data/node_modules/jquery/src/effects.js +629 -0
  619. data/node_modules/jquery/src/effects/Tween.js +121 -0
  620. data/node_modules/jquery/src/effects/animatedSelector.js +13 -0
  621. data/node_modules/jquery/src/event.js +711 -0
  622. data/node_modules/jquery/src/event/ajax.js +20 -0
  623. data/node_modules/jquery/src/event/alias.js +27 -0
  624. data/node_modules/jquery/src/event/focusin.js +53 -0
  625. data/node_modules/jquery/src/event/support.js +9 -0
  626. data/node_modules/jquery/src/event/trigger.js +183 -0
  627. data/node_modules/jquery/src/exports/amd.js +24 -0
  628. data/node_modules/jquery/src/exports/global.js +26 -0
  629. data/node_modules/jquery/src/intro.js +44 -0
  630. data/node_modules/jquery/src/jquery.js +37 -0
  631. data/node_modules/jquery/src/manipulation.js +481 -0
  632. data/node_modules/jquery/src/manipulation/_evalUrl.js +20 -0
  633. data/node_modules/jquery/src/manipulation/buildFragment.js +102 -0
  634. data/node_modules/jquery/src/manipulation/getAll.js +21 -0
  635. data/node_modules/jquery/src/manipulation/setGlobalEval.js +20 -0
  636. data/node_modules/jquery/src/manipulation/support.js +33 -0
  637. data/node_modules/jquery/src/manipulation/var/rcheckableType.js +3 -0
  638. data/node_modules/jquery/src/manipulation/var/rscriptType.js +3 -0
  639. data/node_modules/jquery/src/manipulation/var/rtagName.js +3 -0
  640. data/node_modules/jquery/src/manipulation/wrapMap.js +27 -0
  641. data/node_modules/jquery/src/offset.js +218 -0
  642. data/node_modules/jquery/src/outro.js +2 -0
  643. data/node_modules/jquery/src/queue.js +143 -0
  644. data/node_modules/jquery/src/queue/delay.js +22 -0
  645. data/node_modules/jquery/src/selector-native.js +211 -0
  646. data/node_modules/jquery/src/selector-sizzle.js +14 -0
  647. data/node_modules/jquery/src/selector.js +1 -0
  648. data/node_modules/jquery/src/serialize.js +125 -0
  649. data/node_modules/jquery/src/traversing.js +175 -0
  650. data/node_modules/jquery/src/traversing/findFilter.js +100 -0
  651. data/node_modules/jquery/src/traversing/var/dir.js +20 -0
  652. data/node_modules/jquery/src/traversing/var/rneedsContext.js +6 -0
  653. data/node_modules/jquery/src/traversing/var/siblings.js +15 -0
  654. data/node_modules/jquery/src/var/arr.js +3 -0
  655. data/node_modules/jquery/src/var/class2type.js +5 -0
  656. data/node_modules/jquery/src/var/concat.js +5 -0
  657. data/node_modules/jquery/src/var/document.js +3 -0
  658. data/node_modules/jquery/src/var/documentElement.js +5 -0
  659. data/node_modules/jquery/src/var/hasOwn.js +5 -0
  660. data/node_modules/jquery/src/var/indexOf.js +5 -0
  661. data/node_modules/jquery/src/var/pnum.js +3 -0
  662. data/node_modules/jquery/src/var/push.js +5 -0
  663. data/node_modules/jquery/src/var/rcssNum.js +7 -0
  664. data/node_modules/jquery/src/var/rnotwhite.js +3 -0
  665. data/node_modules/jquery/src/var/slice.js +5 -0
  666. data/node_modules/jquery/src/var/support.js +5 -0
  667. data/node_modules/jquery/src/var/toString.js +5 -0
  668. data/node_modules/jquery/src/wrap.js +79 -0
  669. data/target/mdarray_sol.jar +0 -0
  670. data/test/jx/test_complete.rb +35 -0
  671. data/test/jx/test_js.rb +543 -0
  672. data/test/jx/test_proxy_array.rb +239 -0
  673. data/test/jx/test_proxy_hash.rb +160 -0
  674. data/test/jx/test_proxy_lambda.rb +80 -0
  675. data/test/jx/test_rb_js_compat.rb +135 -0
  676. data/test/jx/test_style_sheets.rb +90 -0
  677. data/test/mdarray/test_mdarray.rb +75 -0
  678. data/util/cacert.pem +4095 -0
  679. data/util/download.rb +256 -0
  680. data/vendor/jxbrowser-6.8.jar +0 -0
  681. data/vendor/licence.jar +0 -0
  682. data/version.rb +2 -0
  683. metadata +817 -0
@@ -0,0 +1,1645 @@
1
+ /*!
2
+ * chai
3
+ * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>
4
+ * MIT Licensed
5
+ */
6
+
7
+
8
+ module.exports = function (chai, util) {
9
+
10
+ /*!
11
+ * Chai dependencies.
12
+ */
13
+
14
+ var Assertion = chai.Assertion
15
+ , flag = util.flag;
16
+
17
+ /*!
18
+ * Module export.
19
+ */
20
+
21
+ /**
22
+ * ### assert(expression, message)
23
+ *
24
+ * Write your own test expressions.
25
+ *
26
+ * assert('foo' !== 'bar', 'foo is not bar');
27
+ * assert(Array.isArray([]), 'empty arrays are arrays');
28
+ *
29
+ * @param {Mixed} expression to test for truthiness
30
+ * @param {String} message to display on error
31
+ * @name assert
32
+ * @namespace Assert
33
+ * @api public
34
+ */
35
+
36
+ var assert = chai.assert = function (express, errmsg) {
37
+ var test = new Assertion(null, null, chai.assert);
38
+ test.assert(
39
+ express
40
+ , errmsg
41
+ , '[ negation message unavailable ]'
42
+ );
43
+ };
44
+
45
+ /**
46
+ * ### .fail(actual, expected, [message], [operator])
47
+ *
48
+ * Throw a failure. Node.js `assert` module-compatible.
49
+ *
50
+ * @name fail
51
+ * @param {Mixed} actual
52
+ * @param {Mixed} expected
53
+ * @param {String} message
54
+ * @param {String} operator
55
+ * @namespace Assert
56
+ * @api public
57
+ */
58
+
59
+ assert.fail = function (actual, expected, message, operator) {
60
+ message = message || 'assert.fail()';
61
+ throw new chai.AssertionError(message, {
62
+ actual: actual
63
+ , expected: expected
64
+ , operator: operator
65
+ }, assert.fail);
66
+ };
67
+
68
+ /**
69
+ * ### .isOk(object, [message])
70
+ *
71
+ * Asserts that `object` is truthy.
72
+ *
73
+ * assert.isOk('everything', 'everything is ok');
74
+ * assert.isOk(false, 'this will fail');
75
+ *
76
+ * @name isOk
77
+ * @alias ok
78
+ * @param {Mixed} object to test
79
+ * @param {String} message
80
+ * @namespace Assert
81
+ * @api public
82
+ */
83
+
84
+ assert.isOk = function (val, msg) {
85
+ new Assertion(val, msg).is.ok;
86
+ };
87
+
88
+ /**
89
+ * ### .isNotOk(object, [message])
90
+ *
91
+ * Asserts that `object` is falsy.
92
+ *
93
+ * assert.isNotOk('everything', 'this will fail');
94
+ * assert.isNotOk(false, 'this will pass');
95
+ *
96
+ * @name isNotOk
97
+ * @alias notOk
98
+ * @param {Mixed} object to test
99
+ * @param {String} message
100
+ * @namespace Assert
101
+ * @api public
102
+ */
103
+
104
+ assert.isNotOk = function (val, msg) {
105
+ new Assertion(val, msg).is.not.ok;
106
+ };
107
+
108
+ /**
109
+ * ### .equal(actual, expected, [message])
110
+ *
111
+ * Asserts non-strict equality (`==`) of `actual` and `expected`.
112
+ *
113
+ * assert.equal(3, '3', '== coerces values to strings');
114
+ *
115
+ * @name equal
116
+ * @param {Mixed} actual
117
+ * @param {Mixed} expected
118
+ * @param {String} message
119
+ * @namespace Assert
120
+ * @api public
121
+ */
122
+
123
+ assert.equal = function (act, exp, msg) {
124
+ var test = new Assertion(act, msg, assert.equal);
125
+
126
+ test.assert(
127
+ exp == flag(test, 'object')
128
+ , 'expected #{this} to equal #{exp}'
129
+ , 'expected #{this} to not equal #{act}'
130
+ , exp
131
+ , act
132
+ );
133
+ };
134
+
135
+ /**
136
+ * ### .notEqual(actual, expected, [message])
137
+ *
138
+ * Asserts non-strict inequality (`!=`) of `actual` and `expected`.
139
+ *
140
+ * assert.notEqual(3, 4, 'these numbers are not equal');
141
+ *
142
+ * @name notEqual
143
+ * @param {Mixed} actual
144
+ * @param {Mixed} expected
145
+ * @param {String} message
146
+ * @namespace Assert
147
+ * @api public
148
+ */
149
+
150
+ assert.notEqual = function (act, exp, msg) {
151
+ var test = new Assertion(act, msg, assert.notEqual);
152
+
153
+ test.assert(
154
+ exp != flag(test, 'object')
155
+ , 'expected #{this} to not equal #{exp}'
156
+ , 'expected #{this} to equal #{act}'
157
+ , exp
158
+ , act
159
+ );
160
+ };
161
+
162
+ /**
163
+ * ### .strictEqual(actual, expected, [message])
164
+ *
165
+ * Asserts strict equality (`===`) of `actual` and `expected`.
166
+ *
167
+ * assert.strictEqual(true, true, 'these booleans are strictly equal');
168
+ *
169
+ * @name strictEqual
170
+ * @param {Mixed} actual
171
+ * @param {Mixed} expected
172
+ * @param {String} message
173
+ * @namespace Assert
174
+ * @api public
175
+ */
176
+
177
+ assert.strictEqual = function (act, exp, msg) {
178
+ new Assertion(act, msg).to.equal(exp);
179
+ };
180
+
181
+ /**
182
+ * ### .notStrictEqual(actual, expected, [message])
183
+ *
184
+ * Asserts strict inequality (`!==`) of `actual` and `expected`.
185
+ *
186
+ * assert.notStrictEqual(3, '3', 'no coercion for strict equality');
187
+ *
188
+ * @name notStrictEqual
189
+ * @param {Mixed} actual
190
+ * @param {Mixed} expected
191
+ * @param {String} message
192
+ * @namespace Assert
193
+ * @api public
194
+ */
195
+
196
+ assert.notStrictEqual = function (act, exp, msg) {
197
+ new Assertion(act, msg).to.not.equal(exp);
198
+ };
199
+
200
+ /**
201
+ * ### .deepEqual(actual, expected, [message])
202
+ *
203
+ * Asserts that `actual` is deeply equal to `expected`.
204
+ *
205
+ * assert.deepEqual({ tea: 'green' }, { tea: 'green' });
206
+ *
207
+ * @name deepEqual
208
+ * @param {Mixed} actual
209
+ * @param {Mixed} expected
210
+ * @param {String} message
211
+ * @namespace Assert
212
+ * @api public
213
+ */
214
+
215
+ assert.deepEqual = function (act, exp, msg) {
216
+ new Assertion(act, msg).to.eql(exp);
217
+ };
218
+
219
+ /**
220
+ * ### .notDeepEqual(actual, expected, [message])
221
+ *
222
+ * Assert that `actual` is not deeply equal to `expected`.
223
+ *
224
+ * assert.notDeepEqual({ tea: 'green' }, { tea: 'jasmine' });
225
+ *
226
+ * @name notDeepEqual
227
+ * @param {Mixed} actual
228
+ * @param {Mixed} expected
229
+ * @param {String} message
230
+ * @namespace Assert
231
+ * @api public
232
+ */
233
+
234
+ assert.notDeepEqual = function (act, exp, msg) {
235
+ new Assertion(act, msg).to.not.eql(exp);
236
+ };
237
+
238
+ /**
239
+ * ### .isAbove(valueToCheck, valueToBeAbove, [message])
240
+ *
241
+ * Asserts `valueToCheck` is strictly greater than (>) `valueToBeAbove`
242
+ *
243
+ * assert.isAbove(5, 2, '5 is strictly greater than 2');
244
+ *
245
+ * @name isAbove
246
+ * @param {Mixed} valueToCheck
247
+ * @param {Mixed} valueToBeAbove
248
+ * @param {String} message
249
+ * @namespace Assert
250
+ * @api public
251
+ */
252
+
253
+ assert.isAbove = function (val, abv, msg) {
254
+ new Assertion(val, msg).to.be.above(abv);
255
+ };
256
+
257
+ /**
258
+ * ### .isAtLeast(valueToCheck, valueToBeAtLeast, [message])
259
+ *
260
+ * Asserts `valueToCheck` is greater than or equal to (>=) `valueToBeAtLeast`
261
+ *
262
+ * assert.isAtLeast(5, 2, '5 is greater or equal to 2');
263
+ * assert.isAtLeast(3, 3, '3 is greater or equal to 3');
264
+ *
265
+ * @name isAtLeast
266
+ * @param {Mixed} valueToCheck
267
+ * @param {Mixed} valueToBeAtLeast
268
+ * @param {String} message
269
+ * @namespace Assert
270
+ * @api public
271
+ */
272
+
273
+ assert.isAtLeast = function (val, atlst, msg) {
274
+ new Assertion(val, msg).to.be.least(atlst);
275
+ };
276
+
277
+ /**
278
+ * ### .isBelow(valueToCheck, valueToBeBelow, [message])
279
+ *
280
+ * Asserts `valueToCheck` is strictly less than (<) `valueToBeBelow`
281
+ *
282
+ * assert.isBelow(3, 6, '3 is strictly less than 6');
283
+ *
284
+ * @name isBelow
285
+ * @param {Mixed} valueToCheck
286
+ * @param {Mixed} valueToBeBelow
287
+ * @param {String} message
288
+ * @namespace Assert
289
+ * @api public
290
+ */
291
+
292
+ assert.isBelow = function (val, blw, msg) {
293
+ new Assertion(val, msg).to.be.below(blw);
294
+ };
295
+
296
+ /**
297
+ * ### .isAtMost(valueToCheck, valueToBeAtMost, [message])
298
+ *
299
+ * Asserts `valueToCheck` is less than or equal to (<=) `valueToBeAtMost`
300
+ *
301
+ * assert.isAtMost(3, 6, '3 is less than or equal to 6');
302
+ * assert.isAtMost(4, 4, '4 is less than or equal to 4');
303
+ *
304
+ * @name isAtMost
305
+ * @param {Mixed} valueToCheck
306
+ * @param {Mixed} valueToBeAtMost
307
+ * @param {String} message
308
+ * @namespace Assert
309
+ * @api public
310
+ */
311
+
312
+ assert.isAtMost = function (val, atmst, msg) {
313
+ new Assertion(val, msg).to.be.most(atmst);
314
+ };
315
+
316
+ /**
317
+ * ### .isTrue(value, [message])
318
+ *
319
+ * Asserts that `value` is true.
320
+ *
321
+ * var teaServed = true;
322
+ * assert.isTrue(teaServed, 'the tea has been served');
323
+ *
324
+ * @name isTrue
325
+ * @param {Mixed} value
326
+ * @param {String} message
327
+ * @namespace Assert
328
+ * @api public
329
+ */
330
+
331
+ assert.isTrue = function (val, msg) {
332
+ new Assertion(val, msg).is['true'];
333
+ };
334
+
335
+ /**
336
+ * ### .isNotTrue(value, [message])
337
+ *
338
+ * Asserts that `value` is not true.
339
+ *
340
+ * var tea = 'tasty chai';
341
+ * assert.isNotTrue(tea, 'great, time for tea!');
342
+ *
343
+ * @name isNotTrue
344
+ * @param {Mixed} value
345
+ * @param {String} message
346
+ * @namespace Assert
347
+ * @api public
348
+ */
349
+
350
+ assert.isNotTrue = function (val, msg) {
351
+ new Assertion(val, msg).to.not.equal(true);
352
+ };
353
+
354
+ /**
355
+ * ### .isFalse(value, [message])
356
+ *
357
+ * Asserts that `value` is false.
358
+ *
359
+ * var teaServed = false;
360
+ * assert.isFalse(teaServed, 'no tea yet? hmm...');
361
+ *
362
+ * @name isFalse
363
+ * @param {Mixed} value
364
+ * @param {String} message
365
+ * @namespace Assert
366
+ * @api public
367
+ */
368
+
369
+ assert.isFalse = function (val, msg) {
370
+ new Assertion(val, msg).is['false'];
371
+ };
372
+
373
+ /**
374
+ * ### .isNotFalse(value, [message])
375
+ *
376
+ * Asserts that `value` is not false.
377
+ *
378
+ * var tea = 'tasty chai';
379
+ * assert.isNotFalse(tea, 'great, time for tea!');
380
+ *
381
+ * @name isNotFalse
382
+ * @param {Mixed} value
383
+ * @param {String} message
384
+ * @namespace Assert
385
+ * @api public
386
+ */
387
+
388
+ assert.isNotFalse = function (val, msg) {
389
+ new Assertion(val, msg).to.not.equal(false);
390
+ };
391
+
392
+ /**
393
+ * ### .isNull(value, [message])
394
+ *
395
+ * Asserts that `value` is null.
396
+ *
397
+ * assert.isNull(err, 'there was no error');
398
+ *
399
+ * @name isNull
400
+ * @param {Mixed} value
401
+ * @param {String} message
402
+ * @namespace Assert
403
+ * @api public
404
+ */
405
+
406
+ assert.isNull = function (val, msg) {
407
+ new Assertion(val, msg).to.equal(null);
408
+ };
409
+
410
+ /**
411
+ * ### .isNotNull(value, [message])
412
+ *
413
+ * Asserts that `value` is not null.
414
+ *
415
+ * var tea = 'tasty chai';
416
+ * assert.isNotNull(tea, 'great, time for tea!');
417
+ *
418
+ * @name isNotNull
419
+ * @param {Mixed} value
420
+ * @param {String} message
421
+ * @namespace Assert
422
+ * @api public
423
+ */
424
+
425
+ assert.isNotNull = function (val, msg) {
426
+ new Assertion(val, msg).to.not.equal(null);
427
+ };
428
+
429
+ /**
430
+ * ### .isNaN
431
+ * Asserts that value is NaN
432
+ *
433
+ * assert.isNaN('foo', 'foo is NaN');
434
+ *
435
+ * @name isNaN
436
+ * @param {Mixed} value
437
+ * @param {String} message
438
+ * @namespace Assert
439
+ * @api public
440
+ */
441
+
442
+ assert.isNaN = function (val, msg) {
443
+ new Assertion(val, msg).to.be.NaN;
444
+ };
445
+
446
+ /**
447
+ * ### .isNotNaN
448
+ * Asserts that value is not NaN
449
+ *
450
+ * assert.isNotNaN(4, '4 is not NaN');
451
+ *
452
+ * @name isNotNaN
453
+ * @param {Mixed} value
454
+ * @param {String} message
455
+ * @namespace Assert
456
+ * @api public
457
+ */
458
+ assert.isNotNaN = function (val, msg) {
459
+ new Assertion(val, msg).not.to.be.NaN;
460
+ };
461
+
462
+ /**
463
+ * ### .isUndefined(value, [message])
464
+ *
465
+ * Asserts that `value` is `undefined`.
466
+ *
467
+ * var tea;
468
+ * assert.isUndefined(tea, 'no tea defined');
469
+ *
470
+ * @name isUndefined
471
+ * @param {Mixed} value
472
+ * @param {String} message
473
+ * @namespace Assert
474
+ * @api public
475
+ */
476
+
477
+ assert.isUndefined = function (val, msg) {
478
+ new Assertion(val, msg).to.equal(undefined);
479
+ };
480
+
481
+ /**
482
+ * ### .isDefined(value, [message])
483
+ *
484
+ * Asserts that `value` is not `undefined`.
485
+ *
486
+ * var tea = 'cup of chai';
487
+ * assert.isDefined(tea, 'tea has been defined');
488
+ *
489
+ * @name isDefined
490
+ * @param {Mixed} value
491
+ * @param {String} message
492
+ * @namespace Assert
493
+ * @api public
494
+ */
495
+
496
+ assert.isDefined = function (val, msg) {
497
+ new Assertion(val, msg).to.not.equal(undefined);
498
+ };
499
+
500
+ /**
501
+ * ### .isFunction(value, [message])
502
+ *
503
+ * Asserts that `value` is a function.
504
+ *
505
+ * function serveTea() { return 'cup of tea'; };
506
+ * assert.isFunction(serveTea, 'great, we can have tea now');
507
+ *
508
+ * @name isFunction
509
+ * @param {Mixed} value
510
+ * @param {String} message
511
+ * @namespace Assert
512
+ * @api public
513
+ */
514
+
515
+ assert.isFunction = function (val, msg) {
516
+ new Assertion(val, msg).to.be.a('function');
517
+ };
518
+
519
+ /**
520
+ * ### .isNotFunction(value, [message])
521
+ *
522
+ * Asserts that `value` is _not_ a function.
523
+ *
524
+ * var serveTea = [ 'heat', 'pour', 'sip' ];
525
+ * assert.isNotFunction(serveTea, 'great, we have listed the steps');
526
+ *
527
+ * @name isNotFunction
528
+ * @param {Mixed} value
529
+ * @param {String} message
530
+ * @namespace Assert
531
+ * @api public
532
+ */
533
+
534
+ assert.isNotFunction = function (val, msg) {
535
+ new Assertion(val, msg).to.not.be.a('function');
536
+ };
537
+
538
+ /**
539
+ * ### .isObject(value, [message])
540
+ *
541
+ * Asserts that `value` is an object of type 'Object' (as revealed by `Object.prototype.toString`).
542
+ * _The assertion does not match subclassed objects._
543
+ *
544
+ * var selection = { name: 'Chai', serve: 'with spices' };
545
+ * assert.isObject(selection, 'tea selection is an object');
546
+ *
547
+ * @name isObject
548
+ * @param {Mixed} value
549
+ * @param {String} message
550
+ * @namespace Assert
551
+ * @api public
552
+ */
553
+
554
+ assert.isObject = function (val, msg) {
555
+ new Assertion(val, msg).to.be.a('object');
556
+ };
557
+
558
+ /**
559
+ * ### .isNotObject(value, [message])
560
+ *
561
+ * Asserts that `value` is _not_ an object of type 'Object' (as revealed by `Object.prototype.toString`).
562
+ *
563
+ * var selection = 'chai'
564
+ * assert.isNotObject(selection, 'tea selection is not an object');
565
+ * assert.isNotObject(null, 'null is not an object');
566
+ *
567
+ * @name isNotObject
568
+ * @param {Mixed} value
569
+ * @param {String} message
570
+ * @namespace Assert
571
+ * @api public
572
+ */
573
+
574
+ assert.isNotObject = function (val, msg) {
575
+ new Assertion(val, msg).to.not.be.a('object');
576
+ };
577
+
578
+ /**
579
+ * ### .isArray(value, [message])
580
+ *
581
+ * Asserts that `value` is an array.
582
+ *
583
+ * var menu = [ 'green', 'chai', 'oolong' ];
584
+ * assert.isArray(menu, 'what kind of tea do we want?');
585
+ *
586
+ * @name isArray
587
+ * @param {Mixed} value
588
+ * @param {String} message
589
+ * @namespace Assert
590
+ * @api public
591
+ */
592
+
593
+ assert.isArray = function (val, msg) {
594
+ new Assertion(val, msg).to.be.an('array');
595
+ };
596
+
597
+ /**
598
+ * ### .isNotArray(value, [message])
599
+ *
600
+ * Asserts that `value` is _not_ an array.
601
+ *
602
+ * var menu = 'green|chai|oolong';
603
+ * assert.isNotArray(menu, 'what kind of tea do we want?');
604
+ *
605
+ * @name isNotArray
606
+ * @param {Mixed} value
607
+ * @param {String} message
608
+ * @namespace Assert
609
+ * @api public
610
+ */
611
+
612
+ assert.isNotArray = function (val, msg) {
613
+ new Assertion(val, msg).to.not.be.an('array');
614
+ };
615
+
616
+ /**
617
+ * ### .isString(value, [message])
618
+ *
619
+ * Asserts that `value` is a string.
620
+ *
621
+ * var teaOrder = 'chai';
622
+ * assert.isString(teaOrder, 'order placed');
623
+ *
624
+ * @name isString
625
+ * @param {Mixed} value
626
+ * @param {String} message
627
+ * @namespace Assert
628
+ * @api public
629
+ */
630
+
631
+ assert.isString = function (val, msg) {
632
+ new Assertion(val, msg).to.be.a('string');
633
+ };
634
+
635
+ /**
636
+ * ### .isNotString(value, [message])
637
+ *
638
+ * Asserts that `value` is _not_ a string.
639
+ *
640
+ * var teaOrder = 4;
641
+ * assert.isNotString(teaOrder, 'order placed');
642
+ *
643
+ * @name isNotString
644
+ * @param {Mixed} value
645
+ * @param {String} message
646
+ * @namespace Assert
647
+ * @api public
648
+ */
649
+
650
+ assert.isNotString = function (val, msg) {
651
+ new Assertion(val, msg).to.not.be.a('string');
652
+ };
653
+
654
+ /**
655
+ * ### .isNumber(value, [message])
656
+ *
657
+ * Asserts that `value` is a number.
658
+ *
659
+ * var cups = 2;
660
+ * assert.isNumber(cups, 'how many cups');
661
+ *
662
+ * @name isNumber
663
+ * @param {Number} value
664
+ * @param {String} message
665
+ * @namespace Assert
666
+ * @api public
667
+ */
668
+
669
+ assert.isNumber = function (val, msg) {
670
+ new Assertion(val, msg).to.be.a('number');
671
+ };
672
+
673
+ /**
674
+ * ### .isNotNumber(value, [message])
675
+ *
676
+ * Asserts that `value` is _not_ a number.
677
+ *
678
+ * var cups = '2 cups please';
679
+ * assert.isNotNumber(cups, 'how many cups');
680
+ *
681
+ * @name isNotNumber
682
+ * @param {Mixed} value
683
+ * @param {String} message
684
+ * @namespace Assert
685
+ * @api public
686
+ */
687
+
688
+ assert.isNotNumber = function (val, msg) {
689
+ new Assertion(val, msg).to.not.be.a('number');
690
+ };
691
+
692
+ /**
693
+ * ### .isBoolean(value, [message])
694
+ *
695
+ * Asserts that `value` is a boolean.
696
+ *
697
+ * var teaReady = true
698
+ * , teaServed = false;
699
+ *
700
+ * assert.isBoolean(teaReady, 'is the tea ready');
701
+ * assert.isBoolean(teaServed, 'has tea been served');
702
+ *
703
+ * @name isBoolean
704
+ * @param {Mixed} value
705
+ * @param {String} message
706
+ * @namespace Assert
707
+ * @api public
708
+ */
709
+
710
+ assert.isBoolean = function (val, msg) {
711
+ new Assertion(val, msg).to.be.a('boolean');
712
+ };
713
+
714
+ /**
715
+ * ### .isNotBoolean(value, [message])
716
+ *
717
+ * Asserts that `value` is _not_ a boolean.
718
+ *
719
+ * var teaReady = 'yep'
720
+ * , teaServed = 'nope';
721
+ *
722
+ * assert.isNotBoolean(teaReady, 'is the tea ready');
723
+ * assert.isNotBoolean(teaServed, 'has tea been served');
724
+ *
725
+ * @name isNotBoolean
726
+ * @param {Mixed} value
727
+ * @param {String} message
728
+ * @namespace Assert
729
+ * @api public
730
+ */
731
+
732
+ assert.isNotBoolean = function (val, msg) {
733
+ new Assertion(val, msg).to.not.be.a('boolean');
734
+ };
735
+
736
+ /**
737
+ * ### .typeOf(value, name, [message])
738
+ *
739
+ * Asserts that `value`'s type is `name`, as determined by
740
+ * `Object.prototype.toString`.
741
+ *
742
+ * assert.typeOf({ tea: 'chai' }, 'object', 'we have an object');
743
+ * assert.typeOf(['chai', 'jasmine'], 'array', 'we have an array');
744
+ * assert.typeOf('tea', 'string', 'we have a string');
745
+ * assert.typeOf(/tea/, 'regexp', 'we have a regular expression');
746
+ * assert.typeOf(null, 'null', 'we have a null');
747
+ * assert.typeOf(undefined, 'undefined', 'we have an undefined');
748
+ *
749
+ * @name typeOf
750
+ * @param {Mixed} value
751
+ * @param {String} name
752
+ * @param {String} message
753
+ * @namespace Assert
754
+ * @api public
755
+ */
756
+
757
+ assert.typeOf = function (val, type, msg) {
758
+ new Assertion(val, msg).to.be.a(type);
759
+ };
760
+
761
+ /**
762
+ * ### .notTypeOf(value, name, [message])
763
+ *
764
+ * Asserts that `value`'s type is _not_ `name`, as determined by
765
+ * `Object.prototype.toString`.
766
+ *
767
+ * assert.notTypeOf('tea', 'number', 'strings are not numbers');
768
+ *
769
+ * @name notTypeOf
770
+ * @param {Mixed} value
771
+ * @param {String} typeof name
772
+ * @param {String} message
773
+ * @namespace Assert
774
+ * @api public
775
+ */
776
+
777
+ assert.notTypeOf = function (val, type, msg) {
778
+ new Assertion(val, msg).to.not.be.a(type);
779
+ };
780
+
781
+ /**
782
+ * ### .instanceOf(object, constructor, [message])
783
+ *
784
+ * Asserts that `value` is an instance of `constructor`.
785
+ *
786
+ * var Tea = function (name) { this.name = name; }
787
+ * , chai = new Tea('chai');
788
+ *
789
+ * assert.instanceOf(chai, Tea, 'chai is an instance of tea');
790
+ *
791
+ * @name instanceOf
792
+ * @param {Object} object
793
+ * @param {Constructor} constructor
794
+ * @param {String} message
795
+ * @namespace Assert
796
+ * @api public
797
+ */
798
+
799
+ assert.instanceOf = function (val, type, msg) {
800
+ new Assertion(val, msg).to.be.instanceOf(type);
801
+ };
802
+
803
+ /**
804
+ * ### .notInstanceOf(object, constructor, [message])
805
+ *
806
+ * Asserts `value` is not an instance of `constructor`.
807
+ *
808
+ * var Tea = function (name) { this.name = name; }
809
+ * , chai = new String('chai');
810
+ *
811
+ * assert.notInstanceOf(chai, Tea, 'chai is not an instance of tea');
812
+ *
813
+ * @name notInstanceOf
814
+ * @param {Object} object
815
+ * @param {Constructor} constructor
816
+ * @param {String} message
817
+ * @namespace Assert
818
+ * @api public
819
+ */
820
+
821
+ assert.notInstanceOf = function (val, type, msg) {
822
+ new Assertion(val, msg).to.not.be.instanceOf(type);
823
+ };
824
+
825
+ /**
826
+ * ### .include(haystack, needle, [message])
827
+ *
828
+ * Asserts that `haystack` includes `needle`. Works
829
+ * for strings and arrays.
830
+ *
831
+ * assert.include('foobar', 'bar', 'foobar contains string "bar"');
832
+ * assert.include([ 1, 2, 3 ], 3, 'array contains value');
833
+ *
834
+ * @name include
835
+ * @param {Array|String} haystack
836
+ * @param {Mixed} needle
837
+ * @param {String} message
838
+ * @namespace Assert
839
+ * @api public
840
+ */
841
+
842
+ assert.include = function (exp, inc, msg) {
843
+ new Assertion(exp, msg, assert.include).include(inc);
844
+ };
845
+
846
+ /**
847
+ * ### .notInclude(haystack, needle, [message])
848
+ *
849
+ * Asserts that `haystack` does not include `needle`. Works
850
+ * for strings and arrays.
851
+ *
852
+ * assert.notInclude('foobar', 'baz', 'string not include substring');
853
+ * assert.notInclude([ 1, 2, 3 ], 4, 'array not include contain value');
854
+ *
855
+ * @name notInclude
856
+ * @param {Array|String} haystack
857
+ * @param {Mixed} needle
858
+ * @param {String} message
859
+ * @namespace Assert
860
+ * @api public
861
+ */
862
+
863
+ assert.notInclude = function (exp, inc, msg) {
864
+ new Assertion(exp, msg, assert.notInclude).not.include(inc);
865
+ };
866
+
867
+ /**
868
+ * ### .match(value, regexp, [message])
869
+ *
870
+ * Asserts that `value` matches the regular expression `regexp`.
871
+ *
872
+ * assert.match('foobar', /^foo/, 'regexp matches');
873
+ *
874
+ * @name match
875
+ * @param {Mixed} value
876
+ * @param {RegExp} regexp
877
+ * @param {String} message
878
+ * @namespace Assert
879
+ * @api public
880
+ */
881
+
882
+ assert.match = function (exp, re, msg) {
883
+ new Assertion(exp, msg).to.match(re);
884
+ };
885
+
886
+ /**
887
+ * ### .notMatch(value, regexp, [message])
888
+ *
889
+ * Asserts that `value` does not match the regular expression `regexp`.
890
+ *
891
+ * assert.notMatch('foobar', /^foo/, 'regexp does not match');
892
+ *
893
+ * @name notMatch
894
+ * @param {Mixed} value
895
+ * @param {RegExp} regexp
896
+ * @param {String} message
897
+ * @namespace Assert
898
+ * @api public
899
+ */
900
+
901
+ assert.notMatch = function (exp, re, msg) {
902
+ new Assertion(exp, msg).to.not.match(re);
903
+ };
904
+
905
+ /**
906
+ * ### .property(object, property, [message])
907
+ *
908
+ * Asserts that `object` has a property named by `property`.
909
+ *
910
+ * assert.property({ tea: { green: 'matcha' }}, 'tea');
911
+ *
912
+ * @name property
913
+ * @param {Object} object
914
+ * @param {String} property
915
+ * @param {String} message
916
+ * @namespace Assert
917
+ * @api public
918
+ */
919
+
920
+ assert.property = function (obj, prop, msg) {
921
+ new Assertion(obj, msg).to.have.property(prop);
922
+ };
923
+
924
+ /**
925
+ * ### .notProperty(object, property, [message])
926
+ *
927
+ * Asserts that `object` does _not_ have a property named by `property`.
928
+ *
929
+ * assert.notProperty({ tea: { green: 'matcha' }}, 'coffee');
930
+ *
931
+ * @name notProperty
932
+ * @param {Object} object
933
+ * @param {String} property
934
+ * @param {String} message
935
+ * @namespace Assert
936
+ * @api public
937
+ */
938
+
939
+ assert.notProperty = function (obj, prop, msg) {
940
+ new Assertion(obj, msg).to.not.have.property(prop);
941
+ };
942
+
943
+ /**
944
+ * ### .deepProperty(object, property, [message])
945
+ *
946
+ * Asserts that `object` has a property named by `property`, which can be a
947
+ * string using dot- and bracket-notation for deep reference.
948
+ *
949
+ * assert.deepProperty({ tea: { green: 'matcha' }}, 'tea.green');
950
+ *
951
+ * @name deepProperty
952
+ * @param {Object} object
953
+ * @param {String} property
954
+ * @param {String} message
955
+ * @namespace Assert
956
+ * @api public
957
+ */
958
+
959
+ assert.deepProperty = function (obj, prop, msg) {
960
+ new Assertion(obj, msg).to.have.deep.property(prop);
961
+ };
962
+
963
+ /**
964
+ * ### .notDeepProperty(object, property, [message])
965
+ *
966
+ * Asserts that `object` does _not_ have a property named by `property`, which
967
+ * can be a string using dot- and bracket-notation for deep reference.
968
+ *
969
+ * assert.notDeepProperty({ tea: { green: 'matcha' }}, 'tea.oolong');
970
+ *
971
+ * @name notDeepProperty
972
+ * @param {Object} object
973
+ * @param {String} property
974
+ * @param {String} message
975
+ * @namespace Assert
976
+ * @api public
977
+ */
978
+
979
+ assert.notDeepProperty = function (obj, prop, msg) {
980
+ new Assertion(obj, msg).to.not.have.deep.property(prop);
981
+ };
982
+
983
+ /**
984
+ * ### .propertyVal(object, property, value, [message])
985
+ *
986
+ * Asserts that `object` has a property named by `property` with value given
987
+ * by `value`.
988
+ *
989
+ * assert.propertyVal({ tea: 'is good' }, 'tea', 'is good');
990
+ *
991
+ * @name propertyVal
992
+ * @param {Object} object
993
+ * @param {String} property
994
+ * @param {Mixed} value
995
+ * @param {String} message
996
+ * @namespace Assert
997
+ * @api public
998
+ */
999
+
1000
+ assert.propertyVal = function (obj, prop, val, msg) {
1001
+ new Assertion(obj, msg).to.have.property(prop, val);
1002
+ };
1003
+
1004
+ /**
1005
+ * ### .propertyNotVal(object, property, value, [message])
1006
+ *
1007
+ * Asserts that `object` has a property named by `property`, but with a value
1008
+ * different from that given by `value`.
1009
+ *
1010
+ * assert.propertyNotVal({ tea: 'is good' }, 'tea', 'is bad');
1011
+ *
1012
+ * @name propertyNotVal
1013
+ * @param {Object} object
1014
+ * @param {String} property
1015
+ * @param {Mixed} value
1016
+ * @param {String} message
1017
+ * @namespace Assert
1018
+ * @api public
1019
+ */
1020
+
1021
+ assert.propertyNotVal = function (obj, prop, val, msg) {
1022
+ new Assertion(obj, msg).to.not.have.property(prop, val);
1023
+ };
1024
+
1025
+ /**
1026
+ * ### .deepPropertyVal(object, property, value, [message])
1027
+ *
1028
+ * Asserts that `object` has a property named by `property` with value given
1029
+ * by `value`. `property` can use dot- and bracket-notation for deep
1030
+ * reference.
1031
+ *
1032
+ * assert.deepPropertyVal({ tea: { green: 'matcha' }}, 'tea.green', 'matcha');
1033
+ *
1034
+ * @name deepPropertyVal
1035
+ * @param {Object} object
1036
+ * @param {String} property
1037
+ * @param {Mixed} value
1038
+ * @param {String} message
1039
+ * @namespace Assert
1040
+ * @api public
1041
+ */
1042
+
1043
+ assert.deepPropertyVal = function (obj, prop, val, msg) {
1044
+ new Assertion(obj, msg).to.have.deep.property(prop, val);
1045
+ };
1046
+
1047
+ /**
1048
+ * ### .deepPropertyNotVal(object, property, value, [message])
1049
+ *
1050
+ * Asserts that `object` has a property named by `property`, but with a value
1051
+ * different from that given by `value`. `property` can use dot- and
1052
+ * bracket-notation for deep reference.
1053
+ *
1054
+ * assert.deepPropertyNotVal({ tea: { green: 'matcha' }}, 'tea.green', 'konacha');
1055
+ *
1056
+ * @name deepPropertyNotVal
1057
+ * @param {Object} object
1058
+ * @param {String} property
1059
+ * @param {Mixed} value
1060
+ * @param {String} message
1061
+ * @namespace Assert
1062
+ * @api public
1063
+ */
1064
+
1065
+ assert.deepPropertyNotVal = function (obj, prop, val, msg) {
1066
+ new Assertion(obj, msg).to.not.have.deep.property(prop, val);
1067
+ };
1068
+
1069
+ /**
1070
+ * ### .lengthOf(object, length, [message])
1071
+ *
1072
+ * Asserts that `object` has a `length` property with the expected value.
1073
+ *
1074
+ * assert.lengthOf([1,2,3], 3, 'array has length of 3');
1075
+ * assert.lengthOf('foobar', 6, 'string has length of 6');
1076
+ *
1077
+ * @name lengthOf
1078
+ * @param {Mixed} object
1079
+ * @param {Number} length
1080
+ * @param {String} message
1081
+ * @namespace Assert
1082
+ * @api public
1083
+ */
1084
+
1085
+ assert.lengthOf = function (exp, len, msg) {
1086
+ new Assertion(exp, msg).to.have.length(len);
1087
+ };
1088
+
1089
+ /**
1090
+ * ### .throws(function, [constructor/string/regexp], [string/regexp], [message])
1091
+ *
1092
+ * Asserts that `function` will throw an error that is an instance of
1093
+ * `constructor`, or alternately that it will throw an error with message
1094
+ * matching `regexp`.
1095
+ *
1096
+ * assert.throws(fn, 'function throws a reference error');
1097
+ * assert.throws(fn, /function throws a reference error/);
1098
+ * assert.throws(fn, ReferenceError);
1099
+ * assert.throws(fn, ReferenceError, 'function throws a reference error');
1100
+ * assert.throws(fn, ReferenceError, /function throws a reference error/);
1101
+ *
1102
+ * @name throws
1103
+ * @alias throw
1104
+ * @alias Throw
1105
+ * @param {Function} function
1106
+ * @param {ErrorConstructor} constructor
1107
+ * @param {RegExp} regexp
1108
+ * @param {String} message
1109
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types
1110
+ * @namespace Assert
1111
+ * @api public
1112
+ */
1113
+
1114
+ assert.throws = function (fn, errt, errs, msg) {
1115
+ if ('string' === typeof errt || errt instanceof RegExp) {
1116
+ errs = errt;
1117
+ errt = null;
1118
+ }
1119
+
1120
+ var assertErr = new Assertion(fn, msg).to.throw(errt, errs);
1121
+ return flag(assertErr, 'object');
1122
+ };
1123
+
1124
+ /**
1125
+ * ### .doesNotThrow(function, [constructor/regexp], [message])
1126
+ *
1127
+ * Asserts that `function` will _not_ throw an error that is an instance of
1128
+ * `constructor`, or alternately that it will not throw an error with message
1129
+ * matching `regexp`.
1130
+ *
1131
+ * assert.doesNotThrow(fn, Error, 'function does not throw');
1132
+ *
1133
+ * @name doesNotThrow
1134
+ * @param {Function} function
1135
+ * @param {ErrorConstructor} constructor
1136
+ * @param {RegExp} regexp
1137
+ * @param {String} message
1138
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types
1139
+ * @namespace Assert
1140
+ * @api public
1141
+ */
1142
+
1143
+ assert.doesNotThrow = function (fn, type, msg) {
1144
+ if ('string' === typeof type) {
1145
+ msg = type;
1146
+ type = null;
1147
+ }
1148
+
1149
+ new Assertion(fn, msg).to.not.Throw(type);
1150
+ };
1151
+
1152
+ /**
1153
+ * ### .operator(val1, operator, val2, [message])
1154
+ *
1155
+ * Compares two values using `operator`.
1156
+ *
1157
+ * assert.operator(1, '<', 2, 'everything is ok');
1158
+ * assert.operator(1, '>', 2, 'this will fail');
1159
+ *
1160
+ * @name operator
1161
+ * @param {Mixed} val1
1162
+ * @param {String} operator
1163
+ * @param {Mixed} val2
1164
+ * @param {String} message
1165
+ * @namespace Assert
1166
+ * @api public
1167
+ */
1168
+
1169
+ assert.operator = function (val, operator, val2, msg) {
1170
+ var ok;
1171
+ switch(operator) {
1172
+ case '==':
1173
+ ok = val == val2;
1174
+ break;
1175
+ case '===':
1176
+ ok = val === val2;
1177
+ break;
1178
+ case '>':
1179
+ ok = val > val2;
1180
+ break;
1181
+ case '>=':
1182
+ ok = val >= val2;
1183
+ break;
1184
+ case '<':
1185
+ ok = val < val2;
1186
+ break;
1187
+ case '<=':
1188
+ ok = val <= val2;
1189
+ break;
1190
+ case '!=':
1191
+ ok = val != val2;
1192
+ break;
1193
+ case '!==':
1194
+ ok = val !== val2;
1195
+ break;
1196
+ default:
1197
+ throw new Error('Invalid operator "' + operator + '"');
1198
+ }
1199
+ var test = new Assertion(ok, msg);
1200
+ test.assert(
1201
+ true === flag(test, 'object')
1202
+ , 'expected ' + util.inspect(val) + ' to be ' + operator + ' ' + util.inspect(val2)
1203
+ , 'expected ' + util.inspect(val) + ' to not be ' + operator + ' ' + util.inspect(val2) );
1204
+ };
1205
+
1206
+ /**
1207
+ * ### .closeTo(actual, expected, delta, [message])
1208
+ *
1209
+ * Asserts that the target is equal `expected`, to within a +/- `delta` range.
1210
+ *
1211
+ * assert.closeTo(1.5, 1, 0.5, 'numbers are close');
1212
+ *
1213
+ * @name closeTo
1214
+ * @param {Number} actual
1215
+ * @param {Number} expected
1216
+ * @param {Number} delta
1217
+ * @param {String} message
1218
+ * @namespace Assert
1219
+ * @api public
1220
+ */
1221
+
1222
+ assert.closeTo = function (act, exp, delta, msg) {
1223
+ new Assertion(act, msg).to.be.closeTo(exp, delta);
1224
+ };
1225
+
1226
+ /**
1227
+ * ### .approximately(actual, expected, delta, [message])
1228
+ *
1229
+ * Asserts that the target is equal `expected`, to within a +/- `delta` range.
1230
+ *
1231
+ * assert.approximately(1.5, 1, 0.5, 'numbers are close');
1232
+ *
1233
+ * @name approximately
1234
+ * @param {Number} actual
1235
+ * @param {Number} expected
1236
+ * @param {Number} delta
1237
+ * @param {String} message
1238
+ * @namespace Assert
1239
+ * @api public
1240
+ */
1241
+
1242
+ assert.approximately = function (act, exp, delta, msg) {
1243
+ new Assertion(act, msg).to.be.approximately(exp, delta);
1244
+ };
1245
+
1246
+ /**
1247
+ * ### .sameMembers(set1, set2, [message])
1248
+ *
1249
+ * Asserts that `set1` and `set2` have the same members.
1250
+ * Order is not taken into account.
1251
+ *
1252
+ * assert.sameMembers([ 1, 2, 3 ], [ 2, 1, 3 ], 'same members');
1253
+ *
1254
+ * @name sameMembers
1255
+ * @param {Array} set1
1256
+ * @param {Array} set2
1257
+ * @param {String} message
1258
+ * @namespace Assert
1259
+ * @api public
1260
+ */
1261
+
1262
+ assert.sameMembers = function (set1, set2, msg) {
1263
+ new Assertion(set1, msg).to.have.same.members(set2);
1264
+ }
1265
+
1266
+ /**
1267
+ * ### .sameDeepMembers(set1, set2, [message])
1268
+ *
1269
+ * Asserts that `set1` and `set2` have the same members - using a deep equality checking.
1270
+ * Order is not taken into account.
1271
+ *
1272
+ * assert.sameDeepMembers([ {b: 3}, {a: 2}, {c: 5} ], [ {c: 5}, {b: 3}, {a: 2} ], 'same deep members');
1273
+ *
1274
+ * @name sameDeepMembers
1275
+ * @param {Array} set1
1276
+ * @param {Array} set2
1277
+ * @param {String} message
1278
+ * @namespace Assert
1279
+ * @api public
1280
+ */
1281
+
1282
+ assert.sameDeepMembers = function (set1, set2, msg) {
1283
+ new Assertion(set1, msg).to.have.same.deep.members(set2);
1284
+ }
1285
+
1286
+ /**
1287
+ * ### .includeMembers(superset, subset, [message])
1288
+ *
1289
+ * Asserts that `subset` is included in `superset`.
1290
+ * Order is not taken into account.
1291
+ *
1292
+ * assert.includeMembers([ 1, 2, 3 ], [ 2, 1 ], 'include members');
1293
+ *
1294
+ * @name includeMembers
1295
+ * @param {Array} superset
1296
+ * @param {Array} subset
1297
+ * @param {String} message
1298
+ * @namespace Assert
1299
+ * @api public
1300
+ */
1301
+
1302
+ assert.includeMembers = function (superset, subset, msg) {
1303
+ new Assertion(superset, msg).to.include.members(subset);
1304
+ }
1305
+
1306
+ /**
1307
+ * ### .includeDeepMembers(superset, subset, [message])
1308
+ *
1309
+ * Asserts that `subset` is included in `superset` - using deep equality checking.
1310
+ * Order is not taken into account.
1311
+ * Duplicates are ignored.
1312
+ *
1313
+ * assert.includeDeepMembers([ {a: 1}, {b: 2}, {c: 3} ], [ {b: 2}, {a: 1}, {b: 2} ], 'include deep members');
1314
+ *
1315
+ * @name includeDeepMembers
1316
+ * @param {Array} superset
1317
+ * @param {Array} subset
1318
+ * @param {String} message
1319
+ * @namespace Assert
1320
+ * @api public
1321
+ */
1322
+
1323
+ assert.includeDeepMembers = function (superset, subset, msg) {
1324
+ new Assertion(superset, msg).to.include.deep.members(subset);
1325
+ }
1326
+
1327
+ /**
1328
+ * ### .oneOf(inList, list, [message])
1329
+ *
1330
+ * Asserts that non-object, non-array value `inList` appears in the flat array `list`.
1331
+ *
1332
+ * assert.oneOf(1, [ 2, 1 ], 'Not found in list');
1333
+ *
1334
+ * @name oneOf
1335
+ * @param {*} inList
1336
+ * @param {Array<*>} list
1337
+ * @param {String} message
1338
+ * @namespace Assert
1339
+ * @api public
1340
+ */
1341
+
1342
+ assert.oneOf = function (inList, list, msg) {
1343
+ new Assertion(inList, msg).to.be.oneOf(list);
1344
+ }
1345
+
1346
+ /**
1347
+ * ### .changes(function, object, property)
1348
+ *
1349
+ * Asserts that a function changes the value of a property
1350
+ *
1351
+ * var obj = { val: 10 };
1352
+ * var fn = function() { obj.val = 22 };
1353
+ * assert.changes(fn, obj, 'val');
1354
+ *
1355
+ * @name changes
1356
+ * @param {Function} modifier function
1357
+ * @param {Object} object
1358
+ * @param {String} property name
1359
+ * @param {String} message _optional_
1360
+ * @namespace Assert
1361
+ * @api public
1362
+ */
1363
+
1364
+ assert.changes = function (fn, obj, prop) {
1365
+ new Assertion(fn).to.change(obj, prop);
1366
+ }
1367
+
1368
+ /**
1369
+ * ### .doesNotChange(function, object, property)
1370
+ *
1371
+ * Asserts that a function does not changes the value of a property
1372
+ *
1373
+ * var obj = { val: 10 };
1374
+ * var fn = function() { console.log('foo'); };
1375
+ * assert.doesNotChange(fn, obj, 'val');
1376
+ *
1377
+ * @name doesNotChange
1378
+ * @param {Function} modifier function
1379
+ * @param {Object} object
1380
+ * @param {String} property name
1381
+ * @param {String} message _optional_
1382
+ * @namespace Assert
1383
+ * @api public
1384
+ */
1385
+
1386
+ assert.doesNotChange = function (fn, obj, prop) {
1387
+ new Assertion(fn).to.not.change(obj, prop);
1388
+ }
1389
+
1390
+ /**
1391
+ * ### .increases(function, object, property)
1392
+ *
1393
+ * Asserts that a function increases an object property
1394
+ *
1395
+ * var obj = { val: 10 };
1396
+ * var fn = function() { obj.val = 13 };
1397
+ * assert.increases(fn, obj, 'val');
1398
+ *
1399
+ * @name increases
1400
+ * @param {Function} modifier function
1401
+ * @param {Object} object
1402
+ * @param {String} property name
1403
+ * @param {String} message _optional_
1404
+ * @namespace Assert
1405
+ * @api public
1406
+ */
1407
+
1408
+ assert.increases = function (fn, obj, prop) {
1409
+ new Assertion(fn).to.increase(obj, prop);
1410
+ }
1411
+
1412
+ /**
1413
+ * ### .doesNotIncrease(function, object, property)
1414
+ *
1415
+ * Asserts that a function does not increase object property
1416
+ *
1417
+ * var obj = { val: 10 };
1418
+ * var fn = function() { obj.val = 8 };
1419
+ * assert.doesNotIncrease(fn, obj, 'val');
1420
+ *
1421
+ * @name doesNotIncrease
1422
+ * @param {Function} modifier function
1423
+ * @param {Object} object
1424
+ * @param {String} property name
1425
+ * @param {String} message _optional_
1426
+ * @namespace Assert
1427
+ * @api public
1428
+ */
1429
+
1430
+ assert.doesNotIncrease = function (fn, obj, prop) {
1431
+ new Assertion(fn).to.not.increase(obj, prop);
1432
+ }
1433
+
1434
+ /**
1435
+ * ### .decreases(function, object, property)
1436
+ *
1437
+ * Asserts that a function decreases an object property
1438
+ *
1439
+ * var obj = { val: 10 };
1440
+ * var fn = function() { obj.val = 5 };
1441
+ * assert.decreases(fn, obj, 'val');
1442
+ *
1443
+ * @name decreases
1444
+ * @param {Function} modifier function
1445
+ * @param {Object} object
1446
+ * @param {String} property name
1447
+ * @param {String} message _optional_
1448
+ * @namespace Assert
1449
+ * @api public
1450
+ */
1451
+
1452
+ assert.decreases = function (fn, obj, prop) {
1453
+ new Assertion(fn).to.decrease(obj, prop);
1454
+ }
1455
+
1456
+ /**
1457
+ * ### .doesNotDecrease(function, object, property)
1458
+ *
1459
+ * Asserts that a function does not decreases an object property
1460
+ *
1461
+ * var obj = { val: 10 };
1462
+ * var fn = function() { obj.val = 15 };
1463
+ * assert.doesNotDecrease(fn, obj, 'val');
1464
+ *
1465
+ * @name doesNotDecrease
1466
+ * @param {Function} modifier function
1467
+ * @param {Object} object
1468
+ * @param {String} property name
1469
+ * @param {String} message _optional_
1470
+ * @namespace Assert
1471
+ * @api public
1472
+ */
1473
+
1474
+ assert.doesNotDecrease = function (fn, obj, prop) {
1475
+ new Assertion(fn).to.not.decrease(obj, prop);
1476
+ }
1477
+
1478
+ /*!
1479
+ * ### .ifError(object)
1480
+ *
1481
+ * Asserts if value is not a false value, and throws if it is a true value.
1482
+ * This is added to allow for chai to be a drop-in replacement for Node's
1483
+ * assert class.
1484
+ *
1485
+ * var err = new Error('I am a custom error');
1486
+ * assert.ifError(err); // Rethrows err!
1487
+ *
1488
+ * @name ifError
1489
+ * @param {Object} object
1490
+ * @namespace Assert
1491
+ * @api public
1492
+ */
1493
+
1494
+ assert.ifError = function (val) {
1495
+ if (val) {
1496
+ throw(val);
1497
+ }
1498
+ };
1499
+
1500
+ /**
1501
+ * ### .isExtensible(object)
1502
+ *
1503
+ * Asserts that `object` is extensible (can have new properties added to it).
1504
+ *
1505
+ * assert.isExtensible({});
1506
+ *
1507
+ * @name isExtensible
1508
+ * @alias extensible
1509
+ * @param {Object} object
1510
+ * @param {String} message _optional_
1511
+ * @namespace Assert
1512
+ * @api public
1513
+ */
1514
+
1515
+ assert.isExtensible = function (obj, msg) {
1516
+ new Assertion(obj, msg).to.be.extensible;
1517
+ };
1518
+
1519
+ /**
1520
+ * ### .isNotExtensible(object)
1521
+ *
1522
+ * Asserts that `object` is _not_ extensible.
1523
+ *
1524
+ * var nonExtensibleObject = Object.preventExtensions({});
1525
+ * var sealedObject = Object.seal({});
1526
+ * var frozenObject = Object.freese({});
1527
+ *
1528
+ * assert.isNotExtensible(nonExtensibleObject);
1529
+ * assert.isNotExtensible(sealedObject);
1530
+ * assert.isNotExtensible(frozenObject);
1531
+ *
1532
+ * @name isNotExtensible
1533
+ * @alias notExtensible
1534
+ * @param {Object} object
1535
+ * @param {String} message _optional_
1536
+ * @namespace Assert
1537
+ * @api public
1538
+ */
1539
+
1540
+ assert.isNotExtensible = function (obj, msg) {
1541
+ new Assertion(obj, msg).to.not.be.extensible;
1542
+ };
1543
+
1544
+ /**
1545
+ * ### .isSealed(object)
1546
+ *
1547
+ * Asserts that `object` is sealed (cannot have new properties added to it
1548
+ * and its existing properties cannot be removed).
1549
+ *
1550
+ * var sealedObject = Object.seal({});
1551
+ * var frozenObject = Object.seal({});
1552
+ *
1553
+ * assert.isSealed(sealedObject);
1554
+ * assert.isSealed(frozenObject);
1555
+ *
1556
+ * @name isSealed
1557
+ * @alias sealed
1558
+ * @param {Object} object
1559
+ * @param {String} message _optional_
1560
+ * @namespace Assert
1561
+ * @api public
1562
+ */
1563
+
1564
+ assert.isSealed = function (obj, msg) {
1565
+ new Assertion(obj, msg).to.be.sealed;
1566
+ };
1567
+
1568
+ /**
1569
+ * ### .isNotSealed(object)
1570
+ *
1571
+ * Asserts that `object` is _not_ sealed.
1572
+ *
1573
+ * assert.isNotSealed({});
1574
+ *
1575
+ * @name isNotSealed
1576
+ * @alias notSealed
1577
+ * @param {Object} object
1578
+ * @param {String} message _optional_
1579
+ * @namespace Assert
1580
+ * @api public
1581
+ */
1582
+
1583
+ assert.isNotSealed = function (obj, msg) {
1584
+ new Assertion(obj, msg).to.not.be.sealed;
1585
+ };
1586
+
1587
+ /**
1588
+ * ### .isFrozen(object)
1589
+ *
1590
+ * Asserts that `object` is frozen (cannot have new properties added to it
1591
+ * and its existing properties cannot be modified).
1592
+ *
1593
+ * var frozenObject = Object.freeze({});
1594
+ * assert.frozen(frozenObject);
1595
+ *
1596
+ * @name isFrozen
1597
+ * @alias frozen
1598
+ * @param {Object} object
1599
+ * @param {String} message _optional_
1600
+ * @namespace Assert
1601
+ * @api public
1602
+ */
1603
+
1604
+ assert.isFrozen = function (obj, msg) {
1605
+ new Assertion(obj, msg).to.be.frozen;
1606
+ };
1607
+
1608
+ /**
1609
+ * ### .isNotFrozen(object)
1610
+ *
1611
+ * Asserts that `object` is _not_ frozen.
1612
+ *
1613
+ * assert.isNotFrozen({});
1614
+ *
1615
+ * @name isNotFrozen
1616
+ * @alias notFrozen
1617
+ * @param {Object} object
1618
+ * @param {String} message _optional_
1619
+ * @namespace Assert
1620
+ * @api public
1621
+ */
1622
+
1623
+ assert.isNotFrozen = function (obj, msg) {
1624
+ new Assertion(obj, msg).to.not.be.frozen;
1625
+ };
1626
+
1627
+ /*!
1628
+ * Aliases.
1629
+ */
1630
+
1631
+ (function alias(name, as){
1632
+ assert[as] = assert[name];
1633
+ return alias;
1634
+ })
1635
+ ('isOk', 'ok')
1636
+ ('isNotOk', 'notOk')
1637
+ ('throws', 'throw')
1638
+ ('throws', 'Throw')
1639
+ ('isExtensible', 'extensible')
1640
+ ('isNotExtensible', 'notExtensible')
1641
+ ('isSealed', 'sealed')
1642
+ ('isNotSealed', 'notSealed')
1643
+ ('isFrozen', 'frozen')
1644
+ ('isNotFrozen', 'notFrozen');
1645
+ };