leaflet-js 0.6.beta4 → 0.7.0

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 (226) hide show
  1. checksums.yaml +6 -14
  2. data/CHANGELOG.rdoc +3 -0
  3. data/leaflet-js.gemspec +2 -2
  4. data/lib/leaflet.draw/CHANGELOG.md +45 -0
  5. data/lib/leaflet.draw/README.md +70 -23
  6. data/lib/leaflet.draw/build/deps.js +1 -0
  7. data/lib/leaflet.draw/dist/images/spritesheet-2x.png +0 -0
  8. data/lib/leaflet.draw/dist/images/spritesheet.png +0 -0
  9. data/lib/leaflet.draw/dist/leaflet.draw-src.js +489 -136
  10. data/lib/leaflet.draw/dist/leaflet.draw.css +34 -2
  11. data/lib/leaflet.draw/dist/leaflet.draw.ie.css +5 -0
  12. data/lib/leaflet.draw/dist/leaflet.draw.js +2 -2
  13. data/lib/leaflet.draw/examples/basic.html +14 -7
  14. data/lib/leaflet.draw/examples/libs/images/layers-2x.png +0 -0
  15. data/lib/leaflet.draw/examples/libs/images/layers.png +0 -0
  16. data/lib/leaflet.draw/examples/libs/images/marker-icon-2x.png +0 -0
  17. data/lib/leaflet.draw/examples/libs/leaflet-src.js +1129 -608
  18. data/lib/leaflet.draw/examples/libs/leaflet.css +85 -66
  19. data/lib/leaflet.draw/package.json +2 -2
  20. data/lib/leaflet.draw/spec/suites/DrawControlSpec.js +1 -1
  21. data/lib/leaflet.draw/spec/suites/GeometryUtilSpec.js +25 -0
  22. data/lib/leaflet.draw/spec/suites/LatLngUtilSpec.js +9 -0
  23. data/lib/leaflet.draw/src/Control.Draw.js +1 -0
  24. data/lib/leaflet.draw/src/Leaflet.draw.js +89 -1
  25. data/lib/leaflet.draw/src/Toolbar.js +2 -6
  26. data/lib/leaflet.draw/src/Tooltip.js +20 -7
  27. data/lib/leaflet.draw/src/draw/DrawToolbar.js +26 -22
  28. data/lib/leaflet.draw/src/draw/handler/Draw.Circle.js +11 -6
  29. data/lib/leaflet.draw/src/draw/handler/Draw.Feature.js +6 -2
  30. data/lib/leaflet.draw/src/draw/handler/Draw.Marker.js +7 -2
  31. data/lib/leaflet.draw/src/draw/handler/Draw.Polygon.js +29 -7
  32. data/lib/leaflet.draw/src/draw/handler/Draw.Polyline.js +44 -21
  33. data/lib/leaflet.draw/src/draw/handler/Draw.Rectangle.js +3 -3
  34. data/lib/leaflet.draw/src/draw/handler/Draw.SimpleShape.js +14 -1
  35. data/lib/leaflet.draw/src/edit/EditToolbar.js +86 -16
  36. data/lib/leaflet.draw/src/edit/handler/Edit.Poly.js +10 -7
  37. data/lib/leaflet.draw/src/edit/handler/Edit.SimpleShape.js +1 -2
  38. data/lib/leaflet.draw/src/edit/handler/EditToolbar.Delete.js +15 -3
  39. data/lib/leaflet.draw/src/edit/handler/EditToolbar.Edit.js +56 -38
  40. data/lib/leaflet.draw/src/ext/GeometryUtil.js +68 -0
  41. data/lib/leaflet.draw/src/images/spritesheet.svg +41 -0
  42. data/lib/leaflet.label/CHANGELOG.md +32 -0
  43. data/lib/leaflet.label/README.md +21 -4
  44. data/lib/leaflet.label/build/build.js +2 -2
  45. data/lib/leaflet.label/build/deps.js +2 -0
  46. data/lib/leaflet.label/build/hintrc.js +4 -0
  47. data/lib/leaflet.label/dist/leaflet.label-src.js +266 -83
  48. data/lib/leaflet.label/dist/leaflet.label.css +23 -4
  49. data/lib/leaflet.label/dist/leaflet.label.js +1 -1
  50. data/lib/leaflet.label/example/label.html +6 -3
  51. data/lib/leaflet.label/libs/leaflet/images/layers-2x.png +0 -0
  52. data/lib/leaflet.label/libs/leaflet/images/layers.png +0 -0
  53. data/lib/leaflet.label/libs/leaflet/images/marker-icon-2x.png +0 -0
  54. data/lib/leaflet.label/libs/leaflet/leaflet-src.js +1129 -608
  55. data/lib/leaflet.label/libs/leaflet/leaflet.css +85 -66
  56. data/lib/leaflet.label/libs/leaflet/leaflet.js +6 -5
  57. data/lib/leaflet.label/package.json +19 -0
  58. data/lib/leaflet.label/src/BaseMarkerMethods.js +129 -0
  59. data/lib/leaflet.label/src/CircleMarker.Label.js +7 -0
  60. data/lib/leaflet.label/src/Label.js +161 -37
  61. data/lib/leaflet.label/src/Leaflet.label.js +1 -1
  62. data/lib/leaflet.label/src/Map.Label.js +0 -2
  63. data/lib/leaflet.label/src/Marker.Label.js +15 -120
  64. data/lib/leaflet.label/src/Path.Label.js +11 -11
  65. data/lib/leaflet/CHANGELOG.md +299 -31
  66. data/lib/leaflet/CONTRIBUTING.md +3 -3
  67. data/lib/leaflet/FAQ.md +138 -0
  68. data/lib/leaflet/Jakefile.js +24 -4
  69. data/lib/leaflet/PLUGIN-GUIDE.md +127 -0
  70. data/lib/leaflet/README.md +10 -6
  71. data/lib/leaflet/build/build.html +3 -19
  72. data/lib/leaflet/build/build.js +21 -51
  73. data/lib/leaflet/build/deps.js +10 -7
  74. data/lib/leaflet/build/hintrc.js +6 -4
  75. data/lib/leaflet/debug/hacks/jitter.html +0 -1
  76. data/lib/leaflet/debug/map/canvas.html +11 -12
  77. data/lib/leaflet/debug/map/controls.html +3 -4
  78. data/lib/leaflet/debug/map/geolocation.html +0 -1
  79. data/lib/leaflet/debug/map/iframe.html +11 -0
  80. data/lib/leaflet/debug/map/image-overlay.html +0 -1
  81. data/lib/leaflet/debug/map/map-mobile.html +0 -1
  82. data/lib/leaflet/debug/map/map.html +1 -2
  83. data/lib/leaflet/debug/map/max-bounds.html +2 -1
  84. data/lib/leaflet/debug/map/opacity.html +223 -0
  85. data/lib/leaflet/debug/map/scroll.html +6 -1
  86. data/lib/leaflet/debug/map/simple-proj.html +0 -1
  87. data/lib/leaflet/debug/map/wms-marble.html +4 -5
  88. data/lib/leaflet/debug/map/wms.html +0 -1
  89. data/lib/leaflet/debug/map/zoomlevels.html +0 -1
  90. data/lib/leaflet/debug/tests/add_remove_layers.html +5 -6
  91. data/lib/leaflet/debug/tests/bringtoback.html +0 -1
  92. data/lib/leaflet/debug/tests/canvasloop.html +47 -0
  93. data/lib/leaflet/debug/tests/click_on_canvas.html +0 -1
  94. data/lib/leaflet/debug/tests/dragging_and_copyworldjump.html +61 -0
  95. data/lib/leaflet/debug/tests/opacity.html +0 -1
  96. data/lib/leaflet/debug/tests/popupcontextmenuclicks.html +59 -0
  97. data/lib/leaflet/debug/tests/remove_while_dragging.html +4 -5
  98. data/lib/leaflet/debug/tests/removetilewhilepan.html +0 -1
  99. data/lib/leaflet/debug/tests/reuse_popups.html +0 -1
  100. data/lib/leaflet/debug/tests/rtl.html +42 -0
  101. data/lib/leaflet/debug/tests/rtl2.html +27 -0
  102. data/lib/leaflet/debug/tests/set_icon_reuse_dom.html +43 -0
  103. data/lib/leaflet/debug/tests/svg_clicks.html +3 -4
  104. data/lib/leaflet/debug/vector/bounds-extend.html +0 -1
  105. data/lib/leaflet/debug/vector/feature-group-bounds.html +0 -1
  106. data/lib/leaflet/debug/vector/geojson.html +0 -1
  107. data/lib/leaflet/debug/vector/rectangle.html +0 -1
  108. data/lib/leaflet/debug/vector/touchzoomemu.html +2 -3
  109. data/lib/leaflet/debug/vector/vector-bounds.html +0 -1
  110. data/lib/leaflet/debug/vector/vector-canvas.html +0 -1
  111. data/lib/leaflet/debug/vector/vector-mobile.html +0 -1
  112. data/lib/leaflet/debug/vector/vector-simple.html +0 -1
  113. data/lib/leaflet/debug/vector/vector.html +0 -1
  114. data/lib/leaflet/dist/images/layers-2x.png +0 -0
  115. data/lib/leaflet/dist/images/layers.png +0 -0
  116. data/lib/leaflet/dist/leaflet.css +85 -66
  117. data/lib/leaflet/package.json +25 -20
  118. data/lib/leaflet/spec/after.js +1 -1
  119. data/lib/leaflet/spec/index.html +21 -13
  120. data/lib/leaflet/spec/karma.conf.js +51 -50
  121. data/lib/leaflet/spec/spec.hintrc.js +25 -0
  122. data/lib/leaflet/spec/suites/LeafletSpec.js +2 -2
  123. data/lib/leaflet/spec/suites/SpecHelper.js +37 -21
  124. data/lib/leaflet/spec/suites/control/Control.LayersSpec.js +1 -1
  125. data/lib/leaflet/spec/suites/core/ClassSpec.js +12 -12
  126. data/lib/leaflet/spec/suites/core/EventsSpec.js +74 -18
  127. data/lib/leaflet/spec/suites/core/UtilSpec.js +69 -25
  128. data/lib/leaflet/spec/suites/dom/DomEventSpec.js +16 -16
  129. data/lib/leaflet/spec/suites/dom/DomUtilSpec.js +9 -16
  130. data/lib/leaflet/spec/suites/dom/PosAnimationSpec.js +27 -0
  131. data/lib/leaflet/spec/suites/geo/CRSSpec.js +47 -0
  132. data/lib/leaflet/spec/suites/geo/LatLngBoundsSpec.js +22 -14
  133. data/lib/leaflet/spec/suites/geo/LatLngSpec.js +22 -8
  134. data/lib/leaflet/spec/suites/geo/ProjectionSpec.js +21 -20
  135. data/lib/leaflet/spec/suites/geometry/BoundsSpec.js +15 -15
  136. data/lib/leaflet/spec/suites/geometry/PointSpec.js +12 -12
  137. data/lib/leaflet/spec/suites/geometry/TransformationSpec.js +4 -4
  138. data/lib/leaflet/spec/suites/layer/FeatureGroupSpec.js +59 -9
  139. data/lib/leaflet/spec/suites/layer/GeoJSONSpec.js +213 -17
  140. data/lib/leaflet/spec/suites/layer/LayerGroupSpec.js +6 -6
  141. data/lib/leaflet/spec/suites/layer/PopupSpec.js +65 -5
  142. data/lib/leaflet/spec/suites/layer/TileLayerSpec.js +16 -15
  143. data/lib/leaflet/spec/suites/layer/marker/MarkerSpec.js +94 -0
  144. data/lib/leaflet/spec/suites/layer/vector/CircleMarkerSpec.js +7 -7
  145. data/lib/leaflet/spec/suites/layer/vector/PolygonSpec.js +38 -2
  146. data/lib/leaflet/spec/suites/layer/vector/PolylineGeometrySpec.js +4 -4
  147. data/lib/leaflet/spec/suites/layer/vector/PolylineSpec.js +2 -2
  148. data/lib/leaflet/spec/suites/map/MapSpec.js +318 -26
  149. data/lib/leaflet/spec/suites/map/handler/Map.DragSpec.js +38 -0
  150. data/lib/leaflet/src/Leaflet.js +2 -2
  151. data/lib/leaflet/src/control/Control.Attribution.js +6 -0
  152. data/lib/leaflet/src/control/Control.Layers.js +33 -24
  153. data/lib/leaflet/src/control/Control.Zoom.js +12 -4
  154. data/lib/leaflet/src/control/Control.js +10 -0
  155. data/lib/leaflet/src/copyright.js +2 -1
  156. data/lib/leaflet/src/core/Browser.js +11 -10
  157. data/lib/leaflet/src/core/Events.js +15 -11
  158. data/lib/leaflet/src/core/Util.js +19 -14
  159. data/lib/leaflet/src/dom/DomEvent.DoubleTap.js +13 -12
  160. data/lib/leaflet/src/dom/DomEvent.Pointer.js +155 -0
  161. data/lib/leaflet/src/dom/DomEvent.js +57 -19
  162. data/lib/leaflet/src/dom/DomUtil.js +89 -34
  163. data/lib/leaflet/src/dom/Draggable.js +26 -89
  164. data/lib/leaflet/src/dom/PosAnimation.js +13 -2
  165. data/lib/leaflet/src/geo/LatLng.js +16 -5
  166. data/lib/leaflet/src/geo/LatLngBounds.js +5 -2
  167. data/lib/leaflet/src/geo/crs/CRS.EPSG3395.js +2 -2
  168. data/lib/leaflet/src/geo/crs/CRS.js +5 -0
  169. data/lib/leaflet/src/geo/projection/Projection.Mercator.js +3 -3
  170. data/lib/leaflet/src/geometry/LineUtil.js +2 -2
  171. data/lib/leaflet/src/images/layers.svg +8 -0
  172. data/lib/leaflet/src/images/marker.svg +61 -1
  173. data/lib/leaflet/src/layer/FeatureGroup.js +24 -7
  174. data/lib/leaflet/src/layer/GeoJSON.js +97 -56
  175. data/lib/leaflet/src/layer/ImageOverlay.js +9 -0
  176. data/lib/leaflet/src/layer/LayerGroup.js +8 -3
  177. data/lib/leaflet/src/layer/Popup.js +56 -34
  178. data/lib/leaflet/src/layer/marker/DivIcon.js +4 -2
  179. data/lib/leaflet/src/layer/marker/Icon.Default.js +1 -1
  180. data/lib/leaflet/src/layer/marker/Icon.js +15 -18
  181. data/lib/leaflet/src/layer/marker/Marker.Drag.js +7 -5
  182. data/lib/leaflet/src/layer/marker/Marker.Popup.js +22 -5
  183. data/lib/leaflet/src/layer/marker/Marker.js +75 -32
  184. data/lib/leaflet/src/layer/tile/TileLayer.Anim.js +14 -26
  185. data/lib/leaflet/src/layer/tile/TileLayer.Canvas.js +7 -6
  186. data/lib/leaflet/src/layer/tile/TileLayer.WMS.js +14 -10
  187. data/lib/leaflet/src/layer/tile/TileLayer.js +53 -32
  188. data/lib/leaflet/src/layer/vector/CircleMarker.js +11 -0
  189. data/lib/leaflet/src/layer/vector/MultiPoly.js +10 -0
  190. data/lib/leaflet/src/layer/vector/Path.SVG.js +14 -3
  191. data/lib/leaflet/src/layer/vector/Path.VML.js +12 -2
  192. data/lib/leaflet/src/layer/vector/Path.js +7 -3
  193. data/lib/leaflet/src/layer/vector/Polygon.js +14 -3
  194. data/lib/leaflet/src/layer/vector/canvas/CircleMarker.Canvas.js +9 -0
  195. data/lib/leaflet/src/layer/vector/canvas/Path.Canvas.js +1 -0
  196. data/lib/leaflet/src/map/Map.js +192 -125
  197. data/lib/leaflet/src/map/anim/Map.PanAnimation.js +29 -19
  198. data/lib/leaflet/src/map/anim/Map.ZoomAnimation.js +21 -9
  199. data/lib/leaflet/src/map/ext/Map.Geolocation.js +11 -4
  200. data/lib/leaflet/src/map/handler/Map.BoxZoom.js +26 -12
  201. data/lib/leaflet/src/map/handler/Map.DoubleClickZoom.js +10 -3
  202. data/lib/leaflet/src/map/handler/Map.Drag.js +12 -6
  203. data/lib/leaflet/src/map/handler/Map.Keyboard.js +5 -2
  204. data/lib/leaflet/src/map/handler/Map.ScrollWheelZoom.js +7 -1
  205. data/lib/leaflet/src/map/handler/Map.Tap.js +107 -0
  206. data/lib/leaflet/src/map/handler/Map.TouchZoom.js +9 -3
  207. data/vendor/assets/images/layers-2x.png +0 -0
  208. data/vendor/assets/images/layers.png +0 -0
  209. data/vendor/assets/images/spritesheet-2x.png +0 -0
  210. data/vendor/assets/images/spritesheet.png +0 -0
  211. data/vendor/assets/javascripts/leaflet.draw.js +2 -4
  212. data/vendor/assets/javascripts/leaflet.js +3 -1
  213. data/vendor/assets/javascripts/leaflet.label.js +2 -0
  214. data/vendor/assets/stylesheets/leaflet.css.erb +337 -318
  215. data/vendor/assets/stylesheets/leaflet.draw.css.erb +35 -3
  216. data/vendor/assets/stylesheets/leaflet.draw.ie.css +5 -0
  217. data/vendor/assets/stylesheets/leaflet.label.css +23 -4
  218. metadata +40 -14
  219. data/lib/leaflet.draw/examples/libs/leaflet.ie.css +0 -51
  220. data/lib/leaflet.label/libs/leaflet/leaflet.ie.css +0 -51
  221. data/lib/leaflet/dist/leaflet-src.js +0 -8579
  222. data/lib/leaflet/dist/leaflet.ie.css +0 -51
  223. data/lib/leaflet/dist/leaflet.js +0 -8
  224. data/lib/leaflet/spec/happen.js +0 -93
  225. data/lib/leaflet/src/dom/DomEvent.MsTouch.js +0 -146
  226. data/vendor/assets/stylesheets/leaflet.ie.css +0 -51
@@ -1,64 +1,65 @@
1
1
  // Karma configuration
2
- var libSources = require(__dirname+'/../build/build.js').getFiles();
2
+ module.exports = function (config) {
3
3
 
4
- // base path, that will be used to resolve files and exclude
5
- basePath = '';
4
+ var libSources = require(__dirname+'/../build/build.js').getFiles();
6
5
 
7
- for (var i=0; i < libSources.length; i++) {
8
- libSources[i] = "../" + libSources[i];
9
- }
6
+ var files = [
7
+ "spec/before.js",
8
+ "spec/sinon.js",
9
+ "spec/expect.js"
10
+ ].concat(libSources, [
11
+ "spec/after.js",
12
+ "node_modules/happen/happen.js",
13
+ "spec/suites/SpecHelper.js",
14
+ "spec/suites/**/*.js",
15
+ {pattern: "dist/images/*.png", included: false}
16
+ ]);
10
17
 
11
- // list of files / patterns to load in the browser
12
- files = [].concat([
13
- "../node_modules/mocha/mocha.js",
14
- MOCHA_ADAPTER,
15
- "before.js",
16
- "sinon.js",
17
- "expect.js"
18
- ], libSources, [
19
- "after.js",
20
- "happen.js",
21
- "suites/SpecHelper.js",
22
- "suites/**/*.js"
23
- ]);
18
+ config.set({
19
+ // base path, that will be used to resolve files and exclude
20
+ basePath: '../',
24
21
 
25
- // list of files to exclude
26
- exclude = [
27
- ];
22
+ plugins: ['karma-mocha', 'karma-phantomjs-launcher', 'karma-chrome-launcher'],
28
23
 
29
- // test results reporter to use
30
- // possible values: 'dots', 'progress', 'junit'
31
- reporters = ['dots'];
24
+ // frameworks to use
25
+ frameworks: ['mocha'],
32
26
 
33
- // web server port
34
- port = 8080;
27
+ // list of files / patterns to load in the browser
28
+ files: files,
29
+ exclude: [],
35
30
 
36
- // cli runner port
37
- runnerPort = 9100;
31
+ // test results reporter to use
32
+ // possible values: 'dots', 'progress', 'junit', 'growl', 'coverage'
33
+ reporters: ['dots'],
38
34
 
39
- // enable / disable colors in the output (reporters and logs)
40
- colors = true;
35
+ // web server port
36
+ port: 9876,
41
37
 
42
- // level of logging
43
- // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
44
- logLevel = LOG_WARN;
38
+ // level of logging
39
+ // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
40
+ logLevel: config.LOG_WARN,
45
41
 
46
- // enable / disable watching file and executing tests whenever any file changes
47
- autoWatch = false;
42
+ // enable / disable colors in the output (reporters and logs)
43
+ colors: true,
48
44
 
49
- // Start these browsers, currently available:
50
- // - Chrome
51
- // - ChromeCanary
52
- // - Firefox
53
- // - Opera
54
- // - Safari (only Mac)
55
- // - PhantomJS
56
- // - IE (only Windows)
57
- browsers = ['PhantomJS'];
45
+ // enable / disable watching file and executing tests whenever any file changes
46
+ autoWatch: false,
58
47
 
59
- // If browser does not capture in given timeout [ms], kill it
60
- captureTimeout = 5000;
48
+ // Start these browsers, currently available:
49
+ // - Chrome
50
+ // - ChromeCanary
51
+ // - Firefox
52
+ // - Opera
53
+ // - Safari (only Mac)
54
+ // - PhantomJS
55
+ // - IE (only Windows)
56
+ browsers: ['PhantomJS'],
61
57
 
62
- // Continuous Integration mode
63
- // if true, it capture browsers, run tests and exit
64
- singleRun = true;
58
+ // If browser does not capture in given timeout [ms], kill it
59
+ captureTimeout: 5000,
60
+
61
+ // Continuous Integration mode
62
+ // if true, it capture browsers, run tests and exit
63
+ singleRun: true
64
+ });
65
+ };
@@ -0,0 +1,25 @@
1
+ {
2
+ "browser": true,
3
+ "node": true,
4
+ "predef": ["define", "L", "expect", "describe", "it", "sinon", "happen", "beforeEach", "afterEach"],
5
+ "strict": false,
6
+ "bitwise": true,
7
+ "camelcase": true,
8
+ "curly": true,
9
+ "eqeqeq": true,
10
+ "forin": false,
11
+ "immed": true,
12
+ "latedef": true,
13
+ "newcap": true,
14
+ "noarg": true,
15
+ "noempty": true,
16
+ "nonew": true,
17
+ "undef": true,
18
+ // "unused": true,
19
+ // "quotmark": "single",
20
+ "indent": 4,
21
+ "trailing": true,
22
+ "white": true,
23
+ "smarttabs": true
24
+ // "maxlen": 120
25
+ }
@@ -1,5 +1,5 @@
1
- describe('L#noConflict', function() {
2
- it('restores the previous L value and returns Leaflet namespace', function(){
1
+ describe('L#noConflict', function () {
2
+ it('restores the previous L value and returns Leaflet namespace', function () {
3
3
 
4
4
  expect(L.version).to.be.ok();
5
5
 
@@ -1,26 +1,42 @@
1
- function noSpecs() {
2
- xit('has no specs');
3
- }
4
-
5
1
  if (!Array.prototype.map) {
6
- Array.prototype.map = function(fun /*, thisp */) {
7
- "use strict";
2
+ Array.prototype.map = function (fun /*, thisp */) {
3
+ "use strict";
4
+
5
+ if (this === void 0 || this === null) {
6
+ throw new TypeError();
7
+ }
8
8
 
9
- if (this === void 0 || this === null)
10
- throw new TypeError();
9
+ var t = Object(this);
10
+ // jshint bitwise: false
11
+ var len = t.length >>> 0;
12
+ if (typeof fun !== "function") {
13
+ throw new TypeError();
14
+ }
11
15
 
12
- var t = Object(this);
13
- var len = t.length >>> 0;
14
- if (typeof fun !== "function")
15
- throw new TypeError();
16
+ var res = new Array(len);
17
+ var thisp = arguments[1];
18
+ for (var i = 0; i < len; i++) {
19
+ if (i in t) {
20
+ res[i] = fun.call(thisp, t[i], i, t);
21
+ }
22
+ }
23
+
24
+ return res;
25
+ };
26
+ }
16
27
 
17
- var res = new Array(len);
18
- var thisp = arguments[1];
19
- for (var i = 0; i < len; i++) {
20
- if (i in t)
21
- res[i] = fun.call(thisp, t[i], i, t);
22
- }
28
+ expect.Assertion.prototype.near = function (expected, delta) {
29
+ delta = delta || 1;
30
+ expect(this.obj.x).to
31
+ .be.within(expected.x - delta, expected.x + delta);
32
+ expect(this.obj.y).to
33
+ .be.within(expected.y - delta, expected.y + delta);
34
+ };
23
35
 
24
- return res;
25
- };
26
- }
36
+ expect.Assertion.prototype.nearLatLng = function (expected, delta) {
37
+ delta = delta || 1e-4;
38
+ expect(this.obj.lat).to
39
+ .be.within(expected.lat - delta, expected.lat + delta);
40
+ expect(this.obj.lng).to
41
+ .be.within(expected.lng - delta, expected.lng + delta);
42
+ };
@@ -12,7 +12,7 @@ describe("Control.Layers", function () {
12
12
  spy = sinon.spy();
13
13
 
14
14
  map.on('baselayerchange', spy)
15
- .whenReady(function() {
15
+ .whenReady(function () {
16
16
  happen.click(layers._baseLayersList.getElementsByTagName("input")[0]);
17
17
 
18
18
  expect(spy.called).to.be.ok();
@@ -1,11 +1,11 @@
1
- describe("Class", function() {
1
+ describe("Class", function () {
2
2
 
3
- describe("#extend", function() {
3
+ describe("#extend", function () {
4
4
  var Klass,
5
5
  constructor,
6
6
  method;
7
7
 
8
- beforeEach(function() {
8
+ beforeEach(function () {
9
9
  constructor = sinon.spy();
10
10
  method = sinon.spy();
11
11
 
@@ -19,7 +19,7 @@ describe("Class", function() {
19
19
  });
20
20
  });
21
21
 
22
- it("creates a class with the given constructor & properties", function() {
22
+ it("creates a class with the given constructor & properties", function () {
23
23
  var a = new Klass();
24
24
 
25
25
  expect(constructor.called).to.be.ok();
@@ -30,7 +30,7 @@ describe("Class", function() {
30
30
  expect(method.called).to.be.ok();
31
31
  });
32
32
 
33
- it("inherits parent classes' constructor & properties", function() {
33
+ it("inherits parent classes' constructor & properties", function () {
34
34
  var Klass2 = Klass.extend({baz: 2});
35
35
 
36
36
  var b = new Klass2();
@@ -46,28 +46,28 @@ describe("Class", function() {
46
46
  expect(method.called).to.be.ok();
47
47
  });
48
48
 
49
- it("supports static properties", function() {
49
+ it("supports static properties", function () {
50
50
  expect(Klass.bla).to.eql(1);
51
51
  });
52
52
 
53
- it("inherits parent static properties", function() {
53
+ it("inherits parent static properties", function () {
54
54
  var Klass2 = Klass.extend({});
55
55
 
56
56
  expect(Klass2.bla).to.eql(1);
57
57
  });
58
58
 
59
- it("overrides parent static properties", function() {
59
+ it("overrides parent static properties", function () {
60
60
  var Klass2 = Klass.extend({statics: {bla: 2}});
61
61
 
62
62
  expect(Klass2.bla).to.eql(2);
63
63
  });
64
64
 
65
- it("includes the given mixin", function() {
65
+ it("includes the given mixin", function () {
66
66
  var a = new Klass();
67
67
  expect(a.mixin).to.be.ok();
68
68
  });
69
69
 
70
- it("includes multiple mixins", function() {
70
+ it("includes multiple mixins", function () {
71
71
  var Klass2 = L.Class.extend({
72
72
  includes: [{mixin: true}, {mixin2: true}]
73
73
  });
@@ -77,14 +77,14 @@ describe("Class", function() {
77
77
  expect(a.mixin2).to.be.ok();
78
78
  });
79
79
 
80
- it("grants the ability to include the given mixin", function() {
80
+ it("grants the ability to include the given mixin", function () {
81
81
  Klass.include({mixin2: true});
82
82
 
83
83
  var a = new Klass();
84
84
  expect(a.mixin2).to.be.ok();
85
85
  });
86
86
 
87
- it("merges options instead of replacing them", function() {
87
+ it("merges options instead of replacing them", function () {
88
88
  var KlassWithOptions1 = L.Class.extend({
89
89
  options: {
90
90
  foo1: 1,
@@ -1,21 +1,21 @@
1
- describe('Events', function() {
1
+ describe('Events', function () {
2
2
  var Klass;
3
3
 
4
- beforeEach(function() {
4
+ beforeEach(function () {
5
5
  Klass = L.Class.extend({
6
6
  includes: L.Mixin.Events
7
7
  });
8
8
  });
9
9
 
10
- describe('#fireEvent', function() {
10
+ describe('#fireEvent', function () {
11
11
 
12
- it('fires all listeners added through #addEventListener', function() {
12
+ it('fires all listeners added through #addEventListener', function () {
13
13
  var obj = new Klass(),
14
14
  spy1 = sinon.spy(),
15
15
  spy2 = sinon.spy(),
16
16
  spy3 = sinon.spy(),
17
17
  spy4 = sinon.spy(),
18
- spy5 = sinon.spy();
18
+ spy5 = sinon.spy(),
19
19
  spy6 = sinon.spy();
20
20
 
21
21
  obj.addEventListener('test', spy1);
@@ -42,7 +42,7 @@ describe('Events', function() {
42
42
  expect(spy6.callCount).to.be(1);
43
43
  });
44
44
 
45
- it('provides event object to listeners and executes them in the right context', function() {
45
+ it('provides event object to listeners and executes them in the right context', function () {
46
46
  var obj = new Klass(),
47
47
  obj2 = new Klass(),
48
48
  obj3 = new Klass(),
@@ -88,7 +88,7 @@ describe('Events', function() {
88
88
  obj4.fireEvent('test', {baz: 4});
89
89
  });
90
90
 
91
- it('calls no listeners removed through #removeEventListener', function() {
91
+ it('calls no listeners removed through #removeEventListener', function () {
92
92
  var obj = new Klass(),
93
93
  spy = sinon.spy(),
94
94
  spy2 = sinon.spy(),
@@ -171,7 +171,7 @@ describe('Events', function() {
171
171
  expect(spy2.called).to.be(true);
172
172
  });
173
173
 
174
- it('removes listeners with a stamp originally added without one', function() {
174
+ it('removes listeners with a stamp originally added without one', function () {
175
175
  var obj = new Klass(),
176
176
  spy1 = sinon.spy(),
177
177
  spy2 = sinon.spy(),
@@ -189,6 +189,30 @@ describe('Events', function() {
189
189
  expect(spy1.called).to.be(false);
190
190
  expect(spy2.called).to.be(false);
191
191
  });
192
+
193
+ it('removes listeners with context == this and a stamp originally added without one', function () {
194
+ var obj = new Klass(),
195
+ obj2 = new Klass(),
196
+ spy1 = sinon.spy(),
197
+ spy2 = sinon.spy(),
198
+ spy3 = sinon.spy();
199
+
200
+ obj.addEventListener('test', spy1, obj);
201
+ L.Util.stamp(obj);
202
+ obj.addEventListener('test', spy2, obj);
203
+ obj.addEventListener('test', spy3, obj2); // So that there is a contextId based listener, otherwise removeEventListener will do correct behaviour anyway
204
+
205
+ obj.removeEventListener('test', spy1, obj);
206
+ obj.removeEventListener('test', spy2, obj);
207
+ obj.removeEventListener('test', spy3, obj2);
208
+
209
+ obj.fireEvent('test');
210
+
211
+ expect(spy1.called).to.be(false);
212
+ expect(spy2.called).to.be(false);
213
+ expect(spy3.called).to.be(false);
214
+ });
215
+
192
216
  it('doesnt lose track of listeners when removing non existent ones', function () {
193
217
  var obj = new Klass(),
194
218
  spy = sinon.spy(),
@@ -210,11 +234,43 @@ describe('Events', function() {
210
234
 
211
235
  expect(spy.called).to.be(false);
212
236
  });
237
+
238
+ it('correctly removes all listeners if given no fn', function () {
239
+ var obj = new Klass(),
240
+ spy = sinon.spy(),
241
+ foo = {},
242
+ foo2 = {},
243
+ foo3 = {};
244
+
245
+ obj.addEventListener('test', spy, foo2);
246
+ obj.addEventListener('test', spy, foo3);
247
+
248
+ obj.removeEventListener('test'); // Removes both of the above listeners
249
+
250
+ expect(obj.hasEventListeners('test')).to.be(false);
251
+
252
+ //Add and remove a listener
253
+ obj.addEventListener('test', spy, foo2);
254
+ obj.removeEventListener('test', spy, foo2);
255
+
256
+ expect(obj.hasEventListeners('test')).to.be(false);
257
+ });
258
+
259
+ it('makes sure an event is not triggered if a listener is removed during dispatch', function () {
260
+ var obj = new Klass(),
261
+ spy = sinon.spy();
262
+
263
+ obj.addEventListener('test', function () { obj.removeEventListener('test', spy); });
264
+ obj.addEventListener('test', spy);
265
+ obj.fireEvent('test');
266
+
267
+ expect(spy.called).to.be(false);
268
+ });
213
269
  });
214
270
 
215
- describe('#on, #off & #fire', function() {
271
+ describe('#on, #off & #fire', function () {
216
272
 
217
- it('works like #addEventListener && #removeEventListener', function() {
273
+ it('works like #addEventListener && #removeEventListener', function () {
218
274
  var obj = new Klass(),
219
275
  spy = sinon.spy();
220
276
 
@@ -229,7 +285,7 @@ describe('Events', function() {
229
285
  expect(spy.callCount).to.be.lessThan(2);
230
286
  });
231
287
 
232
- it('does not override existing methods with the same name', function() {
288
+ it('does not override existing methods with the same name', function () {
233
289
  var spy1 = sinon.spy(),
234
290
  spy2 = sinon.spy(),
235
291
  spy3 = sinon.spy();
@@ -254,10 +310,10 @@ describe('Events', function() {
254
310
  });
255
311
  });
256
312
 
257
- describe("#clearEventListeners", function() {
258
- it("clears all registered listeners on an object", function() {
313
+ describe("#clearEventListeners", function () {
314
+ it("clears all registered listeners on an object", function () {
259
315
  var spy = sinon.spy(),
260
- obj = new Klass()
316
+ obj = new Klass(),
261
317
  otherObj = new Klass();
262
318
 
263
319
  obj.on('test', spy, obj);
@@ -271,8 +327,8 @@ describe('Events', function() {
271
327
  });
272
328
  });
273
329
 
274
- describe('#once', function() {
275
- it('removes event listeners after first trigger', function() {
330
+ describe('#once', function () {
331
+ it('removes event listeners after first trigger', function () {
276
332
  var obj = new Klass(),
277
333
  spy = sinon.spy();
278
334
 
@@ -286,7 +342,7 @@ describe('Events', function() {
286
342
  expect(spy.callCount).to.be.lessThan(2);
287
343
  });
288
344
 
289
- it('works with an object hash', function() {
345
+ it('works with an object hash', function () {
290
346
  var obj = new Klass(),
291
347
  spy = sinon.spy(),
292
348
  otherSpy = sinon.spy();
@@ -321,7 +377,7 @@ describe('Events', function() {
321
377
  expect(spy.called).to.be(false);
322
378
  });
323
379
 
324
- it('works if called from a context that doesnt implement #Events', function() {
380
+ it('works if called from a context that doesnt implement #Events', function () {
325
381
  var obj = new Klass(),
326
382
  spy = sinon.spy(),
327
383
  foo = {};