Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 495751
Collapse All | Expand All

(-)a/bundles/org.eclipse.orion.client.javascript/web/javascript/nls/root/messages.js (+1 lines)
Lines 43-48 Link Here
43
	'noImpliedEval' : 'Discouraged implied \'eval()\' use:',
43
	'noImpliedEval' : 'Discouraged implied \'eval()\' use:',
44
	'noDupeKeys' : 'Duplicate object keys:',
44
	'noDupeKeys' : 'Duplicate object keys:',
45
	'noDupeKeysFixName': 'Rename key',
45
	'noDupeKeysFixName': 'Rename key',
46
	'NoRedeclareFixName' : 'Rename variable',
46
	'noDuplicateCaseFixName' : 'Rename case',
47
	'noDuplicateCaseFixName' : 'Rename case',
47
	'noIterator': 'Discouraged __iterator__ property use:',
48
	'noIterator': 'Discouraged __iterator__ property use:',
48
	'noProto': 'Discouraged __proto__ property use:',
49
	'noProto': 'Discouraged __proto__ property use:',
(-)a/bundles/org.eclipse.orion.client.javascript/web/javascript/plugins/javascriptPlugin.js (+17 lines)
Lines 1294-1299 Link Here
1294
		provider.registerServiceProvider("orion.edit.command",  //$NON-NLS-1$
1294
		provider.registerServiceProvider("orion.edit.command",  //$NON-NLS-1$
1295
				quickFixComputer,
1295
				quickFixComputer,
1296
				{
1296
				{
1297
					name: javascriptMessages["NoRedeclareFixName"],
1298
					scopeId: "orion.edit.quickfix", //$NON-NLS-1$
1299
					id : "no.redeclare.fix",  //$NON-NLS-1$
1300
					contentType: ['application/javascript', 'text/html'],  //$NON-NLS-1$ //$NON-NLS-2$
1301
					validationProperties: [
1302
						{
1303
							source: "annotation:id", //$NON-NLS-1$
1304
							match: "^(?:no-redeclare)$" //$NON-NLS-1$
1305
						},
1306
						{source: "readonly", match: false} //$NON-NLS-1$
1307
					]
1308
				}
1309
		);
1310
1311
		provider.registerServiceProvider("orion.edit.command",  //$NON-NLS-1$
1312
				quickFixComputer,
1313
				{
1297
					name: javascriptMessages["noDuplicateCaseFixName"],
1314
					name: javascriptMessages["noDuplicateCaseFixName"],
1298
					scopeId: "orion.edit.quickfix", //$NON-NLS-1$
1315
					scopeId: "orion.edit.quickfix", //$NON-NLS-1$
1299
					id : "no.duplicate.case.fix",  //$NON-NLS-1$
1316
					id : "no.duplicate.case.fix",  //$NON-NLS-1$
(-)a/bundles/org.eclipse.orion.client.javascript/web/javascript/quickFixes.js (-3 / +52 lines)
Lines 16-23 Link Here
16
'orion/editor/textModel',
16
'orion/editor/textModel',
17
'javascript/finder',
17
'javascript/finder',
18
'javascript/compilationUnit',
18
'javascript/compilationUnit',
19
'orion/metrics'
19
'orion/metrics',
20
], function(Objects, Deferred, TextModel, Finder, CU, Metrics) {
20
'estraverse/estraverse'
21
], function(Objects, Deferred, TextModel, Finder, CU, Metrics, Estraverse) {
21
/* eslint-disable missing-doc */
22
/* eslint-disable missing-doc */
22
	/**
23
	/**
23
	 * @description Creates a new JavaScript quick fix computer
24
	 * @description Creates a new JavaScript quick fix computer
Lines 423-429 Link Here
423
						return editorContext.syntaxCheck(ast.sourceFile.name);
424
						return editorContext.syntaxCheck(ast.sourceFile.name);
424
					}.bind(this));
425
					}.bind(this));
425
				}.bind(this));
426
				}.bind(this));
426
			}
427
			},
428
			"no-redeclare": function(editorContext, context, astManager) {
429
				return astManager.getAST(editorContext).then(function(ast) {
430
					var node = Finder.findNode(context.annotation.end, ast, {parents:true});
431
					if(node && node.type === 'Identifier') {
432
						var variableName = node.name;
433
						var parents = node.parents;
434
						if (parents) {
435
							// find the parent of the variable declaration
436
							var parentNode = parents.pop();
437
							while (parentNode && parentNode.type !== 'VariableDeclaration') {
438
								parentNode = parents.pop();
439
							}
440
							if (parentNode) {
441
								parentNode = parents.pop();
442
								if (!parentNode) {
443
									return;
444
								}
445
								var groups = [{data: {}, positions: []}];
446
								var linkModel = null;
447
								var end = parentNode.range[1];
448
								var start = node.range[0];
449
								Estraverse.traverse(parentNode, {
450
									/* @callback */
451
									enter: function(n, parent) {
452
										if(n.range[1] <= start) {
453
											return Estraverse.VisitorOption.Skip;
454
										}
455
										if(n.range[0] > end) {
456
											//once we've left the parentNode
457
											return Estraverse.VisitorOption.Break;
458
										}
459
										if (n.type === 'Identifier' && variableName === n.name && n.range[0] >= start && n.range[1] <= end) {
460
											// record this reference
461
											var identifierStart = n.range[0];
462
											var length = n.range[1] - identifierStart;
463
											groups[0].positions.push({offset: identifierStart, length: length});
464
										}
465
									}
466
								});
467
								linkModel = {groups: groups};
468
								return editorContext.exitLinkedMode().then(function() {
469
									return editorContext.enterLinkedMode(linkModel);
470
								});
471
							}
472
						}
473
					}
474
				});
475
			},
427
		}
476
		}
428
	});
477
	});
429
	
478
	
(-)a/bundles/org.eclipse.orion.client.javascript/web/js-tests/javascript/quickfixTests.js (-4359 / +4417 lines)
Lines 275-4770 Link Here
275
				rule.opts = opts;
275
				rule.opts = opts;
276
				return rule;
276
				return rule;
277
			}
277
			}
278
		//RADIX
278
			//RADIX
279
		describe("radix", function() {
279
			describe("radix", function() {
280
			it("parseInt radix", function(done) {
280
				it("parseInt radix", function(done) {
281
				var rule = createTestRule("radix");
281
					var rule = createTestRule("radix");
282
				var expected = {
282
					var expected = {
283
					value: ", 10",
283
						value: ", 10",
284
					start: 23,
284
						start: 23,
285
					end: 23
285
						end: 23
286
				};
286
					};
287
				return getFixes({
287
					return getFixes({
288
					buffer: "var four = parseInt('4');",
288
						buffer: "var four = parseInt('4');",
289
					rule: rule,
289
						rule: rule,
290
					expected: expected,
290
						expected: expected,
291
					callback: done
291
						callback: done
292
					});
292
				});
293
				});
293
			});
294
			});
294
		});
295
			//MISSING-DOC
295
		//MISSING-DOC
296
			describe("missing-doc", function() {
296
		describe("missing-doc", function() {
297
				it("function declaration no params", function(done) {
297
			it("function declaration no params", function(done) {
298
					var rule = createTestRule("missing-doc");
298
				var rule = createTestRule("missing-doc");
299
					var expected = {
299
				var expected = {
300
						value: "\**\n"+
300
					value: "\**\n"+
301
								" * @name a\n"+
301
							" * @name a\n"+
302
								" * @description description\n"+
302
							" * @description description\n"+
303
								" * @returns returns\n"+
303
							" * @returns returns\n"+
304
								" */\n",
304
							" */\n",
305
						start: 0,
305
					start: 0,
306
						end: 0
306
					end: 0
307
					};
307
				};
308
					return getFixes({
308
				return getFixes({
309
						buffer: "function a() {}",
309
					buffer: "function a() {}",
310
						rule: rule,
310
					rule: rule,
311
						expected: expected,
311
					expected: expected,
312
						callback: done
312
					callback: done
313
					});
314
				}); 
315
				it("function declaration params", function(done) {
316
					var rule = createTestRule("missing-doc");
317
					var expected = {
318
						value: "/**\n"+
319
								" * @name a\n"+
320
								" * @description description\n"+
321
								" * @param arg1\n"+
322
								" * @param arg2\n"+
323
								" * @returns returns\n"+
324
								" */\n",
325
						start: 0,
326
						end: 0
327
					};
328
					return getFixes({
329
						buffer: "function a(arg1, arg2) {}",
330
						rule: rule,
331
						expected: expected,
332
						callback: done
333
					});
313
				});
334
				});
314
			}); 
335
				it("function declaration params - underscore", function(done) {
315
			it("function declaration params", function(done) {
336
					var rule = createTestRule("missing-doc");
316
				var rule = createTestRule("missing-doc");
337
					var expected = {
317
				var expected = {
338
						value: "/**\n"+
318
					value: "/**\n"+
339
								" * @name _a\n"+
319
							" * @name a\n"+
340
								" * @description description\n"+
320
							" * @description description\n"+
341
								" * @private\n"+
321
							" * @param arg1\n"+
342
								" * @param arg1\n"+
322
							" * @param arg2\n"+
343
								" * @returns returns\n"+
323
							" * @returns returns\n"+
344
								" */\n",
324
							" */\n",
345
						start: 0,
325
					start: 0,
346
						end: 0
326
					end: 0
347
					};
327
				};
348
					return getFixes({
328
				return getFixes({
349
						buffer: "function _a(arg1) {}",
329
					buffer: "function a(arg1, arg2) {}",
350
						rule: rule,
330
					rule: rule,
351
						expected: expected,
331
					expected: expected,
352
						callback: done
332
					callback: done
353
					});
354
				});
355
				it("function expression - member expression", function(done) {
356
					var rule = createTestRule("missing-doc");
357
					var expected = {
358
						value: "/**\n"+
359
								" * @name f.g\n"+
360
								" * @description description\n"+
361
								" * @function\n"+
362
								" * @returns returns\n"+
363
								" */\n",
364
						start: 0,
365
						end: 0
366
					};
367
					return getFixes({
368
						buffer: "f.g = function() {};",
369
						rule: rule,
370
						expected: expected,
371
						callback: done
372
					});
373
				});
374
				it("function expression - member expression params", function(done) {
375
					var rule = createTestRule("missing-doc");
376
					var expected = {
377
						value: "/**\n"+
378
								" * @name f.g\n"+
379
								" * @description description\n"+
380
								" * @function\n"+
381
								" * @param arg1\n"+
382
								" * @param arg2\n"+
383
								" * @returns returns\n"+
384
								" */\n",
385
						start: 0,
386
						end: 0
387
					};
388
					return getFixes({
389
						buffer: "f.g = function(arg1, arg2) {};",
390
						rule: rule,
391
						expected: expected,
392
						callback: done
393
					});
394
				});
395
				it("function expression - member expression params underscore", function(done) {
396
					var rule = createTestRule("missing-doc");
397
					var expected = {
398
						value: "/**\n"+
399
								" * @name f._g\n"+
400
								" * @description description\n"+
401
								" * @function\n"+
402
								" * @private\n"+
403
								" * @param arg1\n"+
404
								" * @param arg2\n"+
405
								" * @returns returns\n"+
406
								" */\n",
407
						start: 0,
408
						end: 0
409
					};
410
					return getFixes({
411
						buffer: "f._g = function(arg1, arg2) {};",
412
						rule: rule,
413
						expected: expected,
414
						callback: done
415
					});
416
				});
417
				it("function expression - object decl", function(done) {
418
					var rule = createTestRule("missing-doc");
419
					var expected = {
420
						value: "/**\n"+
421
								" * @name one\n"+
422
								" * @description description\n"+
423
								" * @function\n"+
424
								" * @returns returns\n"+
425
								" */\n",
426
						start: 9,
427
						end: 9
428
					};
429
					return getFixes({
430
						buffer: "var o = {one: function() {}};",
431
						rule: rule,
432
						expected: expected,
433
						callback: done
434
					});
435
				});
436
				it("function expression - object decl params", function(done) {
437
					var rule = createTestRule("missing-doc");
438
					var expected = {
439
						value: "/**\n"+
440
								" * @name one\n"+
441
								" * @description description\n"+
442
								" * @function\n"+
443
								" * @param arg1\n"+
444
								" * @param arg2\n"+
445
								" * @returns returns\n"+
446
								" */\n",
447
						start: 9,
448
						end: 9
449
					};
450
					return getFixes({
451
						buffer: "var o = {one: function(arg1, arg2) {}};",
452
						rule: rule,
453
						expected: expected,
454
						callback: done
455
					});
456
				});
457
				it("function expression - object decl params underscore", function(done) {
458
					var rule = createTestRule("missing-doc");
459
					var expected = {
460
						value: "/**\n"+
461
								" * @name _one\n"+
462
								" * @description description\n"+
463
								" * @function\n"+
464
								" * @private\n"+
465
								" * @param arg1\n"+
466
								" * @param arg2\n"+
467
								" * @returns returns\n"+
468
								" */\n",
469
						start: 9,
470
						end: 9
471
					};
472
					return getFixes({
473
						buffer: "var o = {_one: function(arg1, arg2) {}};",
474
						rule: rule,
475
						expected: expected,
476
						callback: done
477
					});
478
				});
479
				it("function declaration params inside HTML", function(done) {
480
					var rule = createTestRule("missing-doc");
481
					var expected = {
482
						value: "/**\n"+
483
								" * @name a\n"+
484
								" * @description description\n"+
485
								" * @param arg1\n"+
486
								" * @param arg2\n"+
487
								" * @returns returns\n"+
488
								" */\n",
489
						start: 15,
490
						end: 15
491
					};
492
					return getFixes({
493
						buffer: "<html><script>\nfunction a(arg1, arg2) {}\n</script></html>",
494
						rule: rule,
495
						expected: expected,
496
						callback: done,
497
						contentType: 'text/html'
498
					});
333
				});
499
				});
334
			});
500
			});
335
			it("function declaration params - underscore", function(done) {
501
			//CURLY
336
				var rule = createTestRule("missing-doc");
502
			describe("curly", function() {
337
				var expected = {
503
				it("simple if", function(done) {
338
					value: "/**\n"+
504
					var rule = createTestRule("curly");
339
							" * @name _a\n"+
505
					var expected = {
340
							" * @description description\n"+
506
						value: " { foo(); }",
341
							" * @private\n"+
507
						start: 11,
342
							" * @param arg1\n"+
508
						end: 18
343
							" * @returns returns\n"+
509
					};
344
							" */\n",
510
					return getFixes({
345
					start: 0,
511
						buffer: "if(foo > 2) foo();",
346
					end: 0
512
						rule: rule,
347
				};
513
						expected: expected,
348
				return getFixes({
514
						callback: done
349
					buffer: "function _a(arg1) {}",
515
					});
350
					rule: rule,
516
				});
351
					expected: expected,
517
				it("simple if line break", function(done) {
352
					callback: done
518
					var rule = createTestRule("curly");
519
					var expected = {
520
						value: " {\nfoo();\n}",
521
						start: 11,
522
						end: 18
523
					};
524
					return getFixes({
525
						buffer: "if(foo > 2)\nfoo();",
526
						rule: rule,
527
						expected: expected,
528
						callback: done
529
					});
530
				});
531
				it("simple if line break and spacing", function(done) {
532
					var rule = createTestRule("curly");
533
					var expected = {
534
						value: " {\n\tfoo();\n}",
535
						start: 11,
536
						end: 19
537
					};
538
					return getFixes({
539
						buffer: "if(foo > 2)\n\tfoo();",
540
						rule: rule,
541
						expected: expected,
542
						callback: done
543
					});
544
				});
545
				it("simple if line break and tabs", function(done) {
546
					var rule = createTestRule("curly");
547
					var expected = {
548
						value: " {\n\t\tfoo();\n\t}",
549
						start: 12,
550
						end: 21
551
					};
552
					return getFixes({
553
						buffer: "\tif(foo > 2)\n\t\tfoo();",
554
						rule: rule,
555
						expected: expected,
556
						callback: done
557
					});
558
				});
559
				it("simple if trailing same line statements", function(done) {
560
					var rule = createTestRule("curly");
561
					var expected = {
562
						value: " { foo(); }",
563
						start: 11,
564
						end: 18
565
					};
566
					return getFixes({
567
						buffer: "if(foo > 2) foo(); bar();",
568
						rule: rule,
569
						expected: expected,
570
						callback: done
571
					});
572
				});
573
				it("simple if trailing same line comments", function(done) {
574
					var rule = createTestRule("curly");
575
					var expected = {
576
						value: "{ foo(); }",
577
						start: 11,
578
						end: 18
579
					};
580
					return getFixes({
581
						buffer: "if(foo > 2) foo(); //comment",
582
						rule: rule,
583
						expected: expected,
584
						callback: done
585
					});
586
				});
587
				it("simple if trailing statements", function(done) {
588
					var rule = createTestRule("curly");
589
					var expected = {
590
						value: " {\nfoo(); //comment\n}",
591
						start: 11,
592
						end: 28
593
					};
594
					return getFixes({
595
						buffer: "if(foo > 2)\nfoo(); //comment",
596
						rule: rule,
597
						expected: expected,
598
						callback: done
599
					});
600
				});
601
				it("simple if-else", function(done) {
602
					var rule = createTestRule("curly");
603
					var expected = {
604
						value: " { bar(); }",
605
						start: 20,
606
						end: 27
607
					};
608
					return getFixes({
609
						buffer: "if(foo) {foo()} else bar();",
610
						rule: rule,
611
						expected: expected,
612
						callback: done
613
					});
614
				});
615
				it("simple if-else trailing statements", function(done) {
616
					var rule = createTestRule("curly");
617
					var expected = {
618
						value: " { bar(); }",
619
						start: 20,
620
						end: 27
621
					};
622
					return getFixes({
623
						buffer: "if(foo) {foo()} else bar(); foo();",
624
						rule: rule,
625
						expected: expected,
626
						callback: done
627
					});
628
				});
629
				it("simple if-else trailing same line comments", function(done) {
630
					var rule = createTestRule("curly");
631
					var expected = {
632
						value: " { bar(); }",
633
						start: 20,
634
						end: 27
635
					};
636
					return getFixes({
637
						buffer: "if(foo) {foo()} else bar(); foo(); //comment",
638
						rule: rule,
639
						expected: expected,
640
						callback: done
641
					});
642
				});
643
				it("simple if-else trailing line statements", function(done) {
644
					var rule = createTestRule("curly");
645
					var expected = {
646
						value: " {\nbar();\n}",
647
						start: 20,
648
						end: 27
649
					};
650
					return getFixes({
651
						buffer: "if(foo) {foo()} else\nbar(); foo(); //comment",
652
						rule: rule,
653
						expected: expected,
654
						callback: done
655
					});
656
				});
657
				it("simple with", function(done) {
658
					var rule = createTestRule("curly");
659
					var expected = {
660
						value: " { bar(); }",
661
						start: 9,
662
						end: 16
663
					};
664
					return getFixes({
665
						buffer: "with(foo) bar();",
666
						rule: rule,
667
						expected: expected,
668
						callback: done
669
					});
670
				});
671
				it("simple with trailing statements", function(done) {
672
					var rule = createTestRule("curly");
673
					var expected = {
674
						value: " {\nbar();\n}",
675
						start: 9,
676
						end: 16
677
					};
678
					return getFixes({
679
						buffer: "with(foo)\nbar(); foo();",
680
						rule: rule,
681
						expected: expected,
682
						callback: done
683
					});
684
				});
685
				it("simple with trailing comment", function(done) {
686
					var rule = createTestRule("curly");
687
					var expected = {
688
						value: " {\nbar(); //comment\n}",
689
						start: 9,
690
						end: 26
691
					};
692
					return getFixes({
693
						buffer: "with(foo)\nbar(); //comment",
694
						rule: rule,
695
						expected: expected,
696
						callback: done
697
					});
698
				});
699
				it("simple with trailing same line statements", function(done) {
700
					var rule = createTestRule("curly");
701
					var expected = {
702
						value: " { v = 34*34/34; }",
703
						start: 9,
704
						end: 23
705
					};
706
					return getFixes({
707
						buffer: "with(foo) v = 34*34/34; foo();",
708
						rule: rule,
709
						expected: expected,
710
						callback: done
711
					});
712
				});
713
				it("simple with trailing same line comments", function(done) {
714
					var rule = createTestRule("curly");
715
					var expected = {
716
						value: " { v = 34*34/34; }",
717
						start: 9,
718
						end: 23
719
					};
720
					return getFixes({
721
						buffer: "with(foo) v = 34*34/34; //comment",
722
						rule: rule,
723
						expected: expected,
724
						callback: done
725
					});
726
				});
727
				it("simple for", function(done) {
728
					var rule = createTestRule("curly");
729
					var expected = {
730
						value: " { if(foo) {foo();} }",
731
						start: 7,
732
						end: 24
733
					};
734
					return getFixes({
735
						buffer: "for(;;) if(foo) {foo();}",
736
						rule: rule,
737
						expected: expected,
738
						callback: done
739
					});
740
				});
741
				it("simple for trailing statements", function(done) {
742
					var rule = createTestRule("curly");
743
					var expected = {
744
						value: " {\nif(foo) {foo();}\n}",
745
						start: 7,
746
						end: 24
747
					};
748
					return getFixes({
749
						buffer: "for(;;)\nif(foo) {foo();} bar();",
750
						rule: rule,
751
						expected: expected,
752
						callback: done
753
					});
754
				});
755
				it("simple for trailing comments", function(done) {
756
					var rule = createTestRule("curly");
757
					var expected = {
758
						value: " {\nif(foo) {foo();} //comment\n}",
759
						start: 7,
760
						end: 34
761
					};
762
					return getFixes({
763
						buffer: "for(;;)\nif(foo) {foo();} //comment",
764
						rule: rule,
765
						expected: expected,
766
						callback: done
767
					});
768
				});
769
				it("simple for trailing same line comments", function(done) {
770
					var rule = createTestRule("curly");
771
					var expected = {
772
						value: "",
773
						start: 7,
774
						end: 24
775
					};
776
					return getFixes({
777
						buffer: "for(;;) if(foo) {foo();} //comment",
778
						rule: rule,
779
						expected: expected,
780
						callback: done
781
					});
782
				});
783
				it("simple for trailing same line statements", function(done) {
784
					var rule = createTestRule("curly");
785
					var expected = {
786
						value: " { if(foo) {foo();} }",
787
						start: 7,
788
						end: 24
789
					};
790
					return getFixes({
791
						buffer: "for(;;) if(foo) {foo();} bar();",
792
						rule: rule,
793
						expected: expected,
794
						callback: done
795
					});
796
				});
797
				it("simple for-in", function(done) {
798
					var rule = createTestRule("curly");
799
					var expected = {
800
						value: " { foo(); }",
801
						start: 11,
802
						end: 18
803
					};
804
					return getFixes({
805
						buffer: "for(w in T) foo();",
806
						rule: rule,
807
						expected: expected,
808
						callback: done
809
					});
810
				});
811
				it("simple for-in trailing statements", function(done) {
812
					var rule = createTestRule("curly");
813
					var expected = {
814
						value: " {\nfoo();\n}",
815
						start: 11,
816
						end: 18
817
					};
818
					return getFixes({
819
						buffer: "for(w in T)\nfoo(); bar();",
820
						rule: rule,
821
						expected: expected,
822
						callback: done
823
					});
824
				});
825
				it("simple for-in trailing comments", function(done) {
826
					var rule = createTestRule("curly");
827
					var expected = {
828
						value: " {\nfoo(); //comment\n}",
829
						start: 11,
830
						end: 28
831
					};
832
					return getFixes({
833
						buffer: "for(w in T)\nfoo(); //comment",
834
						rule: rule,
835
						expected: expected,
836
						callback: done
837
					});
838
				});
839
				it("simple for-in trailing same line comments", function(done) {
840
					var rule = createTestRule("curly");
841
					var expected = {
842
						value: " { foo(); }",
843
						start: 11,
844
						end: 18
845
					};
846
					return getFixes({
847
						buffer: "for(w in T) foo(); //comment",
848
						rule: rule,
849
						expected: expected,
850
						callback: done
851
					});
852
				});
853
				it("simple for-in trailing same line statements", function(done) {
854
					var rule = createTestRule("curly");
855
					var expected = {
856
						value: " { foo(); }",
857
						start: 11,
858
						end: 18
859
					};
860
					return getFixes({
861
						buffer: "for(w in T) foo(); bar();",
862
						rule: rule,
863
						expected: expected,
864
						callback: done
865
					});
866
				});
867
				it("simple while", function(done) {
868
					var rule = createTestRule("curly");
869
					var expected = {
870
						value: " { foo(); }",
871
						start: 11,
872
						end: 18
873
					};
874
					return getFixes({
875
						buffer: "while(true) foo();",
876
						rule: rule,
877
						expected: expected,
878
						callback: done
879
					});
880
				});
881
				it("simple while trailing statements", function(done) {
882
					var rule = createTestRule("curly");
883
					var expected = {
884
						value: " {\nfoo();\n}",
885
						start: 11,
886
						end: 18
887
					};
888
					return getFixes({
889
						buffer: "while(true)\nfoo(); v = 12*12",
890
						rule: rule,
891
						expected: expected,
892
						callback: done
893
					});
894
				});
895
				it("simple while trailing comments", function(done) {
896
					var rule = createTestRule("curly");
897
					var expected = {
898
						value: " {\nfoo(); //comment\n}",
899
						start: 11,
900
						end: 28
901
					};
902
					return getFixes({
903
						buffer: "while(true)\nfoo(); //comment",
904
						rule: rule,
905
						expected: expected,
906
						callback: done
907
					});
908
				});
909
				it("simple while trailing same line statements", function(done) {
910
					var rule = createTestRule("curly");
911
					var expected = {
912
						value: " { foo(); }",
913
						start: 11,
914
						end: 18
915
					};
916
					return getFixes({
917
						buffer: "while(true) foo(); v = 12*12;",
918
						rule: rule,
919
						expected: expected,
920
						callback: done
921
					});
922
				});
923
				it("simple while trailing same line comments", function(done) {
924
					var rule = createTestRule("curly");
925
					var expected = {
926
						value: " { foo(); }",
927
						start: 11,
928
						end: 18
929
					};
930
					return getFixes({
931
						buffer: "while(true) foo(); //comment",
932
						rule: rule,
933
						expected: expected,
934
						callback: done
935
					});
936
				});
937
				it("simple do-while", function(done) {
938
					var rule = createTestRule("curly");
939
					var expected = {
940
						value: " { foo(); }",
941
						start: 2,
942
						end: 9
943
					};
944
					return getFixes({
945
						buffer: "do foo(); while(true)",
946
						rule: rule,
947
						expected: expected,
948
						callback: done
949
					});
950
				});
951
				//this does not work since we have no recovery support for this kind of broken do-while statement
952
	//			it("simple do-while trailing statements", function(done) {
953
	//				var rule = createTestRule("curly");
954
	//				var expected = {
955
	//					value: "",
956
	//					start: -1,
957
	//					end: -1
958
	//				};
959
	//				return getFixes({
960
	//					buffer: "do foo(); bar(); while(true)",
961
	//					rule: rule,
962
	//					expected: expected,
963
	//					callback: done
964
	//				});
965
	//			});
966
				it("simple do-while trailing line comments", function(done) {
967
					var rule = createTestRule("curly");
968
					var expected = {
969
						value: " {\nfoo(); // comment\n}",
970
						start: 2,
971
						end: 20
972
					};
973
					return getFixes({
974
						buffer: "do\nfoo(); // comment\nwhile(true)",
975
						rule: rule,
976
						expected: expected,
977
						callback: done
978
					});
353
				});
979
				});
354
			});
980
			});
355
			it("function expression - member expression", function(done) {
981
			//NO-SHADOW
356
				var rule = createTestRule("missing-doc");
982
			describe("no-shadow", function() {
357
				var expected = {
983
				it("no-shadow 1", function(done) {
358
					value: "/**\n"+
984
					var rule = createTestRule("no-shadow");
359
							" * @name f.g\n"+
985
					var expected = {
360
							" * @description description\n"+
986
						groups: [
361
							" * @function\n"+
987
							{data: {}, positions: [{offset: 25, length: 1}]}
362
							" * @returns returns\n"+
988
						]
363
							" */\n",
989
					};
364
					start: 0,
990
					return getFixes({
365
					end: 0
991
						buffer: "var a; function f() {var a;}",
366
				};
992
						rule: rule,
367
				return getFixes({
993
						expected: expected,
368
					buffer: "f.g = function() {};",
994
						callback: done
369
					rule: rule,
995
					});
370
					expected: expected,
996
				});
371
					callback: done
997
				it("no-shadow 2", function(done) {
998
					var rule = createTestRule("no-shadow");
999
					var expected = {
1000
						groups: [
1001
							{data: {}, positions: [{offset: 31, length: 1}, {offset: 34, length: 1}]},
1002
						]
1003
					};
1004
					return getFixes({
1005
						buffer: "var a = 1; function foo() {var a; a = 10}",
1006
						rule: rule,
1007
						expected: expected,
1008
						callback: done
1009
					});
372
				});
1010
				});
373
			});
1011
			});
374
			it("function expression - member expression params", function(done) {
1012
			//NO-SHADOW-GLOBAL
375
				var rule = createTestRule("missing-doc");
1013
			describe("no-shadow-global", function() {
376
				var expected = {
1014
				it("no-shadow-global 1", function(done) {
377
					value: "/**\n"+
1015
					var rule = createTestRule("no-shadow-global");
378
							" * @name f.g\n"+
1016
					var expected = {
379
							" * @description description\n"+
1017
						groups: [
380
							" * @function\n"+
1018
							{data: {}, positions: [{offset: 27, length: 8}]}
381
							" * @param arg1\n"+
1019
						]
382
							" * @param arg2\n"+
1020
					};
383
							" * @returns returns\n"+
1021
					return getFixes({
384
							" */\n",
1022
						buffer: "/*eslint-env browser*/ var document = 1;",
385
					start: 0,
1023
						rule: rule,
386
					end: 0
1024
						expected: expected,
387
				};
1025
						callback: done
388
				return getFixes({
1026
					});
389
					buffer: "f.g = function(arg1, arg2) {};",
1027
				});
390
					rule: rule,
1028
				it("no-shadow-global 2", function(done) {
391
					expected: expected,
1029
					var rule = createTestRule("no-shadow-global");
392
					callback: done
1030
					var expected = {
1031
						groups: [
1032
							{data: {}, positions: [{offset: 27, length: 8}, {offset: 53, length: 8}]}
1033
						]
1034
					};
1035
					return getFixes({
1036
						buffer: "/*eslint-env browser*/ var document = 1; console.log(document);",
1037
						rule: rule,
1038
						expected: expected,
1039
						callback: done
1040
					});
393
				});
1041
				});
394
			});
1042
			});
395
			it("function expression - member expression params underscore", function(done) {
1043
			//NO-EQ-NULL
396
				var rule = createTestRule("missing-doc");
1044
			describe("no-eq-null", function(){
397
				var expected = {
1045
				it("no-eq-null single 1", function(done) {
398
					value: "/**\n"+
1046
					var rule = createTestRule("no-eq-null");
399
							" * @name f._g\n"+
1047
					var expected = {
400
							" * @description description\n"+
1048
						value: "!==",
401
							" * @function\n"+
1049
						start: 7,
402
							" * @private\n"+
1050
						end: 9
403
							" * @param arg1\n"+
1051
					};
404
							" * @param arg2\n"+
1052
					return getFixes({
405
							" * @returns returns\n"+
1053
						buffer: "if(foo != null) {}",
406
							" */\n",
1054
						rule: rule,
407
					start: 0,
1055
						expected: expected,
408
					end: 0
1056
						callback: done
409
				};
1057
					});
410
				return getFixes({
1058
				});
411
					buffer: "f._g = function(arg1, arg2) {};",
1059
				it("no-eq-null single 2", function(done) {
412
					rule: rule,
1060
					var rule = createTestRule("no-eq-null");
413
					expected: expected,
1061
					var expected = {
414
					callback: done
1062
						value: "!==",
1063
						start: 8,
1064
						end: 10
1065
					};
1066
					return getFixes({
1067
						buffer: "if(null != foo) {}",
1068
						rule: rule,
1069
						expected: expected,
1070
						callback: done
1071
					});
1072
				});
1073
				it("no-eq-null single 3", function(done) {
1074
					var rule = createTestRule("no-eq-null");
1075
					var expected = {
1076
						value: "===",
1077
						start: 8,
1078
						end: 10
1079
					};
1080
					return getFixes({
1081
						buffer: "if(null == foo) {}",
1082
						rule: rule,
1083
						expected: expected,
1084
						callback: done
1085
					});
1086
				});
1087
				it("no-eq-null single 4", function(done) {
1088
					var rule = createTestRule("no-eq-null");
1089
					var expected = {
1090
						value: "===",
1091
						start: 7,
1092
						end: 9
1093
					};
1094
					return getFixes({
1095
						buffer: "if(foo == null) {}",
1096
						rule: rule,
1097
						expected: expected,
1098
						callback: done
1099
					});
1100
				});
1101
				it("no-eq-null multi 1", function(done) {
1102
					var rule = createTestRule("no-eq-null");
1103
					var expected = [
1104
							{value: "===", start: 7, end: 9},
1105
							{value: "!==", start: 31, end: 33}
1106
						];
1107
					return getFixes({
1108
						buffer: "if(foo == null) {} else if(bar != null) {}",
1109
						rule: rule,
1110
						expected: expected,
1111
						callback: done
1112
					});
1113
				});
1114
				it("no-eq-null multi 2", function(done) {
1115
					var rule = createTestRule("no-eq-null");
1116
					var expected = [
1117
							{value: "===", start: 8, end: 10},
1118
							{value: "!==", start: 32, end: 34}
1119
						];
1120
					return getFixes({
1121
						buffer: "if(null == foo) {} else if(null != bar) {}",
1122
						rule: rule,
1123
						expected: expected,
1124
						callback: done
1125
					});
415
				});
1126
				});
416
			});
1127
			});
417
			it("function expression - object decl", function(done) {
1128
			//NO-UNDEF-INIT
418
				var rule = createTestRule("missing-doc");
1129
			describe("no-undef-init", function() {
419
				var expected = {
1130
				it("no-undef-init single 1", function(done) {
420
					value: "/**\n"+
1131
					var rule = createTestRule("no-undef-init");
421
							" * @name one\n"+
1132
					var expected = {
422
							" * @description description\n"+
1133
						value: '',
423
							" * @function\n"+
1134
						start: 7,
424
							" * @returns returns\n"+
1135
						end: 19
425
							" */\n",
1136
					};
426
					start: 9,
1137
					return getFixes({
427
					end: 9
1138
						buffer: "var foo = undefined;",
428
				};
1139
						rule: rule,
429
				return getFixes({
1140
						expected: expected,
430
					buffer: "var o = {one: function() {}};",
1141
						callback: done
431
					rule: rule,
1142
					});
432
					expected: expected,
1143
				});
433
					callback: done
1144
				it("no-undef-init single 2", function(done) {
1145
					var rule = createTestRule("no-undef-init");
1146
					var expected = {
1147
						value: '',
1148
						start: 17,
1149
						end: 29
1150
					};
1151
					return getFixes({
1152
						buffer: "var foo = 10, bar = undefined;",
1153
						rule: rule,
1154
						expected: expected,
1155
						callback: done
1156
					});
1157
				});
1158
				it("no-undef-init multi", function(done) {
1159
					var rule = createTestRule("no-undef-init");
1160
					var expected = [
1161
							{value: '', start: 17, end: 29},
1162
							{value: '', start: 44, end: 56}
1163
						];
1164
					return getFixes({
1165
						buffer: "var foo = 10, bar = undefined, boz = [], baz = undefined;",
1166
						rule: rule,
1167
						expected: expected,
1168
						callback: done
1169
					});
434
				});
1170
				});
435
			});
1171
			});
436
			it("function expression - object decl params", function(done) {
1172
			//NO-SELF-ASSIGN
437
				var rule = createTestRule("missing-doc");
1173
			describe("no-self-assign", function() {
438
				var expected = {
1174
				it("no-self-assign single 1", function(done) {
439
					value: "/**\n"+
1175
					var rule = createTestRule("no-self-assign");
440
							" * @name one\n"+
1176
					var expected = {value:'', start: 14, end: 24};
441
							" * @description description\n"+
1177
					return getFixes({
442
							" * @function\n"+
1178
						buffer: "var foo = 10; foo = foo;",
443
							" * @param arg1\n"+
1179
						rule: rule,
444
							" * @param arg2\n"+
1180
						expected: expected,
445
							" * @returns returns\n"+
1181
						callback: done
446
							" */\n",
1182
					});
447
					start: 9,
448
					end: 9
449
				};
450
				return getFixes({
451
					buffer: "var o = {one: function(arg1, arg2) {}};",
452
					rule: rule,
453
					expected: expected,
454
					callback: done
455
				});
1183
				});
456
			});
1184
				it("no-self-assign single 2", function(done) {
457
			it("function expression - object decl params underscore", function(done) {
1185
					var rule = createTestRule("no-self-assign");
458
				var rule = createTestRule("missing-doc");
1186
					var expected = {value:'', start: 14, end: 26};
459
				var expected = {
1187
					return getFixes({
460
					value: "/**\n"+
1188
						buffer: "var foo = 10; foo = foo  ;",
461
							" * @name _one\n"+
1189
						rule: rule,
462
							" * @description description\n"+
1190
						expected: expected,
463
							" * @function\n"+
1191
						callback: done
464
							" * @private\n"+
1192
					});
465
							" * @param arg1\n"+
466
							" * @param arg2\n"+
467
							" * @returns returns\n"+
468
							" */\n",
469
					start: 9,
470
					end: 9
471
				};
472
				return getFixes({
473
					buffer: "var o = {_one: function(arg1, arg2) {}};",
474
					rule: rule,
475
					expected: expected,
476
					callback: done
477
				});
1193
				});
478
			});
1194
				it("no-self-assign single rename 1", function(done) {
479
			it("function declaration params inside HTML", function(done) {
1195
					var rule = createTestRule("no-self-assign");
480
				var rule = createTestRule("missing-doc");
1196
					var expected = {
481
				var expected = {
1197
						groups: [
482
					value: "/**\n"+
1198
							{data: {}, positions: [{offset: 20, length: 3}]}
483
							" * @name a\n"+
1199
						]
484
							" * @description description\n"+
1200
					};
485
							" * @param arg1\n"+
1201
					return getFixes({
486
							" * @param arg2\n"+
1202
						buffer: "var foo = 10; foo = foo;",
487
							" * @returns returns\n"+
1203
						rule: rule,
488
							" */\n",
1204
						fixid: 'no-self-assign-rename',
489
					start: 15,
1205
						expected: expected,
490
					end: 15
1206
						callback: done
491
				};
1207
					});
492
				return getFixes({
493
					buffer: "<html><script>\nfunction a(arg1, arg2) {}\n</script></html>",
494
					rule: rule,
495
					expected: expected,
496
					callback: done,
497
					contentType: 'text/html'
498
				});
1208
				});
499
			});
1209
				it("no-self-assign single rename 2", function(done) {
500
		});
1210
					var rule = createTestRule("no-self-assign");
501
		//CURLY
1211
					var expected = {
502
		describe("curly", function() {
1212
						groups: [
503
			it("simple if", function(done) {
1213
							{data: {}, positions: [{offset: 20, length: 3}]}
504
				var rule = createTestRule("curly");
1214
						]
505
				var expected = {
1215
					};
506
					value: " { foo(); }",
1216
					return getFixes({
507
					start: 11,
1217
						buffer: "var foo = 10; foo = foo  ;",
508
					end: 18
1218
						rule: rule,
509
				};
1219
						fixid: 'no-self-assign-rename',
510
				return getFixes({
1220
						expected: expected,
511
					buffer: "if(foo > 2) foo();",
1221
						callback: done
512
					rule: rule,
1222
					});
513
					expected: expected,
514
					callback: done
515
				});
1223
				});
516
			});
1224
				it("no-self-assign multi 1", function(done) {
517
			it("simple if line break", function(done) {
1225
					var rule = createTestRule("no-self-assign");
518
				var rule = createTestRule("curly");
1226
					var expected = [
519
				var expected = {
1227
						{value:'', start: 14, end: 24},
520
					value: " {\nfoo();\n}",
1228
						{value:'', start: 40, end: 50}
521
					start: 11,
522
					end: 18
523
				};
524
				return getFixes({
525
					buffer: "if(foo > 2)\nfoo();",
526
					rule: rule,
527
					expected: expected,
528
					callback: done
529
				});
530
			});
531
			it("simple if line break and spacing", function(done) {
532
				var rule = createTestRule("curly");
533
				var expected = {
534
					value: " {\n\tfoo();\n}",
535
					start: 11,
536
					end: 19
537
				};
538
				return getFixes({
539
					buffer: "if(foo > 2)\n\tfoo();",
540
					rule: rule,
541
					expected: expected,
542
					callback: done
543
				});
544
			});
545
			it("simple if line break and tabs", function(done) {
546
				var rule = createTestRule("curly");
547
				var expected = {
548
					value: " {\n\t\tfoo();\n\t}",
549
					start: 12,
550
					end: 21
551
				};
552
				return getFixes({
553
					buffer: "\tif(foo > 2)\n\t\tfoo();",
554
					rule: rule,
555
					expected: expected,
556
					callback: done
557
				});
558
			});
559
			it("simple if trailing same line statements", function(done) {
560
				var rule = createTestRule("curly");
561
				var expected = {
562
					value: " { foo(); }",
563
					start: 11,
564
					end: 18
565
				};
566
				return getFixes({
567
					buffer: "if(foo > 2) foo(); bar();",
568
					rule: rule,
569
					expected: expected,
570
					callback: done
571
				});
572
			});
573
			it("simple if trailing same line comments", function(done) {
574
				var rule = createTestRule("curly");
575
				var expected = {
576
					value: "{ foo(); }",
577
					start: 11,
578
					end: 18
579
				};
580
				return getFixes({
581
					buffer: "if(foo > 2) foo(); //comment",
582
					rule: rule,
583
					expected: expected,
584
					callback: done
585
				});
586
			});
587
			it("simple if trailing statements", function(done) {
588
				var rule = createTestRule("curly");
589
				var expected = {
590
					value: " {\nfoo(); //comment\n}",
591
					start: 11,
592
					end: 28
593
				};
594
				return getFixes({
595
					buffer: "if(foo > 2)\nfoo(); //comment",
596
					rule: rule,
597
					expected: expected,
598
					callback: done
599
				});
600
			});
601
			it("simple if-else", function(done) {
602
				var rule = createTestRule("curly");
603
				var expected = {
604
					value: " { bar(); }",
605
					start: 20,
606
					end: 27
607
				};
608
				return getFixes({
609
					buffer: "if(foo) {foo()} else bar();",
610
					rule: rule,
611
					expected: expected,
612
					callback: done
613
				});
614
			});
615
			it("simple if-else trailing statements", function(done) {
616
				var rule = createTestRule("curly");
617
				var expected = {
618
					value: " { bar(); }",
619
					start: 20,
620
					end: 27
621
				};
622
				return getFixes({
623
					buffer: "if(foo) {foo()} else bar(); foo();",
624
					rule: rule,
625
					expected: expected,
626
					callback: done
627
				});
628
			});
629
			it("simple if-else trailing same line comments", function(done) {
630
				var rule = createTestRule("curly");
631
				var expected = {
632
					value: " { bar(); }",
633
					start: 20,
634
					end: 27
635
				};
636
				return getFixes({
637
					buffer: "if(foo) {foo()} else bar(); foo(); //comment",
638
					rule: rule,
639
					expected: expected,
640
					callback: done
641
				});
642
			});
643
			it("simple if-else trailing line statements", function(done) {
644
				var rule = createTestRule("curly");
645
				var expected = {
646
					value: " {\nbar();\n}",
647
					start: 20,
648
					end: 27
649
				};
650
				return getFixes({
651
					buffer: "if(foo) {foo()} else\nbar(); foo(); //comment",
652
					rule: rule,
653
					expected: expected,
654
					callback: done
655
				});
656
			});
657
			it("simple with", function(done) {
658
				var rule = createTestRule("curly");
659
				var expected = {
660
					value: " { bar(); }",
661
					start: 9,
662
					end: 16
663
				};
664
				return getFixes({
665
					buffer: "with(foo) bar();",
666
					rule: rule,
667
					expected: expected,
668
					callback: done
669
				});
670
			});
671
			it("simple with trailing statements", function(done) {
672
				var rule = createTestRule("curly");
673
				var expected = {
674
					value: " {\nbar();\n}",
675
					start: 9,
676
					end: 16
677
				};
678
				return getFixes({
679
					buffer: "with(foo)\nbar(); foo();",
680
					rule: rule,
681
					expected: expected,
682
					callback: done
683
				});
684
			});
685
			it("simple with trailing comment", function(done) {
686
				var rule = createTestRule("curly");
687
				var expected = {
688
					value: " {\nbar(); //comment\n}",
689
					start: 9,
690
					end: 26
691
				};
692
				return getFixes({
693
					buffer: "with(foo)\nbar(); //comment",
694
					rule: rule,
695
					expected: expected,
696
					callback: done
697
				});
698
			});
699
			it("simple with trailing same line statements", function(done) {
700
				var rule = createTestRule("curly");
701
				var expected = {
702
					value: " { v = 34*34/34; }",
703
					start: 9,
704
					end: 23
705
				};
706
				return getFixes({
707
					buffer: "with(foo) v = 34*34/34; foo();",
708
					rule: rule,
709
					expected: expected,
710
					callback: done
711
				});
712
			});
713
			it("simple with trailing same line comments", function(done) {
714
				var rule = createTestRule("curly");
715
				var expected = {
716
					value: " { v = 34*34/34; }",
717
					start: 9,
718
					end: 23
719
				};
720
				return getFixes({
721
					buffer: "with(foo) v = 34*34/34; //comment",
722
					rule: rule,
723
					expected: expected,
724
					callback: done
725
				});
726
			});
727
			it("simple for", function(done) {
728
				var rule = createTestRule("curly");
729
				var expected = {
730
					value: " { if(foo) {foo();} }",
731
					start: 7,
732
					end: 24
733
				};
734
				return getFixes({
735
					buffer: "for(;;) if(foo) {foo();}",
736
					rule: rule,
737
					expected: expected,
738
					callback: done
739
				});
740
			});
741
			it("simple for trailing statements", function(done) {
742
				var rule = createTestRule("curly");
743
				var expected = {
744
					value: " {\nif(foo) {foo();}\n}",
745
					start: 7,
746
					end: 24
747
				};
748
				return getFixes({
749
					buffer: "for(;;)\nif(foo) {foo();} bar();",
750
					rule: rule,
751
					expected: expected,
752
					callback: done
753
				});
754
			});
755
			it("simple for trailing comments", function(done) {
756
				var rule = createTestRule("curly");
757
				var expected = {
758
					value: " {\nif(foo) {foo();} //comment\n}",
759
					start: 7,
760
					end: 34
761
				};
762
				return getFixes({
763
					buffer: "for(;;)\nif(foo) {foo();} //comment",
764
					rule: rule,
765
					expected: expected,
766
					callback: done
767
				});
768
			});
769
			it("simple for trailing same line comments", function(done) {
770
				var rule = createTestRule("curly");
771
				var expected = {
772
					value: "",
773
					start: 7,
774
					end: 24
775
				};
776
				return getFixes({
777
					buffer: "for(;;) if(foo) {foo();} //comment",
778
					rule: rule,
779
					expected: expected,
780
					callback: done
781
				});
782
			});
783
			it("simple for trailing same line statements", function(done) {
784
				var rule = createTestRule("curly");
785
				var expected = {
786
					value: " { if(foo) {foo();} }",
787
					start: 7,
788
					end: 24
789
				};
790
				return getFixes({
791
					buffer: "for(;;) if(foo) {foo();} bar();",
792
					rule: rule,
793
					expected: expected,
794
					callback: done
795
				});
796
			});
797
			it("simple for-in", function(done) {
798
				var rule = createTestRule("curly");
799
				var expected = {
800
					value: " { foo(); }",
801
					start: 11,
802
					end: 18
803
				};
804
				return getFixes({
805
					buffer: "for(w in T) foo();",
806
					rule: rule,
807
					expected: expected,
808
					callback: done
809
				});
810
			});
811
			it("simple for-in trailing statements", function(done) {
812
				var rule = createTestRule("curly");
813
				var expected = {
814
					value: " {\nfoo();\n}",
815
					start: 11,
816
					end: 18
817
				};
818
				return getFixes({
819
					buffer: "for(w in T)\nfoo(); bar();",
820
					rule: rule,
821
					expected: expected,
822
					callback: done
823
				});
824
			});
825
			it("simple for-in trailing comments", function(done) {
826
				var rule = createTestRule("curly");
827
				var expected = {
828
					value: " {\nfoo(); //comment\n}",
829
					start: 11,
830
					end: 28
831
				};
832
				return getFixes({
833
					buffer: "for(w in T)\nfoo(); //comment",
834
					rule: rule,
835
					expected: expected,
836
					callback: done
837
				});
838
			});
839
			it("simple for-in trailing same line comments", function(done) {
840
				var rule = createTestRule("curly");
841
				var expected = {
842
					value: " { foo(); }",
843
					start: 11,
844
					end: 18
845
				};
846
				return getFixes({
847
					buffer: "for(w in T) foo(); //comment",
848
					rule: rule,
849
					expected: expected,
850
					callback: done
851
				});
852
			});
853
			it("simple for-in trailing same line statements", function(done) {
854
				var rule = createTestRule("curly");
855
				var expected = {
856
					value: " { foo(); }",
857
					start: 11,
858
					end: 18
859
				};
860
				return getFixes({
861
					buffer: "for(w in T) foo(); bar();",
862
					rule: rule,
863
					expected: expected,
864
					callback: done
865
				});
866
			});
867
			it("simple while", function(done) {
868
				var rule = createTestRule("curly");
869
				var expected = {
870
					value: " { foo(); }",
871
					start: 11,
872
					end: 18
873
				};
874
				return getFixes({
875
					buffer: "while(true) foo();",
876
					rule: rule,
877
					expected: expected,
878
					callback: done
879
				});
880
			});
881
			it("simple while trailing statements", function(done) {
882
				var rule = createTestRule("curly");
883
				var expected = {
884
					value: " {\nfoo();\n}",
885
					start: 11,
886
					end: 18
887
				};
888
				return getFixes({
889
					buffer: "while(true)\nfoo(); v = 12*12",
890
					rule: rule,
891
					expected: expected,
892
					callback: done
893
				});
894
			});
895
			it("simple while trailing comments", function(done) {
896
				var rule = createTestRule("curly");
897
				var expected = {
898
					value: " {\nfoo(); //comment\n}",
899
					start: 11,
900
					end: 28
901
				};
902
				return getFixes({
903
					buffer: "while(true)\nfoo(); //comment",
904
					rule: rule,
905
					expected: expected,
906
					callback: done
907
				});
908
			});
909
			it("simple while trailing same line statements", function(done) {
910
				var rule = createTestRule("curly");
911
				var expected = {
912
					value: " { foo(); }",
913
					start: 11,
914
					end: 18
915
				};
916
				return getFixes({
917
					buffer: "while(true) foo(); v = 12*12;",
918
					rule: rule,
919
					expected: expected,
920
					callback: done
921
				});
922
			});
923
			it("simple while trailing same line comments", function(done) {
924
				var rule = createTestRule("curly");
925
				var expected = {
926
					value: " { foo(); }",
927
					start: 11,
928
					end: 18
929
				};
930
				return getFixes({
931
					buffer: "while(true) foo(); //comment",
932
					rule: rule,
933
					expected: expected,
934
					callback: done
935
				});
936
			});
937
			it("simple do-while", function(done) {
938
				var rule = createTestRule("curly");
939
				var expected = {
940
					value: " { foo(); }",
941
					start: 2,
942
					end: 9
943
				};
944
				return getFixes({
945
					buffer: "do foo(); while(true)",
946
					rule: rule,
947
					expected: expected,
948
					callback: done
949
				});
950
			});
951
			//this does not work since we have no recovery support for this kind of broken do-while statement
952
//			it("simple do-while trailing statements", function(done) {
953
//				var rule = createTestRule("curly");
954
//				var expected = {
955
//					value: "",
956
//					start: -1,
957
//					end: -1
958
//				};
959
//				return getFixes({
960
//					buffer: "do foo(); bar(); while(true)",
961
//					rule: rule,
962
//					expected: expected,
963
//					callback: done
964
//				});
965
//			});
966
			it("simple do-while trailing line comments", function(done) {
967
				var rule = createTestRule("curly");
968
				var expected = {
969
					value: " {\nfoo(); // comment\n}",
970
					start: 2,
971
					end: 20
972
				};
973
				return getFixes({
974
					buffer: "do\nfoo(); // comment\nwhile(true)",
975
					rule: rule,
976
					expected: expected,
977
					callback: done
978
				});
979
			});
980
		});
981
		//NO-SHADOW
982
		describe("no-shadow", function() {
983
			it("no-shadow 1", function(done) {
984
				var rule = createTestRule("no-shadow");
985
				var expected = {
986
					groups: [
987
						{data: {}, positions: [{offset: 25, length: 1}]}
988
					]
989
				};
990
				return getFixes({
991
					buffer: "var a; function f() {var a;}",
992
					rule: rule,
993
					expected: expected,
994
					callback: done
995
				});
996
			});
997
			it("no-shadow 2", function(done) {
998
				var rule = createTestRule("no-shadow");
999
				var expected = {
1000
					groups: [
1001
						{data: {}, positions: [{offset: 31, length: 1}, {offset: 34, length: 1}]},
1002
					]
1003
				};
1004
				return getFixes({
1005
					buffer: "var a = 1; function foo() {var a; a = 10}",
1006
					rule: rule,
1007
					expected: expected,
1008
					callback: done
1009
				});
1010
			});
1011
		});
1012
		//NO-SHADOW-GLOBAL
1013
		describe("no-shadow-global", function() {
1014
			it("no-shadow-global 1", function(done) {
1015
				var rule = createTestRule("no-shadow-global");
1016
				var expected = {
1017
					groups: [
1018
						{data: {}, positions: [{offset: 27, length: 8}]}
1019
					]
1020
				};
1021
				return getFixes({
1022
					buffer: "/*eslint-env browser*/ var document = 1;",
1023
					rule: rule,
1024
					expected: expected,
1025
					callback: done
1026
				});
1027
			});
1028
			it("no-shadow-global 2", function(done) {
1029
				var rule = createTestRule("no-shadow-global");
1030
				var expected = {
1031
					groups: [
1032
						{data: {}, positions: [{offset: 27, length: 8}, {offset: 53, length: 8}]}
1033
					]
1034
				};
1035
				return getFixes({
1036
					buffer: "/*eslint-env browser*/ var document = 1; console.log(document);",
1037
					rule: rule,
1038
					expected: expected,
1039
					callback: done
1040
				});
1041
			});
1042
		});
1043
		//NO-EQ-NULL
1044
		describe("no-eq-null", function(){
1045
			it("no-eq-null single 1", function(done) {
1046
				var rule = createTestRule("no-eq-null");
1047
				var expected = {
1048
					value: "!==",
1049
					start: 7,
1050
					end: 9
1051
				};
1052
				return getFixes({
1053
					buffer: "if(foo != null) {}",
1054
					rule: rule,
1055
					expected: expected,
1056
					callback: done
1057
				});
1058
			});
1059
			it("no-eq-null single 2", function(done) {
1060
				var rule = createTestRule("no-eq-null");
1061
				var expected = {
1062
					value: "!==",
1063
					start: 8,
1064
					end: 10
1065
				};
1066
				return getFixes({
1067
					buffer: "if(null != foo) {}",
1068
					rule: rule,
1069
					expected: expected,
1070
					callback: done
1071
				});
1072
			});
1073
			it("no-eq-null single 3", function(done) {
1074
				var rule = createTestRule("no-eq-null");
1075
				var expected = {
1076
					value: "===",
1077
					start: 8,
1078
					end: 10
1079
				};
1080
				return getFixes({
1081
					buffer: "if(null == foo) {}",
1082
					rule: rule,
1083
					expected: expected,
1084
					callback: done
1085
				});
1086
			});
1087
			it("no-eq-null single 4", function(done) {
1088
				var rule = createTestRule("no-eq-null");
1089
				var expected = {
1090
					value: "===",
1091
					start: 7,
1092
					end: 9
1093
				};
1094
				return getFixes({
1095
					buffer: "if(foo == null) {}",
1096
					rule: rule,
1097
					expected: expected,
1098
					callback: done
1099
				});
1100
			});
1101
			it("no-eq-null multi 1", function(done) {
1102
				var rule = createTestRule("no-eq-null");
1103
				var expected = [
1104
						{value: "===", start: 7, end: 9},
1105
						{value: "!==", start: 31, end: 33}
1106
					];
1229
					];
1107
				return getFixes({
1230
					return getFixes({
1108
					buffer: "if(foo == null) {} else if(bar != null) {}",
1231
						buffer: "var foo = 10; foo = foo; var bar = foo; bar = bar;",
1109
					rule: rule,
1232
						rule: rule,
1110
					expected: expected,
1233
						expected: expected,
1111
					callback: done
1234
						callback: done
1235
					});
1112
				});
1236
				});
1113
			});
1237
				it("no-self-assign multi 2", function(done) {
1114
			it("no-eq-null multi 2", function(done) {
1238
					var rule = createTestRule("no-self-assign");
1115
				var rule = createTestRule("no-eq-null");
1239
					var expected = [
1116
				var expected = [
1240
						{value:'', start: 14, end: 27},
1117
						{value: "===", start: 8, end: 10},
1241
						{value:'', start: 43, end: 55}
1118
						{value: "!==", start: 32, end: 34}
1119
					];
1242
					];
1120
				return getFixes({
1243
					return getFixes({
1121
					buffer: "if(null == foo) {} else if(null != bar) {}",
1244
						buffer: "var foo = 10; foo = foo   ; var bar = foo; bar = bar  ;",
1122
					rule: rule,
1245
						rule: rule,
1123
					expected: expected,
1246
						expected: expected,
1124
					callback: done
1247
						callback: done
1248
					});
1249
				});
1250
				it("no-self-assign variable declarator init same as id", function(done) {
1251
					var rule = createTestRule("no-self-assign");
1252
					var expected = {value:'', start: 7, end: 13};
1253
					return getFixes({
1254
						buffer: "var foo = foo;",
1255
						rule: rule,
1256
						expected: expected,
1257
						callback: done
1258
					});
1259
				});
1260
				it("no-self-assign variable declarator init same as id 2", function(done) {
1261
					var rule = createTestRule("no-self-assign");
1262
					var expected = {value:'', start: 7, end: 15};
1263
					return getFixes({
1264
						buffer: "var foo = (foo);",
1265
						rule: rule,
1266
						expected: expected,
1267
						callback: done
1268
					});
1269
				});
1270
				it("no-self-assign variable declarator init same as id 3", function(done) {
1271
					var rule = createTestRule("no-self-assign");
1272
					var expected = {value:'', start: 17, end: 25};
1273
					return getFixes({
1274
						buffer: "var bar = 10, foo = (foo);",
1275
						rule: rule,
1276
						expected: expected,
1277
						callback: done
1278
					});
1125
				});
1279
				});
1126
			});
1280
			});
1127
		});
1281
			//NEW-PARENS
1128
		//NO-UNDEF-INIT
1282
			describe("new-parens", function() {
1129
		describe("no-undef-init", function() {
1283
				it("new-parens 1", function(done) {
1130
			it("no-undef-init single 1", function(done) {
1284
					var rule = createTestRule("new-parens");
1131
				var rule = createTestRule("no-undef-init");
1285
					var expected = {value: "()", start: 15, end: 15};
1132
				var expected = {
1286
					return getFixes({
1133
					value: '',
1287
						buffer: "var v = new Obj;",
1134
					start: 7,
1288
						rule: rule,
1135
					end: 19
1289
						expected: expected,
1136
				};
1290
						callback: done
1137
				return getFixes({
1291
					});
1138
					buffer: "var foo = undefined;",
1292
				});
1139
					rule: rule,
1293
				it("new-parens 2", function(done) {
1140
					expected: expected,
1294
					var rule = createTestRule("new-parens");
1141
					callback: done
1295
					var expected = {value: "()", start: 12, end: 12};
1296
					return getFixes({
1297
						buffer: "with(new Obj) {}",
1298
						rule: rule,
1299
						expected: expected,
1300
						callback: done
1301
					});
1302
				});
1303
				it("new-parens 3", function(done) {
1304
					var rule = createTestRule("new-parens");
1305
					var expected = {value: "()", start: 15, end: 15};
1306
					return getFixes({
1307
						buffer: "var v = new Obj.one;",
1308
						rule: rule,
1309
						expected: expected,
1310
						callback: done
1311
					});
1312
				});
1313
				it("new-parens 4", function(done) {
1314
					var rule = createTestRule("new-parens");
1315
					var expected = {value: "()", start: 23, end: 23};
1316
					return getFixes({
1317
						buffer: "var v = new Obj(new Obj).one;",
1318
						rule: rule,
1319
						expected: expected,
1320
						callback: done
1321
					});
1142
				});
1322
				});
1143
			});
1323
			});
1144
			it("no-undef-init single 2", function(done) {
1324
			//NO-DUPE-KEYS
1145
				var rule = createTestRule("no-undef-init");
1325
			describe("no-dupe-keys", function() {
1146
				var expected = {
1326
				it("no-dupe-keys - rename 1", function(done) {
1147
					value: '',
1327
					var rule = createTestRule("no-dupe-keys");
1148
					start: 17,
1328
					var expected = {
1149
					end: 29
1329
						groups: [
1150
				};
1330
							{data: {}, positions: [{offset: 18, length: 3}]}
1151
				return getFixes({
1331
						]
1152
					buffer: "var foo = 10, bar = undefined;",
1332
					};
1153
					rule: rule,
1333
					return getFixes({
1154
					expected: expected,
1334
						buffer: "var v = {one: {}, one:{}};",
1155
					callback: done
1335
						rule: rule,
1336
						expected: expected,
1337
						callback: done
1338
					});
1339
				});
1340
				it("no-dupe-keys - rename 2", function(done) {
1341
					var rule = createTestRule("no-dupe-keys");
1342
					var expected = {
1343
						groups: [
1344
							{data: {}, positions: [{offset: 20, length: 5}]}
1345
						]
1346
					};
1347
					return getFixes({
1348
						buffer: "var v = {'one': {}, 'one':{}};",
1349
						rule: rule,
1350
						expected: expected,
1351
						callback: done
1352
					});
1353
				});
1354
				it("no-dupe-keys - rename 3", function(done) {
1355
					var rule = createTestRule("no-dupe-keys");
1356
					var expected = {
1357
						groups: [
1358
							{data: {}, positions: [{offset: 27, length: 5}]}
1359
						]
1360
					};
1361
					return getFixes({
1362
						buffer: "var v = {one: {}, two: {}, 'one':{}};",
1363
						rule: rule,
1364
						expected: expected,
1365
						callback: done
1366
					});
1367
				});
1368
				it("no-dupe-keys - rename 4", function(done) {
1369
					var rule = createTestRule("no-dupe-keys");
1370
					var expected = {
1371
						groups: [
1372
							{data: {}, positions: [{offset: 31, length: 3}, {offset: 45, length: 3}]}
1373
						]
1374
					};
1375
					return getFixes({
1376
						buffer: "var obj = { one: function(){}, one: function one() {} };",
1377
						rule: rule,
1378
						expected: expected,
1379
						callback: done
1380
					});
1156
				});
1381
				});
1157
			});
1382
			});
1158
			it("no-undef-init multi", function(done) {
1383
			//NO-DEBUGGER
1159
				var rule = createTestRule("no-undef-init");
1384
			describe("no-debugger", function() {
1160
				var expected = [
1385
				it("no-debugger no semicolon", function(done) {
1161
						{value: '', start: 17, end: 29},
1386
					var rule = createTestRule("no-debugger");
1162
						{value: '', start: 44, end: 56}
1387
					var expected = {
1388
						value: "",
1389
						start: 0,
1390
						end: 8
1391
					};
1392
					return getFixes({
1393
						buffer: "debugger",
1394
						rule: rule, 
1395
						expected: expected,
1396
						callback: done
1397
					});
1398
				});
1399
				it("no-debugger semicolon", function(done) {
1400
					var rule = createTestRule("no-debugger");
1401
					var expected = {
1402
						value: "",
1403
						start: 0,
1404
						end: 9
1405
					};
1406
					return getFixes({
1407
						buffer: "debugger;",
1408
						rule: rule, 
1409
						expected: expected,
1410
						callback: done
1411
					});
1412
				});
1413
				it("no-debugger no semicolon multi", function(done) {
1414
					var rule = createTestRule("no-debugger");
1415
					var expected = [
1416
							{value: "", start: 0, end: 8},
1417
							{value: "", start: 9, end: 17}
1163
					];
1418
					];
1164
				return getFixes({
1419
					return getFixes({
1165
					buffer: "var foo = 10, bar = undefined, boz = [], baz = undefined;",
1420
						buffer: "debugger\ndebugger",
1166
					rule: rule,
1421
						rule: rule, 
1167
					expected: expected,
1422
						expected: expected,
1168
					callback: done
1423
						callback: done
1424
					});
1425
				});
1426
				it("no-debugger semicolon multi", function(done) {
1427
					var rule = createTestRule("no-debugger");
1428
					var expected = [
1429
							{value: "", start: 0, end: 9},
1430
							{value: "", start: 10, end: 19}
1431
					];
1432
					return getFixes({
1433
						buffer: "debugger;\ndebugger;",
1434
						rule: rule, 
1435
						expected: expected,
1436
						callback: done
1437
					});
1438
				});
1439
				it("no-debugger semicolon mixed multi", function(done) {
1440
					var rule = createTestRule("no-debugger");
1441
					var expected = [
1442
							{value: "",	start: 0, end: 8}, 
1443
							{value: "", 	start: 9, end: 18},
1444
							{value: "", 	start: 19, end: 27}
1445
					];
1446
					return getFixes({
1447
						buffer: "debugger\ndebugger;\ndebugger",
1448
						rule: rule, 
1449
						expected: expected,
1450
						callback: done
1451
					});
1169
				});
1452
				});
1170
			});
1453
			});
1171
		});
1454
			describe("no-new-wrappers", function() {
1172
		//NO-SELF-ASSIGN
1455
				it("no-new-wrapper remove new, Math", function(done) {
1173
		describe("no-self-assign", function() {
1456
					var rule = createTestRule("no-new-wrappers");
1174
			it("no-self-assign single 1", function(done) {
1457
					var expected = {
1175
				var rule = createTestRule("no-self-assign");
1458
						value: 'Math',
1176
				var expected = {value:'', start: 14, end: 24};
1459
						start: 8,
1177
				return getFixes({
1460
						end: 18
1178
					buffer: "var foo = 10; foo = foo;",
1461
					};
1179
					rule: rule,
1462
					return getFixes({
1180
					expected: expected,
1463
						buffer: "var n = new Math();",
1181
					callback: done
1464
						rule: rule,
1465
						expected: expected,
1466
						callback: done
1467
					});
1468
				});
1469
				it("no-new-wrapper remove new, JSON", function(done) {
1470
					var rule = createTestRule("no-new-wrappers");
1471
					var expected = {
1472
						value: 'JSON',
1473
						start: 8,
1474
						end: 18
1475
					};
1476
					return getFixes({
1477
						buffer: "var n = new JSON();",
1478
						rule: rule,
1479
						expected: expected,
1480
						callback: done
1481
					});
1482
				});
1483
				it("no-new-wrapper remove new, String 1", function(done) {
1484
					var rule = createTestRule("no-new-wrappers");
1485
					var expected = {
1486
						value: '',
1487
						start: 8,
1488
						end: 12
1489
					};
1490
					return getFixes({
1491
						buffer: "var n = new String(\"one\");",
1492
						rule: rule,
1493
						expected: expected,
1494
						callback: done
1495
					});
1496
				});
1497
				it("no-new-wrapper remove new, String spaces 1", function(done) {
1498
					var rule = createTestRule("no-new-wrappers");
1499
					var expected = {
1500
						value: '',
1501
						start: 8,
1502
						end: 15
1503
					};
1504
					return getFixes({
1505
						buffer: "var n = new    String(\"one\");",
1506
						rule: rule,
1507
						expected: expected,
1508
						callback: done
1509
					});
1510
				});
1511
				it("no-new-wrapper remove new, String spaces 2", function(done) {
1512
					var rule = createTestRule("no-new-wrappers");
1513
					var expected = {
1514
						value: '',
1515
						start: 8,
1516
						end: 15
1517
					};
1518
					return getFixes({
1519
						buffer: "var n =    new String(\"one\");",
1520
						rule: rule,
1521
						expected: expected,
1522
						callback: done
1523
					});
1524
				});
1525
				it("no-new-wrapper remove new, String spaces 3", function(done) {
1526
					var rule = createTestRule("no-new-wrappers");
1527
					var expected = {
1528
						value: '',
1529
						start: 7,
1530
						end: 10
1531
					};
1532
					return getFixes({
1533
						buffer: "var n =new String(\"one\");",
1534
						rule: rule,
1535
						expected: expected,
1536
						callback: done
1537
					});
1538
				});
1539
				it("no-new-wrapper remove new, Number 1", function(done) {
1540
					var rule = createTestRule("no-new-wrappers");
1541
					var expected = {
1542
						value: '',
1543
						start: 8,
1544
						end: 12
1545
					};
1546
					return getFixes({
1547
						buffer: "var n = new Number(12);",
1548
						rule: rule,
1549
						expected: expected,
1550
						callback: done
1551
					});
1552
				});
1553
				it("no-new-wrapper remove new, Number spaces 1", function(done) {
1554
					var rule = createTestRule("no-new-wrappers");
1555
					var expected = {
1556
						value: '',
1557
						start: 8,
1558
						end: 15
1559
					};
1560
					return getFixes({
1561
						buffer: "var n = new    Number(12);",
1562
						rule: rule,
1563
						expected: expected,
1564
						callback: done
1565
					});
1566
				});
1567
				it("no-new-wrapper remove new, Number spaces 2", function(done) {
1568
					var rule = createTestRule("no-new-wrappers");
1569
					var expected = {
1570
						value: '',
1571
						start: 8,
1572
						end: 15
1573
					};
1574
					return getFixes({
1575
						buffer: "var n =    new Number(12);",
1576
						rule: rule,
1577
						expected: expected,
1578
						callback: done
1579
					});
1580
				});
1581
				it("no-new-wrapper remove new, Number spaces 3", function(done) {
1582
					var rule = createTestRule("no-new-wrappers");
1583
					var expected = {
1584
						value: '',
1585
						start: 7,
1586
						end: 10
1587
					};
1588
					return getFixes({
1589
						buffer: "var n =new Number(12);",
1590
						rule: rule,
1591
						expected: expected,
1592
						callback: done
1593
					});
1594
				});
1595
				it("no-new-wrapper remove new, Boolean 1", function(done) {
1596
					var rule = createTestRule("no-new-wrappers");
1597
					var expected = {
1598
						value: '',
1599
						start: 8,
1600
						end: 12
1601
					};
1602
					return getFixes({
1603
						buffer: "var n = new Boolean(true);",
1604
						rule: rule,
1605
						expected: expected,
1606
						callback: done
1607
					});
1608
				});
1609
				it("no-new-wrapper remove new, Boolean spaces 1", function(done) {
1610
					var rule = createTestRule("no-new-wrappers");
1611
					var expected = {
1612
						value: '',
1613
						start: 8,
1614
						end: 15
1615
					};
1616
					return getFixes({
1617
						buffer: "var n = new    Boolean(false);",
1618
						rule: rule,
1619
						expected: expected,
1620
						callback: done
1621
					});
1622
				});
1623
				it("no-new-wrapper remove new, Boolean spaces 2", function(done) {
1624
					var rule = createTestRule("no-new-wrappers");
1625
					var expected = {
1626
						value: '',
1627
						start: 8,
1628
						end: 15
1629
					};
1630
					return getFixes({
1631
						buffer: "var n =    new Boolean(true);",
1632
						rule: rule,
1633
						expected: expected,
1634
						callback: done
1635
					});
1636
				});
1637
				it("no-new-wrapper remove new, Boolean spaces 3", function(done) {
1638
					var rule = createTestRule("no-new-wrappers");
1639
					var expected = {
1640
						value: '',
1641
						start: 7,
1642
						end: 10
1643
					};
1644
					return getFixes({
1645
						buffer: "var n =new Boolean(false);",
1646
						rule: rule,
1647
						expected: expected,
1648
						callback: done
1649
					});
1650
				});
1651
				it("no-new-wrapper convert to literal, String 1", function(done) {
1652
					var rule = createTestRule("no-new-wrappers");
1653
					var expected = {
1654
						value: '"one"',
1655
						start: 8,
1656
						end: 25
1657
					};
1658
					return getFixes({
1659
						buffer: 'var n = new String("one");',
1660
						rule: rule,
1661
						fixid: 'no-new-wrappers-literal',
1662
						expected: expected,
1663
						callback: done
1664
					});
1665
				});
1666
				it("no-new-wrapper convert to literal, String 2", function(done) {
1667
					var rule = createTestRule("no-new-wrappers");
1668
					var expected = {
1669
						value: '""',
1670
						start: 8,
1671
						end: 22
1672
					};
1673
					return getFixes({
1674
						buffer: 'var n = new String("");',
1675
						rule: rule,
1676
						fixid: 'no-new-wrappers-literal',
1677
						expected: expected,
1678
						callback: done
1679
					});
1680
				});
1681
				it("no-new-wrapper convert to literal, Math", function(done) {
1682
					var rule = createTestRule("no-new-wrappers");
1683
					var expected = {
1684
						value: 'Math',
1685
						start: 8,
1686
						end: 18
1687
					};
1688
					return getFixes({
1689
						buffer: 'var n = new Math();',
1690
						rule: rule,
1691
						fixid: 'no-new-wrappers-literal',
1692
						expected: expected,
1693
						callback: done
1694
					});
1695
				});
1696
				it("no-new-wrapper convert to literal, Math", function(done) {
1697
					var rule = createTestRule("no-new-wrappers");
1698
					var expected = {
1699
						value: 'JSON',
1700
						start: 8,
1701
						end: 18
1702
					};
1703
					return getFixes({
1704
						buffer: 'var n = new JSON();',
1705
						rule: rule,
1706
						fixid: 'no-new-wrappers-literal',
1707
						expected: expected,
1708
						callback: done
1709
					});
1710
				});
1711
				it("no-new-wrapper convert to literal, Number 1", function(done) {
1712
					var rule = createTestRule("no-new-wrappers");
1713
					var expected = {
1714
						value: '13',
1715
						start: 8,
1716
						end: 22
1717
					};
1718
					return getFixes({
1719
						buffer: 'var n = new Number(13);',
1720
						rule: rule,
1721
						fixid: 'no-new-wrappers-literal',
1722
						expected: expected,
1723
						callback: done
1724
					});
1725
				});
1726
				it("no-new-wrapper convert to literal, Number 2", function(done) {
1727
					var rule = createTestRule("no-new-wrappers");
1728
					var expected = {
1729
						value: '0',
1730
						start: 8,
1731
						end: 20
1732
					};
1733
					return getFixes({
1734
						buffer: 'var n = new Number();',
1735
						rule: rule,
1736
						fixid: 'no-new-wrappers-literal',
1737
						expected: expected,
1738
						callback: done
1739
					});
1740
				});
1741
				it("no-new-wrapper convert to literal, non-number to Number 1", function(done) {
1742
					var rule = createTestRule("no-new-wrappers");
1743
					var expected = {
1744
						value: 'NaN',
1745
						start: 8,
1746
						end: 29
1747
					};
1748
					return getFixes({
1749
						buffer: 'var n = new Number(undefined);',
1750
						rule: rule,
1751
						fixid: 'no-new-wrappers-literal',
1752
						expected: expected,
1753
						callback: done
1754
					});
1755
				});
1756
				it("no-new-wrapper convert to literal, non-number to Number 2", function(done) {
1757
					var rule = createTestRule("no-new-wrappers");
1758
					var expected = {
1759
						value: 'NaN',
1760
						start: 8,
1761
						end: 23
1762
					};
1763
					return getFixes({
1764
						buffer: 'var n = new Number(NaN);',
1765
						rule: rule,
1766
						fixid: 'no-new-wrappers-literal',
1767
						expected: expected,
1768
						callback: done
1769
					});
1770
				});
1771
				it("no-new-wrapper convert to literal, non-number to Number 3", function(done) {
1772
					var rule = createTestRule("no-new-wrappers");
1773
					var expected = {
1774
						value: '0',
1775
						start: 8,
1776
						end: 22
1777
					};
1778
					return getFixes({
1779
						buffer: 'var n = new Number("");',
1780
						rule: rule,
1781
						fixid: 'no-new-wrappers-literal',
1782
						expected: expected,
1783
						callback: done
1784
					});
1785
				});
1786
				it("no-new-wrapper convert to literal, non-number to Number 4", function(done) {
1787
					var rule = createTestRule("no-new-wrappers");
1788
					var expected = {
1789
						value: '0',
1790
						start: 8,
1791
						end: 23
1792
					};
1793
					return getFixes({
1794
						buffer: 'var n = new Number("0");',
1795
						rule: rule,
1796
						fixid: 'no-new-wrappers-literal',
1797
						expected: expected,
1798
						callback: done
1799
					});
1800
				});
1801
				it("no-new-wrapper convert to literal, non-number to Number 5", function(done) {
1802
					var rule = createTestRule("no-new-wrappers");
1803
					var expected = {
1804
						value: '1234',
1805
						start: 8,
1806
						end: 26
1807
					};
1808
					return getFixes({
1809
						buffer: 'var n = new Number("1234");',
1810
						rule: rule,
1811
						fixid: 'no-new-wrappers-literal',
1812
						expected: expected,
1813
						callback: done
1814
					});
1815
				});
1816
				it("no-new-wrapper convert to literal, non-number to Number 6", function(done) {
1817
					var rule = createTestRule("no-new-wrappers");
1818
					var expected = {
1819
						value: '0',
1820
						start: 8,
1821
						end: 24
1822
					};
1823
					return getFixes({
1824
						buffer: 'var n = new Number(null);',
1825
						rule: rule,
1826
						fixid: 'no-new-wrappers-literal',
1827
						expected: expected,
1828
						callback: done
1829
					});
1830
				});
1831
				it("no-new-wrapper convert to literal, Boolean 1", function(done) {
1832
					var rule = createTestRule("no-new-wrappers");
1833
					var expected = {
1834
						value: 'true',
1835
						start: 8,
1836
						end: 25
1837
					};
1838
					return getFixes({
1839
						buffer: 'var n = new Boolean(true);',
1840
						rule: rule,
1841
						fixid: 'no-new-wrappers-literal',
1842
						expected: expected,
1843
						callback: done
1844
					});
1845
				});
1846
				it("no-new-wrapper convert to literal, Boolean 2", function(done) {
1847
					var rule = createTestRule("no-new-wrappers");
1848
					var expected = {
1849
						value: 'false',
1850
						start: 8,
1851
						end: 21
1852
					};
1853
					return getFixes({
1854
						buffer: 'var n = new Boolean();',
1855
						rule: rule,
1856
						fixid: 'no-new-wrappers-literal',
1857
						expected: expected,
1858
						callback: done
1859
					});
1860
				});
1861
				it("no-new-wrapper convert to literal, Boolean falsey 1", function(done) {
1862
					var rule = createTestRule("no-new-wrappers");
1863
					var expected = {
1864
						value: 'false',
1865
						start: 8,
1866
						end: 22
1867
					};
1868
					return getFixes({
1869
						buffer: 'var n = new Boolean(0);',
1870
						rule: rule,
1871
						fixid: 'no-new-wrappers-literal',
1872
						expected: expected,
1873
						callback: done
1874
					});
1875
				});
1876
				it("no-new-wrapper convert to literal, Boolean falsey 2", function(done) {
1877
					var rule = createTestRule("no-new-wrappers");
1878
					var expected = {
1879
						value: 'false',
1880
						start: 8,
1881
						end: 23
1882
					};
1883
					return getFixes({
1884
						buffer: 'var n = new Boolean(-0);',
1885
						rule: rule,
1886
						fixid: 'no-new-wrappers-literal',
1887
						expected: expected,
1888
						callback: done
1889
					});
1890
				});
1891
				it("no-new-wrapper convert to literal, Boolean falsey 2", function(done) {
1892
					var rule = createTestRule("no-new-wrappers");
1893
					var expected = {
1894
						value: 'false',
1895
						start: 8,
1896
						end: 25
1897
					};
1898
					return getFixes({
1899
						buffer: 'var n = new Boolean(null);',
1900
						rule: rule,
1901
						fixid: 'no-new-wrappers-literal',
1902
						expected: expected,
1903
						callback: done
1904
					});
1905
				});
1906
				it("no-new-wrapper convert to literal, Boolean falsey 3", function(done) {
1907
					var rule = createTestRule("no-new-wrappers");
1908
					var expected = {
1909
						value: 'false',
1910
						start: 8,
1911
						end: 23
1912
					};
1913
					return getFixes({
1914
						buffer: 'var n = new Boolean("");',
1915
						rule: rule,
1916
						fixid: 'no-new-wrappers-literal',
1917
						expected: expected,
1918
						callback: done
1919
					});
1920
				});
1921
				it("no-new-wrapper convert to literal, Boolean falsey 4", function(done) {
1922
					var rule = createTestRule("no-new-wrappers");
1923
					var expected = {
1924
						value: 'false',
1925
						start: 8,
1926
						end: 23
1927
					};
1928
					return getFixes({
1929
						buffer: "var n = new Boolean('');",
1930
						rule: rule,
1931
						fixid: 'no-new-wrappers-literal',
1932
						expected: expected,
1933
						callback: done
1934
					});
1935
				});
1936
				it("no-new-wrapper convert to literal, Boolean falsey 5", function(done) {
1937
					var rule = createTestRule("no-new-wrappers");
1938
					var expected = {
1939
						value: 'false',
1940
						start: 8,
1941
						end: 30
1942
					};
1943
					return getFixes({
1944
						buffer: 'var n = new Boolean(undefined);',
1945
						rule: rule,
1946
						fixid: 'no-new-wrappers-literal',
1947
						expected: expected,
1948
						callback: done
1949
					});
1182
				});
1950
				});
1183
			});
1951
				it("no-new-wrapper convert to literal, Boolean falsey 6", function(done) {
1184
			it("no-self-assign single 2", function(done) {
1952
					var rule = createTestRule("no-new-wrappers");
1185
				var rule = createTestRule("no-self-assign");
1953
					var expected = {
1186
				var expected = {value:'', start: 14, end: 26};
1954
						value: 'false',
1187
				return getFixes({
1955
						start: 8,
1188
					buffer: "var foo = 10; foo = foo  ;",
1956
						end: 24
1189
					rule: rule,
1957
					};
1190
					expected: expected,
1958
					return getFixes({
1191
					callback: done
1959
						buffer: 'var n = new Boolean(NaN);',
1960
						rule: rule,
1961
						fixid: 'no-new-wrappers-literal',
1962
						expected: expected,
1963
						callback: done
1964
					});
1192
				});
1965
				});
1193
			});
1966
				it("no-new-wrapper convert to literal, Boolean truthy 1", function(done) {
1194
			it("no-self-assign single rename 1", function(done) {
1967
					var rule = createTestRule("no-new-wrappers");
1195
				var rule = createTestRule("no-self-assign");
1968
					var expected = {
1196
				var expected = {
1969
						value: 'true',
1197
					groups: [
1970
						start: 8,
1198
						{data: {}, positions: [{offset: 20, length: 3}]}
1971
						end: 25
1199
					]
1972
					};
1200
				};
1973
					return getFixes({
1201
				return getFixes({
1974
						buffer: 'var n = new Boolean(true);',
1202
					buffer: "var foo = 10; foo = foo;",
1975
						rule: rule,
1203
					rule: rule,
1976
						fixid: 'no-new-wrappers-literal',
1204
					fixid: 'no-self-assign-rename',
1977
						expected: expected,
1205
					expected: expected,
1978
						callback: done
1206
					callback: done
1979
					});
1207
				});
1980
				});
1208
			});
1981
				it("no-new-wrapper convert to literal, Boolean truthy 2", function(done) {
1209
			it("no-self-assign single rename 2", function(done) {
1982
					var rule = createTestRule("no-new-wrappers");
1210
				var rule = createTestRule("no-self-assign");
1983
					var expected = {
1211
				var expected = {
1984
						value: 'true',
1212
					groups: [
1985
						start: 8,
1213
						{data: {}, positions: [{offset: 20, length: 3}]}
1986
						end: 23
1214
					]
1987
					};
1215
				};
1988
					return getFixes({
1216
				return getFixes({
1989
						buffer: 'var n = new Boolean(12);',
1217
					buffer: "var foo = 10; foo = foo  ;",
1990
						rule: rule,
1218
					rule: rule,
1991
						fixid: 'no-new-wrappers-literal',
1219
					fixid: 'no-self-assign-rename',
1992
						expected: expected,
1220
					expected: expected,
1993
						callback: done
1221
					callback: done
1994
					});
1222
				});
1995
				});
1223
			});
1996
				it("no-new-wrapper convert to literal, Boolean truthy 3", function(done) {
1224
			it("no-self-assign multi 1", function(done) {
1997
					var rule = createTestRule("no-new-wrappers");
1225
				var rule = createTestRule("no-self-assign");
1998
					var expected = {
1226
				var expected = [
1999
						value: 'true',
1227
					{value:'', start: 14, end: 24},
2000
						start: 8,
1228
					{value:'', start: 40, end: 50}
2001
						end: 23
1229
				];
2002
					};
1230
				return getFixes({
2003
					return getFixes({
1231
					buffer: "var foo = 10; foo = foo; var bar = foo; bar = bar;",
2004
						buffer: 'var n = new Boolean({});',
1232
					rule: rule,
2005
						rule: rule,
1233
					expected: expected,
2006
						fixid: 'no-new-wrappers-literal',
1234
					callback: done
2007
						expected: expected,
2008
						callback: done
2009
					});
1235
				});
2010
				});
1236
			});
2011
				it("no-new-wrapper convert to literal, Boolean truthy 4", function(done) {
1237
			it("no-self-assign multi 2", function(done) {
2012
					var rule = createTestRule("no-new-wrappers");
1238
				var rule = createTestRule("no-self-assign");
2013
					var expected = {
1239
				var expected = [
2014
						value: 'true',
1240
					{value:'', start: 14, end: 27},
2015
						start: 8,
1241
					{value:'', start: 43, end: 55}
2016
						end: 26
1242
				];
2017
					};
1243
				return getFixes({
2018
					return getFixes({
1244
					buffer: "var foo = 10; foo = foo   ; var bar = foo; bar = bar  ;",
2019
						buffer: 'var n = new Boolean("one");',
1245
					rule: rule,
2020
						rule: rule,
1246
					expected: expected,
2021
						fixid: 'no-new-wrappers-literal',
1247
					callback: done
2022
						expected: expected,
2023
						callback: done
2024
					});
1248
				});
2025
				});
1249
			});
2026
			});
1250
			it("no-self-assign variable declarator init same as id", function(done) {
2027
			//NO-COMMA-DANGLE
1251
				var rule = createTestRule("no-self-assign");
2028
			describe('no-comma-dangle', function() {
1252
				var expected = {value:'', start: 7, end: 13};
2029
				it("Test no-comma-dangle-1", function(callback) {
1253
				return getFixes({
2030
					var rule = createTestRule('no-comma-dangle');
1254
					buffer: "var foo = foo;",
2031
					var expected = {value: "",
1255
					rule: rule,
2032
									start: 15, 
1256
					expected: expected,
2033
									end: 16};
1257
					callback: done
2034
					return getFixes({buffer: 'f({one:1, two:2,});', 
2035
									  rule: rule,
2036
									  expected: expected,
2037
									  callback: callback});
1258
				});
2038
				});
1259
			});
2039
				it("Test no-comma-dangle-2", function(callback) {
1260
			it("no-self-assign variable declarator init same as id 2", function(done) {
2040
					var rule = createTestRule('no-comma-dangle');
1261
				var rule = createTestRule("no-self-assign");
2041
					var expected = {value: "",
1262
				var expected = {value:'', start: 7, end: 15};
2042
									start: 21, 
1263
				return getFixes({
2043
									end: 22};
1264
					buffer: "var foo = (foo);",
2044
					return getFixes({buffer: 'var f = {one:1, two:2,};', 
1265
					rule: rule,
2045
									  rule: rule,
1266
					expected: expected,
2046
									  expected: expected,
1267
					callback: done
2047
									  callback: callback});
2048
				});
2049
				it("Test no-comma-dangle-3", function(callback) {
2050
					var rule = createTestRule('no-comma-dangle');
2051
					var expected = {value: "",
2052
									start: 22, 
2053
									end: 23};
2054
					return getFixes({buffer: 'var f = [{one:1, two:2,}];', 
2055
									  rule: rule,
2056
									  expected: expected,
2057
									  callback: callback});
2058
				});
2059
				it("Test no-comma-dangle-html-1", function(callback) {
2060
					var rule = createTestRule('no-comma-dangle');
2061
					var expected = {value: "",
2062
									start: 35, 
2063
									end: 36};
2064
					return getFixes({buffer: '<html><head><script>f({one:1, two:2,});</script></head></html>', 
2065
									  rule: rule,
2066
									  expected: expected,
2067
									  callback: callback,
2068
									  contentType: 'text/html'});
2069
				});
2070
				it("Test no-comma-dangle-html-2", function(callback) {
2071
					var rule = createTestRule('no-comma-dangle');
2072
					var expected = {value: "",
2073
									start: 41, 
2074
									end: 42};
2075
					return getFixes({buffer: '<html><head><script>var f = {one:1, two:2,};</script></head></html>', 
2076
									  rule: rule,
2077
									  expected: expected,
2078
									  callback: callback,
2079
									  contentType: 'text/html'});
2080
				});
2081
				it("Test no-comma-dangle-html-3", function(callback) {
2082
					var rule = createTestRule('no-comma-dangle');
2083
					var expected = {value: "",
2084
									start: 42, 
2085
									end: 43};
2086
					return getFixes({buffer: '<html><head><script>var f = [{one:1, two:2,}];</script></head></html>', 
2087
									  rule: rule,
2088
									  expected: expected,
2089
									  callback: callback,
2090
									  contentType: 'text/html'});
2091
				});
2092
				it("Test no-comma-dangle-html-4", function(callback) {
2093
					var rule = createTestRule('no-comma-dangle');
2094
					var expected = {value: "",
2095
									start: 59, 
2096
									end: 60};
2097
					return getFixes({buffer: '<html><head><script></script><script>var f = [{one:1, two:2,}];</script></head></html>', 
2098
									  rule: rule,
2099
									  expected: expected,
2100
									  callback: callback,
2101
									  contentType: 'text/html'});
2102
				});
2103
				it("Test no-comma-dangle fix all 1", function(callback) {
2104
					var rule = createTestRule('no-comma-dangle');
2105
					var expected = [
2106
									{value: "",
2107
									start: 15, 
2108
									end: 16},
2109
									{value: "",
2110
									start: 35, 
2111
									end: 36}
2112
									];
2113
					return getFixes({buffer: 'f({one:1, two:2,}); f({one:1, two:2,});', 
2114
									  rule: rule,
2115
									  expected: expected,
2116
									  callback: callback});
1268
				});
2117
				});
1269
			});
2118
				it("Test no-comma-dangle fix all 2", function(callback) {
1270
			it("no-self-assign variable declarator init same as id 3", function(done) {
2119
					var rule = createTestRule('no-comma-dangle');
1271
				var rule = createTestRule("no-self-assign");
2120
					var expected = [
1272
				var expected = {value:'', start: 17, end: 25};
2121
									{value: "",
1273
				return getFixes({
2122
									start: 15, 
1274
					buffer: "var bar = 10, foo = (foo);",
2123
									end: 16},
1275
					rule: rule,
2124
									{value: "",
1276
					expected: expected,
2125
									start: 41, 
1277
					callback: done
2126
									end: 42}
2127
									];
2128
					return getFixes({buffer: 'f({one:1, two:2,});\nvar f = {one:1, two:2,};', 
2129
									  rule: rule,
2130
									  expected: expected,
2131
									  callback: callback});
1278
				});
2132
				});
1279
			});
2133
				it("Test no-comma-dangle fix all 3", function(callback) {
1280
		});
2134
					var rule = createTestRule('no-comma-dangle');
1281
		//NEW-PARENS
2135
					var expected = [
1282
		describe("new-parens", function() {
2136
									{value: "",
1283
			it("new-parens 1", function(done) {
2137
									start: 15, 
1284
				var rule = createTestRule("new-parens");
2138
									end: 16},
1285
				var expected = {value: "()", start: 15, end: 15};
2139
									{value: "",
1286
				return getFixes({
2140
									start: 41, 
1287
					buffer: "var v = new Obj;",
2141
									end: 42},
1288
					rule: rule,
2142
									{value: "",
1289
					expected: expected,
2143
									start: 67, 
1290
					callback: done
2144
									end: 68}
2145
									];
2146
					return getFixes({buffer: 'f({one:1, two:2,}); var f = {one:1, two:2,}; var f = [{one:1, two:2,}];', 
2147
									  rule: rule,
2148
									  expected: expected,
2149
									  callback: callback});
1291
				});
2150
				});
1292
			});
2151
			});
1293
			it("new-parens 2", function(done) {
2152
			//NO-EMPTY-BLOCK
1294
				var rule = createTestRule("new-parens");
2153
			describe("no-empty-block", function() {
1295
				var expected = {value: "()", start: 12, end: 12};
2154
				it("Test no-empty-block-1", function(callback) {
1296
				return getFixes({
2155
					var rule = createTestRule('no-empty-block');
1297
					buffer: "with(new Obj) {}",
2156
					var expected = {value: "//TODO empty block",
1298
					rule: rule,
2157
									start: 14, 
1299
					expected: expected,
2158
									end: 14};
1300
					callback: done
2159
					return getFixes({buffer: 'function f() {}', 
2160
									  rule: rule,
2161
									  expected: expected,
2162
									  callback: callback});
1301
				});
2163
				});
1302
			});
2164
				
1303
			it("new-parens 3", function(done) {
2165
				it("Test no-empty-block-2",function(callback) {
1304
				var rule = createTestRule("new-parens");
2166
					var rule = createTestRule('no-empty-block');
1305
				var expected = {value: "()", start: 15, end: 15};
2167
					var expected = {value: "//TODO empty block",
1306
				return getFixes({
2168
									start: 39, 
1307
					buffer: "var v = new Obj.one;",
2169
									end: 39};
1308
					rule: rule,
2170
					return getFixes({buffer: 'var f = {f: function() { function q() {}}}', 
1309
					expected: expected,
2171
									  rule: rule,
1310
					callback: done
2172
									  expected: expected,
2173
									  callback: callback});
1311
				});
2174
				});
1312
			});
2175
				
1313
			it("new-parens 4", function(done) {
2176
				it("Test no-empty-block-3",function(callback) {
1314
				var rule = createTestRule("new-parens");
2177
					var rule = createTestRule('no-empty-block');
1315
				var expected = {value: "()", start: 23, end: 23};
2178
					var expected = {value: "//TODO empty block",
1316
				return getFixes({
2179
									start: 25, 
1317
					buffer: "var v = new Obj(new Obj).one;",
2180
									end: 25};
1318
					rule: rule,
2181
					return getFixes({buffer: 'var f = { f: function() {}};', 
1319
					expected: expected,
2182
									  rule: rule,
1320
					callback: done
2183
									  expected: expected,
2184
									  callback: callback});
1321
				});
2185
				});
1322
			});
2186
				
1323
		});
2187
				it("Test no-empty-block-4",function(callback) {
1324
		//NO-DUPE-KEYS
2188
					var rule = createTestRule('no-empty-block');
1325
		describe("no-dupe-keys", function() {
2189
					var expected = {value: "//TODO empty block",
1326
			it("no-dupe-keys - rename 1", function(done) {
2190
									start: 10, 
1327
				var rule = createTestRule("no-dupe-keys");
2191
									end: 10};
1328
				var expected = {
2192
					return getFixes({buffer: 'while(f) {}', 
1329
					groups: [
2193
									  rule: rule,
1330
						{data: {}, positions: [{offset: 18, length: 3}]}
2194
									  expected: expected,
1331
					]
2195
									  callback: callback});
1332
				};
1333
				return getFixes({
1334
					buffer: "var v = {one: {}, one:{}};",
1335
					rule: rule,
1336
					expected: expected,
1337
					callback: done
1338
				});
2196
				});
1339
			});
2197
				it("Test no-empty-block-5",function(callback) {
1340
			it("no-dupe-keys - rename 2", function(done) {
2198
					var rule = createTestRule('no-empty-block');
1341
				var rule = createTestRule("no-dupe-keys");
2199
					var expected = {value: "//TODO empty block",
1342
				var expected = {
2200
									start: 7, 
1343
					groups: [
2201
									end: 7};
1344
						{data: {}, positions: [{offset: 20, length: 5}]}
2202
					return getFixes({buffer: 'if(f) {}', 
1345
					]
2203
									  rule: rule,
1346
				};
2204
									  expected: expected,
1347
				return getFixes({
2205
									  callback: callback});
1348
					buffer: "var v = {'one': {}, 'one':{}};",
1349
					rule: rule,
1350
					expected: expected,
1351
					callback: done
1352
				});
2206
				});
1353
			});
2207
				it("Test no-empty-block-6",function(callback) {
1354
			it("no-dupe-keys - rename 3", function(done) {
2208
					var rule = createTestRule('no-empty-block');
1355
				var rule = createTestRule("no-dupe-keys");
2209
					var expected = {value: "//TODO empty block",
1356
				var expected = {
2210
									start: 17, 
1357
					groups: [
2211
									end: 17};
1358
						{data: {}, positions: [{offset: 27, length: 5}]}
2212
					return getFixes({buffer: 'if(f) {while(f) {}}', 
1359
					]
2213
									  rule: rule,
1360
				};
2214
									  expected: expected,
1361
				return getFixes({
2215
									  callback: callback});
1362
					buffer: "var v = {one: {}, two: {}, 'one':{}};",
1363
					rule: rule,
1364
					expected: expected,
1365
					callback: done
1366
				});
2216
				});
1367
			});
2217
				it("Test no-empty-block-html-1",function(callback) {
1368
			it("no-dupe-keys - rename 4", function(done) {
2218
					var rule = createTestRule('no-empty-block');
1369
				var rule = createTestRule("no-dupe-keys");
2219
					var expected = {value: "//TODO empty block",
1370
				var expected = {
2220
									start: 34, 
1371
					groups: [
2221
									end: 34};
1372
						{data: {}, positions: [{offset: 31, length: 3}, {offset: 45, length: 3}]}
2222
					return getFixes({buffer: '<html><head><script>function f() {}</script></head></html>', 
1373
					]
2223
									  rule: rule,
1374
				};
2224
									  expected: expected,
1375
				return getFixes({
2225
									  callback: callback,
1376
					buffer: "var obj = { one: function(){}, one: function one() {} };",
2226
									  contentType: 'text/html'});
1377
					rule: rule,
1378
					expected: expected,
1379
					callback: done
1380
				});
2227
				});
1381
			});
2228
				
1382
		});
2229
				it("Test no-empty-block-html-2",function(callback) {
1383
		//NO-DEBUGGER
2230
					var rule = createTestRule('no-empty-block');
1384
		describe("no-debugger", function() {
2231
					var expected = {value: "//TODO empty block",
1385
			it("no-debugger no semicolon", function(done) {
2232
									start: 59, 
1386
				var rule = createTestRule("no-debugger");
2233
									end: 59};
1387
				var expected = {
2234
					return getFixes({buffer: '<html><head><script>var f = {f: function() { function q() {}}}</script></head></html>', 
1388
					value: "",
2235
									  rule: rule,
1389
					start: 0,
2236
									  expected: expected,
1390
					end: 8
2237
									  callback: callback,
1391
				};
2238
									  contentType: 'text/html'});
1392
				return getFixes({
1393
					buffer: "debugger",
1394
					rule: rule, 
1395
					expected: expected,
1396
					callback: done
1397
				});
2239
				});
1398
			});
2240
				
1399
			it("no-debugger semicolon", function(done) {
2241
				it("Test no-empty-block-html-3",function(callback) {
1400
				var rule = createTestRule("no-debugger");
2242
					var rule = createTestRule('no-empty-block');
1401
				var expected = {
2243
					var expected = {value: "//TODO empty block",
1402
					value: "",
2244
									start: 45, 
1403
					start: 0,
2245
									end: 45};
1404
					end: 9
2246
					return getFixes({buffer: '<html><head><script>var f = { f: function() {}};</script></head></html>', 
1405
				};
2247
									  rule: rule,
1406
				return getFixes({
2248
									  expected: expected,
1407
					buffer: "debugger;",
2249
									  callback: callback,
1408
					rule: rule, 
2250
									  contentType: 'text/html'});
1409
					expected: expected,
1410
					callback: done
1411
				});
2251
				});
1412
			});
2252
				
1413
			it("no-debugger no semicolon multi", function(done) {
2253
				it("Test no-empty-block-html-4",function(callback) {
1414
				var rule = createTestRule("no-debugger");
2254
					var rule = createTestRule('no-empty-block');
1415
				var expected = [
2255
					var expected = {value: "//TODO empty block",
1416
						{value: "", start: 0, end: 8},
2256
									start: 30, 
1417
						{value: "", start: 9, end: 17}
2257
									end: 30};
1418
				];
2258
					return getFixes({buffer: '<html><head><script>while(f) {}</script></head></html>', 
1419
				return getFixes({
2259
									  rule: rule,
1420
					buffer: "debugger\ndebugger",
2260
									  expected: expected,
1421
					rule: rule, 
2261
									  callback: callback,
1422
					expected: expected,
2262
									  contentType: 'text/html'});
1423
					callback: done
1424
				});
2263
				});
1425
			});
2264
				it("Test no-empty-block-html-5",function(callback) {
1426
			it("no-debugger semicolon multi", function(done) {
2265
					var rule = createTestRule('no-empty-block');
1427
				var rule = createTestRule("no-debugger");
2266
					var expected = {value: "//TODO empty block",
1428
				var expected = [
2267
									start: 27, 
1429
						{value: "", start: 0, end: 9},
2268
									end: 27};
1430
						{value: "", start: 10, end: 19}
2269
					return getFixes({buffer: '<html><head><script>if(f) {}</script></head></html>', 
1431
				];
2270
									  rule: rule,
1432
				return getFixes({
2271
									  expected: expected,
1433
					buffer: "debugger;\ndebugger;",
2272
									  callback: callback,
1434
					rule: rule, 
2273
									  contentType: 'text/html'});
1435
					expected: expected,
1436
					callback: done
1437
				});
2274
				});
1438
			});
2275
				it("Test no-empty-block-html-6",function(callback) {
1439
			it("no-debugger semicolon mixed multi", function(done) {
2276
					var rule = createTestRule('no-empty-block');
1440
				var rule = createTestRule("no-debugger");
2277
					var expected = {value: "//TODO empty block",
1441
				var expected = [
2278
									start: 37, 
1442
						{value: "",	start: 0, end: 8}, 
2279
									end: 37};
1443
						{value: "", 	start: 9, end: 18},
2280
					return getFixes({buffer: '<html><head><script>if(f) {while(f) {}}</script></head></html>', 
1444
						{value: "", 	start: 19, end: 27}
2281
									  rule: rule,
1445
				];
2282
									  expected: expected,
1446
				return getFixes({
2283
									  callback: callback,
1447
					buffer: "debugger\ndebugger;\ndebugger",
2284
									  contentType: 'text/html'});
1448
					rule: rule, 
1449
					expected: expected,
1450
					callback: done
1451
				});
2285
				});
1452
			});
2286
				it("Test no-empty-block-html-7",function(callback) {
1453
		});
2287
					var rule = createTestRule('no-empty-block');
1454
		describe("no-new-wrappers", function() {
2288
					var expected = {value: "//TODO empty block",
1455
			it("no-new-wrapper remove new, Math", function(done) {
2289
									start: 54, 
1456
				var rule = createTestRule("no-new-wrappers");
2290
									end: 54};
1457
				var expected = {
2291
					return getFixes({buffer: '<html><head><script></script><script>if(f) {while(f) {}}</script></head></html>', 
1458
					value: 'Math',
2292
									  rule: rule,
1459
					start: 8,
2293
									  expected: expected,
1460
					end: 18
2294
									  callback: callback,
1461
				};
2295
									  contentType: 'text/html'});
1462
				return getFixes({
1463
					buffer: "var n = new Math();",
1464
					rule: rule,
1465
					expected: expected,
1466
					callback: done
1467
				});
2296
				});
1468
			});
2297
			});
1469
			it("no-new-wrapper remove new, JSON", function(done) {
2298
			//NO-EXTRA-PARENS
1470
				var rule = createTestRule("no-new-wrappers");
2299
			describe('no-extra-parens', function(){
1471
				var expected = {
2300
				it("no-extra-parens - if statement",function(callback) {
1472
					value: 'JSON',
2301
					var rule = createTestRule('no-extra-parens');
1473
					start: 8,
2302
					 var expected = [
1474
					end: 18
2303
					 				{value: "",
1475
				};
2304
									start: 10, 
1476
				return getFixes({
2305
									end: 11},
1477
					buffer: "var n = new JSON();",
2306
									{value: "",
1478
					rule: rule,
2307
									start: 12, 
1479
					expected: expected,
2308
									end: 13}
1480
					callback: done
2309
									];
2310
					return getFixes({buffer: 'if (a === (b)){}', 
2311
									  rule: rule,
2312
									  expected: expected,
2313
									  callback: callback});
1481
				});
2314
				});
1482
			});
2315
				it("no-extra-parens - typeof",function(callback) {
1483
			it("no-new-wrapper remove new, String 1", function(done) {
2316
					var rule = createTestRule('no-extra-parens');
1484
				var rule = createTestRule("no-new-wrappers");
2317
					 var expected = [
1485
				var expected = {
2318
					 				{value: " ",
1486
					value: '',
2319
									start: 10, 
1487
					start: 8,
2320
									end: 11},
1488
					end: 12
2321
									{value: "",
1489
				};
2322
									start: 12, 
1490
				return getFixes({
2323
									end: 13}
1491
					buffer: "var n = new String(\"one\");",
2324
									];
1492
					rule: rule,
2325
					return getFixes({buffer: 'if (typeof(a) === "object"){}', 
1493
					expected: expected,
2326
									  rule: rule,
1494
					callback: done
2327
									  expected: expected,
2328
									  callback: callback});
1495
				});
2329
				});
1496
			});
2330
				it("no-extra-parens - typeof 2",function(callback) {
1497
			it("no-new-wrapper remove new, String spaces 1", function(done) {
2331
					var rule = createTestRule('no-extra-parens');
1498
				var rule = createTestRule("no-new-wrappers");
2332
					 var expected = [
1499
				var expected = {
2333
					 				{value: "",
1500
					value: '',
2334
									start: 10, 
1501
					start: 8,
2335
									end: 11},
1502
					end: 15
2336
									{value: "",
1503
				};
2337
									start: 13, 
1504
				return getFixes({
2338
									end: 14}
1505
					buffer: "var n = new    String(\"one\");",
2339
									];
1506
					rule: rule,
2340
					return getFixes({buffer: 'if (typeof( a) === "object"){}', 
1507
					expected: expected,
2341
									  rule: rule,
1508
					callback: done
2342
									  expected: expected,
2343
									  callback: callback});
1509
				});
2344
				});
1510
			});
2345
				it("no-extra-parens - typeof 3",function(callback) {
1511
			it("no-new-wrapper remove new, String spaces 2", function(done) {
2346
					var rule = createTestRule('no-extra-parens');
1512
				var rule = createTestRule("no-new-wrappers");
2347
					 var expected = [
1513
				var expected = {
2348
					 				{value: "",
1514
					value: '',
2349
									start: 11, 
1515
					start: 8,
2350
									end: 12},
1516
					end: 15
2351
									{value: "",
1517
				};
2352
									start: 13, 
1518
				return getFixes({
2353
									end: 14}
1519
					buffer: "var n =    new String(\"one\");",
2354
									];
1520
					rule: rule,
2355
					return getFixes({buffer: 'if (typeof (a) === "object"){}', 
1521
					expected: expected,
2356
									  rule: rule,
1522
					callback: done
2357
									  expected: expected,
2358
									  callback: callback});
1523
				});
2359
				});
1524
			});
2360
				it("no-extra-parens - fix all not nested",function(callback) {
1525
			it("no-new-wrapper remove new, String spaces 3", function(done) {
2361
					var rule = createTestRule('no-extra-parens');
1526
				var rule = createTestRule("no-new-wrappers");
2362
					 var expected = [
1527
				var expected = {
2363
					 				{value: "",
1528
					value: '',
2364
									start: 8, 
1529
					start: 7,
2365
									end: 9},
1530
					end: 10
2366
									{value: "",
1531
				};
2367
									start: 12, 
1532
				return getFixes({
2368
									end: 13},
1533
					buffer: "var n =new String(\"one\");",
2369
									{value: "",
1534
					rule: rule,
2370
									start: 23, 
1535
					expected: expected,
2371
									end: 24},
1536
					callback: done
2372
									{value: "",
2373
									start: 27, 
2374
									end: 28}
2375
									];
2376
					return getFixes({buffer: 'var a = (1+1);\nvar b = (1-1);', 
2377
									  rule: rule,
2378
									  expected: expected,
2379
									  callback: callback});
1537
				});
2380
				});
1538
			});
2381
				it("no-extra-parens - fix all nested",function(callback) {
1539
			it("no-new-wrapper remove new, Number 1", function(done) {
2382
					var rule = createTestRule('no-extra-parens');
1540
				var rule = createTestRule("no-new-wrappers");
2383
					 var expected = [
1541
				var expected = {
2384
					 				{value: "",
1542
					value: '',
2385
									start: 8, 
1543
					start: 8,
2386
									end: 10},
1544
					end: 12
2387
									{value: "",
1545
				};
2388
									start: 11, 
1546
				return getFixes({
2389
									end: 12},
1547
					buffer: "var n = new Number(12);",
2390
									{value: "",
1548
					rule: rule,
2391
									start: 13, 
1549
					expected: expected,
2392
									end: 14},
1550
					callback: done
2393
									{value: "",
2394
									start: 15, 
2395
									end: 17},
2396
									];
2397
					return getFixes({buffer: 'var a = ((1)+(1));', 
2398
									  rule: rule,
2399
									  expected: expected,
2400
									  callback: callback});
1551
				});
2401
				});
1552
			});
2402
				// The no-extra-parens rule will not create two annotations for duplicate parentheses ((a)) meaning the user has to run the quickfix all twice
1553
			it("no-new-wrapper remove new, Number spaces 1", function(done) {
2403
				it("no-extra-parens - fix all nested, hiding another extra paren",function(callback) {
1554
				var rule = createTestRule("no-new-wrappers");
2404
					var rule = createTestRule('no-extra-parens');
1555
				var expected = {
2405
					 var expected = [
1556
					value: '',
2406
					 				{value: "",
1557
					start: 8,
2407
									start: 10, 
1558
					end: 15
2408
									end: 11},
1559
				};
2409
									{value: "",
1560
				return getFixes({
2410
									start: 12, 
1561
					buffer: "var n = new    Number(12);",
2411
									end: 13},
1562
					rule: rule,
2412
									];
1563
					expected: expected,
2413
					return getFixes({buffer: 'var a = (((1)));', 
1564
					callback: done
2414
									  rule: rule,
2415
									  expected: expected,
2416
									  callback: callback});
1565
				});
2417
				});
1566
			});
2418
				it("no-extra-parens - in HTML if statement",function(callback) {
1567
			it("no-new-wrapper remove new, Number spaces 2", function(done) {
2419
					var rule = createTestRule('no-extra-parens');
1568
				var rule = createTestRule("no-new-wrappers");
2420
					 var expected = [
1569
				var expected = {
2421
					 				{value: "",
1570
					value: '',
2422
									start: 18, 
1571
					start: 8,
2423
									end: 19},
1572
					end: 15
2424
									{value: "",
1573
				};
2425
									start: 20, 
1574
				return getFixes({
2426
									end: 21}
1575
					buffer: "var n =    new Number(12);",
2427
									];
1576
					rule: rule,
2428
					return getFixes({buffer: '<script>if (a === (b)){}</script>', 
1577
					expected: expected,
2429
									  rule: rule,
1578
					callback: done
2430
									  expected: expected,
2431
									  callback: callback,
2432
									  contentType: 'text/html'});
1579
				});
2433
				});
1580
			});
2434
				it("no-extra-parens - in HTML typeof",function(callback) {
1581
			it("no-new-wrapper remove new, Number spaces 3", function(done) {
2435
					var rule = createTestRule('no-extra-parens');
1582
				var rule = createTestRule("no-new-wrappers");
2436
					 var expected = [
1583
				var expected = {
2437
					 				{value: " ",
1584
					value: '',
2438
									start: 18, 
1585
					start: 7,
2439
									end: 19},
1586
					end: 10
2440
									{value: "",
1587
				};
2441
									start: 20, 
1588
				return getFixes({
2442
									end: 21}
1589
					buffer: "var n =new Number(12);",
2443
									];
1590
					rule: rule,
2444
					return getFixes({buffer: '<script>if (typeof(a) === "object"){}</script>', 
1591
					expected: expected,
2445
									  rule: rule,
1592
					callback: done
2446
									  expected: expected,
2447
									  callback: callback,
2448
									  contentType: 'text/html'});
1593
				});
2449
				});
1594
			});
2450
				it("no-extra-parens - in HTML fix all not nested",function(callback) {
1595
			it("no-new-wrapper remove new, Boolean 1", function(done) {
2451
					var rule = createTestRule('no-extra-parens');
1596
				var rule = createTestRule("no-new-wrappers");
2452
					 var expected = [
1597
				var expected = {
2453
					 				{value: "",
1598
					value: '',
2454
									start: 16, 
1599
					start: 8,
2455
									end: 17},
1600
					end: 12
2456
									{value: "",
1601
				};
2457
									start: 20, 
1602
				return getFixes({
2458
									end: 21},
1603
					buffer: "var n = new Boolean(true);",
2459
									{value: "",
1604
					rule: rule,
2460
									start: 31, 
1605
					expected: expected,
2461
									end: 32},
1606
					callback: done
2462
									{value: "",
2463
									start: 35, 
2464
									end: 36}
2465
									];
2466
					return getFixes({buffer: '<script>var a = (1+1);\nvar b = (1-1);</script>', 
2467
									  rule: rule,
2468
									  expected: expected,
2469
									  callback: callback,
2470
									  contentType: 'text/html'});
1607
				});
2471
				});
1608
			});
2472
				it("no-extra-parens - in HTML fix all nested",function(callback) {
1609
			it("no-new-wrapper remove new, Boolean spaces 1", function(done) {
2473
					var rule = createTestRule('no-extra-parens');
1610
				var rule = createTestRule("no-new-wrappers");
2474
					 var expected = [
1611
				var expected = {
2475
					 				{value: "",
1612
					value: '',
2476
									start: 16, 
1613
					start: 8,
2477
									end: 18},
1614
					end: 15
2478
									{value: "",
1615
				};
2479
									start: 19, 
1616
				return getFixes({
2480
									end: 20},
1617
					buffer: "var n = new    Boolean(false);",
2481
									{value: "",
1618
					rule: rule,
2482
									start: 21, 
1619
					expected: expected,
2483
									end: 22},
1620
					callback: done
2484
									{value: "",
2485
									start: 23, 
2486
									end: 25},
2487
									];
2488
					return getFixes({buffer: '<script>var a = ((1)+(1));</script>', 
2489
									  rule: rule,
2490
									  expected: expected,
2491
									  callback: callback,
2492
									  contentType: 'text/html'});
1621
				});
2493
				});
1622
			});
2494
				it("no-extra-parens - multiline expression",function(callback) {
1623
			it("no-new-wrapper remove new, Boolean spaces 2", function(done) {
2495
					var rule = createTestRule('no-extra-parens');
1624
				var rule = createTestRule("no-new-wrappers");
2496
					 var expected = [
1625
				var expected = {
2497
					 				{value: "",
1626
					value: '',
2498
									start: 10, 
1627
					start: 8,
2499
									end: 11},
1628
					end: 15
2500
									{value: "",
1629
				};
2501
									start: 14, 
1630
				return getFixes({
2502
									end: 15}
1631
					buffer: "var n =    new Boolean(true);",
2503
									];
1632
					rule: rule,
2504
					return getFixes({buffer: 'if (a === (\nb\n)){}', 
1633
					expected: expected,
2505
									  rule: rule,
1634
					callback: done
2506
									  expected: expected,
2507
									  callback: callback});
1635
				});
2508
				});
1636
			});
2509
				it("no-extra-parens -space before closing paren",function(callback) {
1637
			it("no-new-wrapper remove new, Boolean spaces 3", function(done) {
2510
					var rule = createTestRule('no-extra-parens');
1638
				var rule = createTestRule("no-new-wrappers");
2511
					 var expected = [
1639
				var expected = {
2512
					 				{value: "",
1640
					value: '',
2513
									start: 10, 
1641
					start: 7,
2514
									end: 11},
1642
					end: 10
2515
									{value: "",
1643
				};
2516
									start: 13, 
1644
				return getFixes({
2517
									end: 14}
1645
					buffer: "var n =new Boolean(false);",
2518
									];
1646
					rule: rule,
2519
					return getFixes({buffer: 'if (a === (b )){}', 
1647
					expected: expected,
2520
									  rule: rule,
1648
					callback: done
2521
									  expected: expected,
2522
									  callback: callback});
1649
				});
2523
				});
1650
			});
2524
			});
1651
			it("no-new-wrapper convert to literal, String 1", function(done) {
2525
			//NO-EXTRA-SEMI
1652
				var rule = createTestRule("no-new-wrappers");
2526
			describe('no-extra-semi', function(){
1653
				var expected = {
2527
				it("Test no-extra-semi-1",function(callback) {
1654
					value: '"one"',
2528
					var rule = createTestRule('no-extra-semi');
1655
					start: 8,
2529
					 var expected = {value: "",
1656
					end: 25
2530
									start: 15, 
1657
				};
2531
									end: 16};
1658
				return getFixes({
2532
					return getFixes({buffer: 'function f() {};', 
1659
					buffer: 'var n = new String("one");',
2533
									  rule: rule,
1660
					rule: rule,
2534
									  expected: expected,
1661
					fixid: 'no-new-wrappers-literal',
2535
									  callback: callback});
1662
					expected: expected,
1663
					callback: done
1664
				});
2536
				});
1665
			});
2537
				it("Test no-extra-semi-2",function(callback) {
1666
			it("no-new-wrapper convert to literal, String 2", function(done) {
2538
					var rule = createTestRule('no-extra-semi');
1667
				var rule = createTestRule("no-new-wrappers");
2539
					var expected = {value: "",
1668
				var expected = {
2540
									start: 13, 
1669
					value: '""',
2541
									end: 14};
1670
					start: 8,
2542
					return getFixes({buffer: 'var foo = 10;;', 
1671
					end: 22
2543
									  rule: rule,
1672
				};
2544
									  expected: expected,
1673
				return getFixes({
2545
									  callback: callback});
1674
					buffer: 'var n = new String("");',
2546
				});
1675
					rule: rule,
2547
				it("Test no-extra-semi-3",function(callback) {
1676
					fixid: 'no-new-wrappers-literal',
2548
					var rule = createTestRule('no-extra-semi');
1677
					expected: expected,
2549
					var expected = {value: "",
1678
					callback: done
2550
									start: 13, 
2551
									end: 14};
2552
					return getFixes({buffer: 'var foo = {};;', 
2553
									  rule: rule,
2554
									  expected: expected,
2555
									  callback: callback});
2556
				});
2557
				it("Test no-extra-semi-4",function(callback) {
2558
					var rule = createTestRule('no-extra-semi');
2559
					var expected = {value: "",
2560
									start: 0, 
2561
									end: 1};
2562
					return getFixes({buffer: ';', 
2563
									  rule: rule,
2564
									  expected: expected,
2565
									  callback: callback});
2566
				});
2567
				it("Test no-extra-semi-html-1",function(callback) {
2568
					var rule = createTestRule('no-extra-semi');
2569
					 var expected = {value: "",
2570
									start: 35, 
2571
									end: 36};
2572
					return getFixes({buffer: '<html><head><script>function f() {};</script></head></html>', 
2573
									  rule: rule,
2574
									  expected: expected,
2575
									  callback: callback,
2576
									  contentType: 'text/html'});
2577
				});
2578
				it("Test no-extra-semi-html-2",function(callback) {
2579
					var rule = createTestRule('no-extra-semi');
2580
					var expected = {value: "",
2581
									start: 33, 
2582
									end: 34};
2583
					return getFixes({buffer: '<html><head><script>var foo = 10;;</script></head></html>', 
2584
									  rule: rule,
2585
									  expected: expected,
2586
									  callback: callback,
2587
									  contentType: 'text/html'});
2588
				});
2589
				it("Test no-extra-semi-html-3",function(callback) {
2590
					var rule = createTestRule('no-extra-semi');
2591
					var expected = {value: "",
2592
									start: 33, 
2593
									end: 34};
2594
					return getFixes({buffer: '<html><head><script>var foo = {};;</script></head></html>', 
2595
									  rule: rule,
2596
									  expected: expected,
2597
									  callback: callback,
2598
									  contentType: 'text/html'});
2599
				});
2600
				it("Test no-extra-semi-html-4",function(callback) {
2601
					var rule = createTestRule('no-extra-semi');
2602
					var expected = {value: "",
2603
									start: 20, 
2604
									end: 21};
2605
					return getFixes({buffer: '<html><head><script>;</script></head></html>', 
2606
									  rule: rule,
2607
									  expected: expected,
2608
									  callback: callback,
2609
									  contentType: 'text/html'});
2610
				});
2611
				it("Test no-extra-semi-html-5",function(callback) {
2612
					var rule = createTestRule('no-extra-semi');
2613
					var expected = {value: "",
2614
									start: 37, 
2615
									end: 38};
2616
					return getFixes({buffer: '<html><head><script></script><script>;</script></head></html>', 
2617
									  rule: rule,
2618
									  expected: expected,
2619
									  callback: callback,
2620
									  contentType: 'text/html'});
2621
				});
2622
				it("Test no-extra-semi fix all 1",function(callback) {
2623
					var rule = createTestRule('no-extra-semi');
2624
					 var expected = [
2625
					 				{value: "",
2626
									start: 15, 
2627
									end: 16},
2628
									{value: "",
2629
									start: 32, 
2630
									end: 33}
2631
									];
2632
					return getFixes({buffer: 'function f() {}; function g() {};', 
2633
									  rule: rule,
2634
									  expected: expected,
2635
									  callback: callback});
1679
				});
2636
				});
1680
			});
2637
				it("Test no-extra-semi fix all 2",function(callback) {
1681
			it("no-new-wrapper convert to literal, Math", function(done) {
2638
					var rule = createTestRule('no-extra-semi');
1682
				var rule = createTestRule("no-new-wrappers");
2639
					 var expected = [
1683
				var expected = {
2640
					 				{value: "",
1684
					value: 'Math',
2641
									start: 11, 
1685
					start: 8,
2642
									end: 14}
1686
					end: 18
2643
									];
1687
				};
2644
					return getFixes({buffer: 'var a = 10;;;;', 
1688
				return getFixes({
2645
									  rule: rule,
1689
					buffer: 'var n = new Math();',
2646
									  expected: expected,
1690
					rule: rule,
2647
									  callback: callback});
1691
					fixid: 'no-new-wrappers-literal',
1692
					expected: expected,
1693
					callback: done
1694
				});
2648
				});
1695
			});
2649
				it("Test no-extra-semi fix all 3",function(callback) {
1696
			it("no-new-wrapper convert to literal, Math", function(done) {
2650
					var rule = createTestRule('no-extra-semi');
1697
				var rule = createTestRule("no-new-wrappers");
2651
					 var expected = [
1698
				var expected = {
2652
					 				{value: "",
1699
					value: 'JSON',
2653
									start: 14, 
1700
					start: 8,
2654
									end: 17}
1701
					end: 18
2655
									];
1702
				};
2656
					return getFixes({buffer: 'function f(){};;;', 
1703
				return getFixes({
2657
									  rule: rule,
1704
					buffer: 'var n = new JSON();',
2658
									  expected: expected,
1705
					rule: rule,
2659
									  callback: callback});
1706
					fixid: 'no-new-wrappers-literal',
1707
					expected: expected,
1708
					callback: done
1709
				});
2660
				});
1710
			});
2661
				it("Test no-extra-semi fix all 4",function(callback) {
1711
			it("no-new-wrapper convert to literal, Number 1", function(done) {
2662
					var rule = createTestRule('no-extra-semi');
1712
				var rule = createTestRule("no-new-wrappers");
2663
					 var expected = [
1713
				var expected = {
2664
					 				{value: "",
1714
					value: '13',
2665
									start: 0, 
1715
					start: 8,
2666
									end: 1},
1716
					end: 22
2667
									{value: "",
1717
				};
2668
									start: 17, 
1718
				return getFixes({
2669
									end: 18},
1719
					buffer: 'var n = new Number(13);',
2670
									{value: "",
1720
					rule: rule,
2671
									start: 29, 
1721
					fixid: 'no-new-wrappers-literal',
2672
									end: 30},
1722
					expected: expected,
2673
									{value: "",
1723
					callback: done
2674
									start: 42, 
2675
									end: 43}
2676
									];
2677
					return getFixes({buffer: '; function f() {}; var a = 0;; var b = {};;', 
2678
									  rule: rule,
2679
									  expected: expected,
2680
									  callback: callback});
1724
				});
2681
				});
1725
			});
2682
				it("Test no-extra-semi fix all inside html",function(callback) {
1726
			it("no-new-wrapper convert to literal, Number 2", function(done) {
2683
					var rule = createTestRule('no-extra-semi');
1727
				var rule = createTestRule("no-new-wrappers");
2684
					var expected = [
1728
				var expected = {
2685
					 				{value: "",
1729
					value: '0',
2686
									start: 18, 
1730
					start: 8,
2687
									end: 21}
1731
					end: 20
2688
									];
1732
				};
2689
					return getFixes({buffer: '<script>var a = 0;;;;</script>', 
1733
				return getFixes({
2690
									  rule: rule,
1734
					buffer: 'var n = new Number();',
2691
									  expected: expected,
1735
					rule: rule,
2692
									  callback: callback,
1736
					fixid: 'no-new-wrappers-literal',
2693
									  contentType: 'text/html'});
1737
					expected: expected,
1738
					callback: done
1739
				});
2694
				});
1740
			});
2695
				it("Test no-extra-semi-2",function(callback) {
1741
			it("no-new-wrapper convert to literal, non-number to Number 1", function(done) {
2696
					var rule = createTestRule('no-extra-semi');
1742
				var rule = createTestRule("no-new-wrappers");
2697
					var expected = {value: "",
1743
				var expected = {
2698
									start: 13, 
1744
					value: 'NaN',
2699
									end: 14};
1745
					start: 8,
2700
					return getFixes({buffer: 'var foo = 10;;', 
1746
					end: 29
2701
									  rule: rule,
1747
				};
2702
									  expected: expected,
1748
				return getFixes({
2703
									  callback: callback});
1749
					buffer: 'var n = new Number(undefined);',
1750
					rule: rule,
1751
					fixid: 'no-new-wrappers-literal',
1752
					expected: expected,
1753
					callback: done
1754
				});
2704
				});
1755
			});
2705
				it("Test no-extra-semi-3",function(callback) {
1756
			it("no-new-wrapper convert to literal, non-number to Number 2", function(done) {
2706
					var rule = createTestRule('no-extra-semi');
1757
				var rule = createTestRule("no-new-wrappers");
2707
					var expected = {value: "",
1758
				var expected = {
2708
									start: 13, 
1759
					value: 'NaN',
2709
									end: 14};
1760
					start: 8,
2710
					return getFixes({buffer: 'var foo = {};;', 
1761
					end: 23
2711
									  rule: rule,
1762
				};
2712
									  expected: expected,
1763
				return getFixes({
2713
									  callback: callback});
1764
					buffer: 'var n = new Number(NaN);',
1765
					rule: rule,
1766
					fixid: 'no-new-wrappers-literal',
1767
					expected: expected,
1768
					callback: done
1769
				});
2714
				});
1770
			});
2715
				it("Test no-extra-semi-4",function(callback) {
1771
			it("no-new-wrapper convert to literal, non-number to Number 3", function(done) {
2716
					var rule = createTestRule('no-extra-semi');
1772
				var rule = createTestRule("no-new-wrappers");
2717
					var expected = {value: "",
1773
				var expected = {
2718
									start: 0, 
1774
					value: '0',
2719
									end: 1};
1775
					start: 8,
2720
					return getFixes({buffer: ';', 
1776
					end: 22
2721
									  rule: rule,
1777
				};
2722
									  expected: expected,
1778
				return getFixes({
2723
									  callback: callback});
1779
					buffer: 'var n = new Number("");',
1780
					rule: rule,
1781
					fixid: 'no-new-wrappers-literal',
1782
					expected: expected,
1783
					callback: done
1784
				});
2724
				});
2725
				
2726
				
2727
				
1785
			});
2728
			});
1786
			it("no-new-wrapper convert to literal, non-number to Number 4", function(done) {
2729
			//NO-FALLTHROUGH
1787
				var rule = createTestRule("no-new-wrappers");
2730
			describe("no-fallthrough", function() {
1788
				var expected = {
2731
				it("Test no-fallthrough-1",function(callback) {
1789
					value: '0',
2732
					var rule = createTestRule('no-fallthrough');
1790
					start: 8,
2733
					var expected = {value: "//$FALLTHROUGH$",
1791
					end: 23
2734
									start: 30, 
1792
				};
2735
									end: 30};
1793
				return getFixes({
2736
					return getFixes({buffer: 'switch(num) {case 1:{code();} case 2:{}}', 
1794
					buffer: 'var n = new Number("0");',
2737
									  rule: rule,
1795
					rule: rule,
2738
									  expected: expected,
1796
					fixid: 'no-new-wrappers-literal',
2739
									  callback: callback});
1797
					expected: expected,
1798
					callback: done
1799
				});
2740
				});
1800
			});
2741
				it("Test no-fallthrough-2",function(callback) {
1801
			it("no-new-wrapper convert to literal, non-number to Number 5", function(done) {
2742
					var rule = createTestRule('no-fallthrough');
1802
				var rule = createTestRule("no-new-wrappers");
2743
					var expected = {value: "//$FALLTHROUGH$",
1803
				var expected = {
2744
									start: 46, 
1804
					value: '1234',
2745
									end: 46};
1805
					start: 8,
2746
					return getFixes({buffer: 'switch(num) {case 1:{break;} case 2:{code();} default: {}}', 
1806
					end: 26
2747
									  rule: rule,
1807
				};
2748
									  expected: expected,
1808
				return getFixes({
2749
									  callback: callback});
1809
					buffer: 'var n = new Number("1234");',
1810
					rule: rule,
1811
					fixid: 'no-new-wrappers-literal',
1812
					expected: expected,
1813
					callback: done
1814
				});
2750
				});
1815
			});
2751
				it("Test no-fallthrough-html-1",function(callback) {
1816
			it("no-new-wrapper convert to literal, non-number to Number 6", function(done) {
2752
					var rule = createTestRule('no-fallthrough');
1817
				var rule = createTestRule("no-new-wrappers");
2753
					var expected = {value: "//$FALLTHROUGH$",
1818
				var expected = {
2754
									start: 50, 
1819
					value: '0',
2755
									end: 50};
1820
					start: 8,
2756
					return getFixes({buffer: '<html><head><script>switch(num) {case 1:{code();} case 2:{}}</script></head></html>', 
1821
					end: 24
2757
									  rule: rule,
1822
				};
2758
									  expected: expected,
1823
				return getFixes({
2759
									  callback: callback,
1824
					buffer: 'var n = new Number(null);',
2760
									  contentType: 'text/html'});
1825
					rule: rule,
1826
					fixid: 'no-new-wrappers-literal',
1827
					expected: expected,
1828
					callback: done
1829
				});
2761
				});
1830
			});
2762
				it("Test no-fallthrough-html-2",function(callback) {
1831
			it("no-new-wrapper convert to literal, Boolean 1", function(done) {
2763
					var rule = createTestRule('no-fallthrough');
1832
				var rule = createTestRule("no-new-wrappers");
2764
					var expected = {value: "//$FALLTHROUGH$",
1833
				var expected = {
2765
									start: 66, 
1834
					value: 'true',
2766
									end: 66};
1835
					start: 8,
2767
					return getFixes({buffer: '<html><head><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>', 
1836
					end: 25
2768
									  rule: rule,
1837
				};
2769
									  expected: expected,
1838
				return getFixes({
2770
									  callback: callback,
1839
					buffer: 'var n = new Boolean(true);',
2771
									  contentType: 'text/html'});
1840
					rule: rule,
1841
					fixid: 'no-new-wrappers-literal',
1842
					expected: expected,
1843
					callback: done
1844
				});
2772
				});
1845
			});
2773
				it("Test no-fallthrough-html-3",function(callback) {
1846
			it("no-new-wrapper convert to literal, Boolean 2", function(done) {
2774
					var rule = createTestRule('no-fallthrough');
1847
				var rule = createTestRule("no-new-wrappers");
2775
					var expected = {value: "//$FALLTHROUGH$",
1848
				var expected = {
2776
									start: 83, 
1849
					value: 'false',
2777
									end: 83};
1850
					start: 8,
2778
					return getFixes({buffer: '<html><head><script></script><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>', 
1851
					end: 21
2779
									  rule: rule,
1852
				};
2780
									  expected: expected,
1853
				return getFixes({
2781
									  callback: callback,
1854
					buffer: 'var n = new Boolean();',
2782
									  contentType: 'text/html'});
1855
					rule: rule,
1856
					fixid: 'no-new-wrappers-literal',
1857
					expected: expected,
1858
					callback: done
1859
				});
2783
				});
1860
			});
2784
				it("Test no-fallthrough-break-1",function(callback) {
1861
			it("no-new-wrapper convert to literal, Boolean falsey 1", function(done) {
2785
					var rule = createTestRule('no-fallthrough');
1862
				var rule = createTestRule("no-new-wrappers");
2786
					var expected = {value: "break;",
1863
				var expected = {
2787
									start: 30, 
1864
					value: 'false',
2788
									end: 30};
1865
					start: 8,
2789
					return getFixes({buffer: 'switch(num) {case 1:{code();} case 2:{}}', 
1866
					end: 22
2790
									  rule: rule,
1867
				};
2791
									  expected: expected,
1868
				return getFixes({
2792
									  callback: callback,
1869
					buffer: 'var n = new Boolean(0);',
2793
									  fixid: 'no-fallthrough-break'});
1870
					rule: rule,
1871
					fixid: 'no-new-wrappers-literal',
1872
					expected: expected,
1873
					callback: done
1874
				});
2794
				});
1875
			});
2795
				it("Test no-fallthrough-break-2",function(callback) {
1876
			it("no-new-wrapper convert to literal, Boolean falsey 2", function(done) {
2796
					var rule = createTestRule('no-fallthrough');
1877
				var rule = createTestRule("no-new-wrappers");
2797
					var expected = {value: "break;",
1878
				var expected = {
2798
									start: 46, 
1879
					value: 'false',
2799
									end: 46};
1880
					start: 8,
2800
					return getFixes({buffer: 'switch(num) {case 1:{break;} case 2:{code();} default: {}}', 
1881
					end: 23
2801
									  rule: rule,
1882
				};
2802
									  expected: expected,
1883
				return getFixes({
2803
									  callback: callback,
1884
					buffer: 'var n = new Boolean(-0);',
2804
									  fixid: 'no-fallthrough-break'});
1885
					rule: rule,
1886
					fixid: 'no-new-wrappers-literal',
1887
					expected: expected,
1888
					callback: done
1889
				});
2805
				});
1890
			});
2806
				it("Test no-fallthrough-break-html-1",function(callback) {
1891
			it("no-new-wrapper convert to literal, Boolean falsey 2", function(done) {
2807
					var rule = createTestRule('no-fallthrough');
1892
				var rule = createTestRule("no-new-wrappers");
2808
					var expected = {value: "break;",
1893
				var expected = {
2809
									start: 50, 
1894
					value: 'false',
2810
									end: 50};
1895
					start: 8,
2811
					return getFixes({buffer: '<html><head><script>switch(num) {case 1:{code();} case 2:{}}</script></head></html>', 
1896
					end: 25
2812
									  rule: rule,
1897
				};
2813
									  expected: expected,
1898
				return getFixes({
2814
									  callback: callback,
1899
					buffer: 'var n = new Boolean(null);',
2815
									  fixid: 'no-fallthrough-break',
1900
					rule: rule,
2816
									  contentType: 'text/html'});
1901
					fixid: 'no-new-wrappers-literal',
1902
					expected: expected,
1903
					callback: done
1904
				});
2817
				});
1905
			});
2818
				it("Test no-fallthrough-break-html-2",function(callback) {
1906
			it("no-new-wrapper convert to literal, Boolean falsey 3", function(done) {
2819
					var rule = createTestRule('no-fallthrough');
1907
				var rule = createTestRule("no-new-wrappers");
2820
					var expected = {value: "break;",
1908
				var expected = {
2821
									start: 66, 
1909
					value: 'false',
2822
									end: 66};
1910
					start: 8,
2823
					return getFixes({buffer: '<html><head><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>', 
1911
					end: 23
2824
									  rule: rule,
1912
				};
2825
									  expected: expected,
1913
				return getFixes({
2826
									  callback: callback,
1914
					buffer: 'var n = new Boolean("");',
2827
									  fixid: 'no-fallthrough-break',
1915
					rule: rule,
2828
									  contentType: 'text/html'});
1916
					fixid: 'no-new-wrappers-literal',
1917
					expected: expected,
1918
					callback: done
1919
				});
2829
				});
1920
			});
2830
				it("Test no-fallthrough-break-html-3",function(callback) {
1921
			it("no-new-wrapper convert to literal, Boolean falsey 4", function(done) {
2831
					var rule = createTestRule('no-fallthrough');
1922
				var rule = createTestRule("no-new-wrappers");
2832
					var expected = {value: "break;",
1923
				var expected = {
2833
									start: 83, 
1924
					value: 'false',
2834
									end: 83};
1925
					start: 8,
2835
					return getFixes({buffer: '<html><head><script></script><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>', 
1926
					end: 23
2836
									  rule: rule,
1927
				};
2837
									  expected: expected,
1928
				return getFixes({
2838
									  callback: callback,
1929
					buffer: "var n = new Boolean('');",
2839
									  fixid: 'no-fallthrough-break',
1930
					rule: rule,
2840
									  contentType: 'text/html'});
1931
					fixid: 'no-new-wrappers-literal',
1932
					expected: expected,
1933
					callback: done
1934
				});
2841
				});
1935
			});
2842
			});
1936
			it("no-new-wrapper convert to literal, Boolean falsey 5", function(done) {
2843
			//NO-NEW-ARRAY
1937
				var rule = createTestRule("no-new-wrappers");
2844
			describe("no-new-array", function() {
1938
				var expected = {
2845
				it("test no-new-array single non-number literal param",function(callback) {
1939
					value: 'false',
2846
					var rule = createTestRule('no-new-array');
1940
					start: 8,
2847
					return getFixes({
1941
					end: 30
2848
						buffer: "var ar = new Array('a');",
1942
				};
2849
						rule: rule,
1943
				return getFixes({
2850
						expected: { value: "['a']", start: 9,  end: 23 },
1944
					buffer: 'var n = new Boolean(undefined);',
2851
						callback: callback
1945
					rule: rule,
2852
					});
1946
					fixid: 'no-new-wrappers-literal',
1947
					expected: expected,
1948
					callback: done
1949
				});
2853
				});
1950
			});
2854
				it("test no-new-array multi number literal params",function(callback) {
1951
			it("no-new-wrapper convert to literal, Boolean falsey 6", function(done) {
2855
					var rule = createTestRule('no-new-array');
1952
				var rule = createTestRule("no-new-wrappers");
2856
					return getFixes({
1953
				var expected = {
2857
						buffer: "var ar = new Array(1, 2, 3);",
1954
					value: 'false',
2858
						rule: rule,
1955
					start: 8,
2859
						expected: { value: "[1, 2, 3]", start: 9,  end: 27 },
1956
					end: 24
2860
						callback: callback
1957
				};
2861
					});
1958
				return getFixes({
1959
					buffer: 'var n = new Boolean(NaN);',
1960
					rule: rule,
1961
					fixid: 'no-new-wrappers-literal',
1962
					expected: expected,
1963
					callback: done
1964
				});
2862
				});
1965
			});
2863
				it("test no-new-array mixed multi params",function(callback) {
1966
			it("no-new-wrapper convert to literal, Boolean truthy 1", function(done) {
2864
					var rule = createTestRule('no-new-array');
1967
				var rule = createTestRule("no-new-wrappers");
2865
					return getFixes({
1968
				var expected = {
2866
						buffer: "var ar = new Array(1, 'd', {});",
1969
					value: 'true',
2867
						rule: rule,
1970
					start: 8,
2868
						expected: { value: "[1, 'd', {}]", start: 9,  end: 30 },
1971
					end: 25
2869
						callback: callback
1972
				};
2870
					});
1973
				return getFixes({
1974
					buffer: 'var n = new Boolean(true);',
1975
					rule: rule,
1976
					fixid: 'no-new-wrappers-literal',
1977
					expected: expected,
1978
					callback: done
1979
				});
2871
				});
1980
			});
2872
				it("test no-new-array call expr single non-number literal param",function(callback) {
1981
			it("no-new-wrapper convert to literal, Boolean truthy 2", function(done) {
2873
					var rule = createTestRule('no-new-array');
1982
				var rule = createTestRule("no-new-wrappers");
2874
					return getFixes({
1983
				var expected = {
2875
						buffer: "var ar = Array('a');",
1984
					value: 'true',
2876
						rule: rule,
1985
					start: 8,
2877
						expected: { value: "['a']", start: 9,  end: 19 },
1986
					end: 23
2878
						callback: callback
1987
				};
2879
					});
1988
				return getFixes({
1989
					buffer: 'var n = new Boolean(12);',
1990
					rule: rule,
1991
					fixid: 'no-new-wrappers-literal',
1992
					expected: expected,
1993
					callback: done
1994
				});
2880
				});
1995
			});
2881
				it("test no-new-array call expr multi number literal params",function(callback) {
1996
			it("no-new-wrapper convert to literal, Boolean truthy 3", function(done) {
2882
					var rule = createTestRule('no-new-array');
1997
				var rule = createTestRule("no-new-wrappers");
2883
					return getFixes({
1998
				var expected = {
2884
						buffer: "var ar = Array(1, 2, 3);",
1999
					value: 'true',
2885
						rule: rule,
2000
					start: 8,
2886
						expected: { value: "[1, 2, 3]", start: 9,  end: 23 },
2001
					end: 23
2887
						callback: callback
2002
				};
2888
					});
2003
				return getFixes({
2004
					buffer: 'var n = new Boolean({});',
2005
					rule: rule,
2006
					fixid: 'no-new-wrappers-literal',
2007
					expected: expected,
2008
					callback: done
2009
				});
2889
				});
2010
			});
2890
				it("test no-new-array call expr mixed multi params",function(callback) {
2011
			it("no-new-wrapper convert to literal, Boolean truthy 4", function(done) {
2891
					var rule = createTestRule('no-new-array');
2012
				var rule = createTestRule("no-new-wrappers");
2892
					return getFixes({
2013
				var expected = {
2893
						buffer: "var ar = Array(1, 'd', {});",
2014
					value: 'true',
2894
						rule: rule,
2015
					start: 8,
2895
						expected: { value: "[1, 'd', {}]", start: 9,  end: 26 },
2016
					end: 26
2896
						callback: callback
2017
				};
2897
					});
2018
				return getFixes({
2019
					buffer: 'var n = new Boolean("one");',
2020
					rule: rule,
2021
					fixid: 'no-new-wrappers-literal',
2022
					expected: expected,
2023
					callback: done
2024
				});
2898
				});
2025
			});
2899
			});
2026
		});
2900
			//NO-THROW-LITERAL
2027
		//NO-COMMA-DANGLE
2901
			describe("no-throw-literal", function() {
2028
		describe('no-comma-dangle', function() {
2902
				it("Test no-throw-literal-number",function(callback) {
2029
			it("Test no-comma-dangle-1", function(callback) {
2903
					var rule = createTestRule('no-throw-literal');
2030
				var rule = createTestRule('no-comma-dangle');
2904
					return getFixes({
2031
				var expected = {value: "",
2905
						buffer: 'throw 1',
2032
								start: 15, 
2906
						rule: rule,
2033
								end: 16};
2907
						expected: { value: "new Error(1)", start: 6,  end: 7 },
2034
				return getFixes({buffer: 'f({one:1, two:2,});', 
2908
						callback: callback
2035
								  rule: rule,
2909
					});
2036
								  expected: expected,
2037
								  callback: callback});
2038
			});
2039
			it("Test no-comma-dangle-2", function(callback) {
2040
				var rule = createTestRule('no-comma-dangle');
2041
				var expected = {value: "",
2042
								start: 21, 
2043
								end: 22};
2044
				return getFixes({buffer: 'var f = {one:1, two:2,};', 
2045
								  rule: rule,
2046
								  expected: expected,
2047
								  callback: callback});
2048
			});
2049
			it("Test no-comma-dangle-3", function(callback) {
2050
				var rule = createTestRule('no-comma-dangle');
2051
				var expected = {value: "",
2052
								start: 22, 
2053
								end: 23};
2054
				return getFixes({buffer: 'var f = [{one:1, two:2,}];', 
2055
								  rule: rule,
2056
								  expected: expected,
2057
								  callback: callback});
2058
			});
2059
			it("Test no-comma-dangle-html-1", function(callback) {
2060
				var rule = createTestRule('no-comma-dangle');
2061
				var expected = {value: "",
2062
								start: 35, 
2063
								end: 36};
2064
				return getFixes({buffer: '<html><head><script>f({one:1, two:2,});</script></head></html>', 
2065
								  rule: rule,
2066
								  expected: expected,
2067
								  callback: callback,
2068
								  contentType: 'text/html'});
2069
			});
2070
			it("Test no-comma-dangle-html-2", function(callback) {
2071
				var rule = createTestRule('no-comma-dangle');
2072
				var expected = {value: "",
2073
								start: 41, 
2074
								end: 42};
2075
				return getFixes({buffer: '<html><head><script>var f = {one:1, two:2,};</script></head></html>', 
2076
								  rule: rule,
2077
								  expected: expected,
2078
								  callback: callback,
2079
								  contentType: 'text/html'});
2080
			});
2081
			it("Test no-comma-dangle-html-3", function(callback) {
2082
				var rule = createTestRule('no-comma-dangle');
2083
				var expected = {value: "",
2084
								start: 42, 
2085
								end: 43};
2086
				return getFixes({buffer: '<html><head><script>var f = [{one:1, two:2,}];</script></head></html>', 
2087
								  rule: rule,
2088
								  expected: expected,
2089
								  callback: callback,
2090
								  contentType: 'text/html'});
2091
			});
2092
			it("Test no-comma-dangle-html-4", function(callback) {
2093
				var rule = createTestRule('no-comma-dangle');
2094
				var expected = {value: "",
2095
								start: 59, 
2096
								end: 60};
2097
				return getFixes({buffer: '<html><head><script></script><script>var f = [{one:1, two:2,}];</script></head></html>', 
2098
								  rule: rule,
2099
								  expected: expected,
2100
								  callback: callback,
2101
								  contentType: 'text/html'});
2102
			});
2103
			it("Test no-comma-dangle fix all 1", function(callback) {
2104
				var rule = createTestRule('no-comma-dangle');
2105
				var expected = [
2106
								{value: "",
2107
								start: 15, 
2108
								end: 16},
2109
								{value: "",
2110
								start: 35, 
2111
								end: 36}
2112
								];
2113
				return getFixes({buffer: 'f({one:1, two:2,}); f({one:1, two:2,});', 
2114
								  rule: rule,
2115
								  expected: expected,
2116
								  callback: callback});
2117
			});
2118
			it("Test no-comma-dangle fix all 2", function(callback) {
2119
				var rule = createTestRule('no-comma-dangle');
2120
				var expected = [
2121
								{value: "",
2122
								start: 15, 
2123
								end: 16},
2124
								{value: "",
2125
								start: 41, 
2126
								end: 42}
2127
								];
2128
				return getFixes({buffer: 'f({one:1, two:2,});\nvar f = {one:1, two:2,};', 
2129
								  rule: rule,
2130
								  expected: expected,
2131
								  callback: callback});
2132
			});
2133
			it("Test no-comma-dangle fix all 3", function(callback) {
2134
				var rule = createTestRule('no-comma-dangle');
2135
				var expected = [
2136
								{value: "",
2137
								start: 15, 
2138
								end: 16},
2139
								{value: "",
2140
								start: 41, 
2141
								end: 42},
2142
								{value: "",
2143
								start: 67, 
2144
								end: 68}
2145
								];
2146
				return getFixes({buffer: 'f({one:1, two:2,}); var f = {one:1, two:2,}; var f = [{one:1, two:2,}];', 
2147
								  rule: rule,
2148
								  expected: expected,
2149
								  callback: callback});
2150
			});
2151
		});
2152
		//NO-EMPTY-BLOCK
2153
		describe("no-empty-block", function() {
2154
			it("Test no-empty-block-1", function(callback) {
2155
				var rule = createTestRule('no-empty-block');
2156
				var expected = {value: "//TODO empty block",
2157
								start: 14, 
2158
								end: 14};
2159
				return getFixes({buffer: 'function f() {}', 
2160
								  rule: rule,
2161
								  expected: expected,
2162
								  callback: callback});
2163
			});
2164
			
2165
			it("Test no-empty-block-2",function(callback) {
2166
				var rule = createTestRule('no-empty-block');
2167
				var expected = {value: "//TODO empty block",
2168
								start: 39, 
2169
								end: 39};
2170
				return getFixes({buffer: 'var f = {f: function() { function q() {}}}', 
2171
								  rule: rule,
2172
								  expected: expected,
2173
								  callback: callback});
2174
			});
2175
			
2176
			it("Test no-empty-block-3",function(callback) {
2177
				var rule = createTestRule('no-empty-block');
2178
				var expected = {value: "//TODO empty block",
2179
								start: 25, 
2180
								end: 25};
2181
				return getFixes({buffer: 'var f = { f: function() {}};', 
2182
								  rule: rule,
2183
								  expected: expected,
2184
								  callback: callback});
2185
			});
2186
			
2187
			it("Test no-empty-block-4",function(callback) {
2188
				var rule = createTestRule('no-empty-block');
2189
				var expected = {value: "//TODO empty block",
2190
								start: 10, 
2191
								end: 10};
2192
				return getFixes({buffer: 'while(f) {}', 
2193
								  rule: rule,
2194
								  expected: expected,
2195
								  callback: callback});
2196
			});
2197
			it("Test no-empty-block-5",function(callback) {
2198
				var rule = createTestRule('no-empty-block');
2199
				var expected = {value: "//TODO empty block",
2200
								start: 7, 
2201
								end: 7};
2202
				return getFixes({buffer: 'if(f) {}', 
2203
								  rule: rule,
2204
								  expected: expected,
2205
								  callback: callback});
2206
			});
2207
			it("Test no-empty-block-6",function(callback) {
2208
				var rule = createTestRule('no-empty-block');
2209
				var expected = {value: "//TODO empty block",
2210
								start: 17, 
2211
								end: 17};
2212
				return getFixes({buffer: 'if(f) {while(f) {}}', 
2213
								  rule: rule,
2214
								  expected: expected,
2215
								  callback: callback});
2216
			});
2217
			it("Test no-empty-block-html-1",function(callback) {
2218
				var rule = createTestRule('no-empty-block');
2219
				var expected = {value: "//TODO empty block",
2220
								start: 34, 
2221
								end: 34};
2222
				return getFixes({buffer: '<html><head><script>function f() {}</script></head></html>', 
2223
								  rule: rule,
2224
								  expected: expected,
2225
								  callback: callback,
2226
								  contentType: 'text/html'});
2227
			});
2228
			
2229
			it("Test no-empty-block-html-2",function(callback) {
2230
				var rule = createTestRule('no-empty-block');
2231
				var expected = {value: "//TODO empty block",
2232
								start: 59, 
2233
								end: 59};
2234
				return getFixes({buffer: '<html><head><script>var f = {f: function() { function q() {}}}</script></head></html>', 
2235
								  rule: rule,
2236
								  expected: expected,
2237
								  callback: callback,
2238
								  contentType: 'text/html'});
2239
			});
2240
			
2241
			it("Test no-empty-block-html-3",function(callback) {
2242
				var rule = createTestRule('no-empty-block');
2243
				var expected = {value: "//TODO empty block",
2244
								start: 45, 
2245
								end: 45};
2246
				return getFixes({buffer: '<html><head><script>var f = { f: function() {}};</script></head></html>', 
2247
								  rule: rule,
2248
								  expected: expected,
2249
								  callback: callback,
2250
								  contentType: 'text/html'});
2251
			});
2252
			
2253
			it("Test no-empty-block-html-4",function(callback) {
2254
				var rule = createTestRule('no-empty-block');
2255
				var expected = {value: "//TODO empty block",
2256
								start: 30, 
2257
								end: 30};
2258
				return getFixes({buffer: '<html><head><script>while(f) {}</script></head></html>', 
2259
								  rule: rule,
2260
								  expected: expected,
2261
								  callback: callback,
2262
								  contentType: 'text/html'});
2263
			});
2264
			it("Test no-empty-block-html-5",function(callback) {
2265
				var rule = createTestRule('no-empty-block');
2266
				var expected = {value: "//TODO empty block",
2267
								start: 27, 
2268
								end: 27};
2269
				return getFixes({buffer: '<html><head><script>if(f) {}</script></head></html>', 
2270
								  rule: rule,
2271
								  expected: expected,
2272
								  callback: callback,
2273
								  contentType: 'text/html'});
2274
			});
2275
			it("Test no-empty-block-html-6",function(callback) {
2276
				var rule = createTestRule('no-empty-block');
2277
				var expected = {value: "//TODO empty block",
2278
								start: 37, 
2279
								end: 37};
2280
				return getFixes({buffer: '<html><head><script>if(f) {while(f) {}}</script></head></html>', 
2281
								  rule: rule,
2282
								  expected: expected,
2283
								  callback: callback,
2284
								  contentType: 'text/html'});
2285
			});
2286
			it("Test no-empty-block-html-7",function(callback) {
2287
				var rule = createTestRule('no-empty-block');
2288
				var expected = {value: "//TODO empty block",
2289
								start: 54, 
2290
								end: 54};
2291
				return getFixes({buffer: '<html><head><script></script><script>if(f) {while(f) {}}</script></head></html>', 
2292
								  rule: rule,
2293
								  expected: expected,
2294
								  callback: callback,
2295
								  contentType: 'text/html'});
2296
			});
2297
		});
2298
		//NO-EXTRA-PARENS
2299
		describe('no-extra-parens', function(){
2300
			it("no-extra-parens - if statement",function(callback) {
2301
				var rule = createTestRule('no-extra-parens');
2302
				 var expected = [
2303
				 				{value: "",
2304
								start: 10, 
2305
								end: 11},
2306
								{value: "",
2307
								start: 12, 
2308
								end: 13}
2309
								];
2310
				return getFixes({buffer: 'if (a === (b)){}', 
2311
								  rule: rule,
2312
								  expected: expected,
2313
								  callback: callback});
2314
			});
2315
			it("no-extra-parens - typeof",function(callback) {
2316
				var rule = createTestRule('no-extra-parens');
2317
				 var expected = [
2318
				 				{value: " ",
2319
								start: 10, 
2320
								end: 11},
2321
								{value: "",
2322
								start: 12, 
2323
								end: 13}
2324
								];
2325
				return getFixes({buffer: 'if (typeof(a) === "object"){}', 
2326
								  rule: rule,
2327
								  expected: expected,
2328
								  callback: callback});
2329
			});
2330
			it("no-extra-parens - typeof 2",function(callback) {
2331
				var rule = createTestRule('no-extra-parens');
2332
				 var expected = [
2333
				 				{value: "",
2334
								start: 10, 
2335
								end: 11},
2336
								{value: "",
2337
								start: 13, 
2338
								end: 14}
2339
								];
2340
				return getFixes({buffer: 'if (typeof( a) === "object"){}', 
2341
								  rule: rule,
2342
								  expected: expected,
2343
								  callback: callback});
2344
			});
2345
			it("no-extra-parens - typeof 3",function(callback) {
2346
				var rule = createTestRule('no-extra-parens');
2347
				 var expected = [
2348
				 				{value: "",
2349
								start: 11, 
2350
								end: 12},
2351
								{value: "",
2352
								start: 13, 
2353
								end: 14}
2354
								];
2355
				return getFixes({buffer: 'if (typeof (a) === "object"){}', 
2356
								  rule: rule,
2357
								  expected: expected,
2358
								  callback: callback});
2359
			});
2360
			it("no-extra-parens - fix all not nested",function(callback) {
2361
				var rule = createTestRule('no-extra-parens');
2362
				 var expected = [
2363
				 				{value: "",
2364
								start: 8, 
2365
								end: 9},
2366
								{value: "",
2367
								start: 12, 
2368
								end: 13},
2369
								{value: "",
2370
								start: 23, 
2371
								end: 24},
2372
								{value: "",
2373
								start: 27, 
2374
								end: 28}
2375
								];
2376
				return getFixes({buffer: 'var a = (1+1);\nvar b = (1-1);', 
2377
								  rule: rule,
2378
								  expected: expected,
2379
								  callback: callback});
2380
			});
2381
			it("no-extra-parens - fix all nested",function(callback) {
2382
				var rule = createTestRule('no-extra-parens');
2383
				 var expected = [
2384
				 				{value: "",
2385
								start: 8, 
2386
								end: 10},
2387
								{value: "",
2388
								start: 11, 
2389
								end: 12},
2390
								{value: "",
2391
								start: 13, 
2392
								end: 14},
2393
								{value: "",
2394
								start: 15, 
2395
								end: 17},
2396
								];
2397
				return getFixes({buffer: 'var a = ((1)+(1));', 
2398
								  rule: rule,
2399
								  expected: expected,
2400
								  callback: callback});
2401
			});
2402
			// The no-extra-parens rule will not create two annotations for duplicate parentheses ((a)) meaning the user has to run the quickfix all twice
2403
			it("no-extra-parens - fix all nested, hiding another extra paren",function(callback) {
2404
				var rule = createTestRule('no-extra-parens');
2405
				 var expected = [
2406
				 				{value: "",
2407
								start: 10, 
2408
								end: 11},
2409
								{value: "",
2410
								start: 12, 
2411
								end: 13},
2412
								];
2413
				return getFixes({buffer: 'var a = (((1)));', 
2414
								  rule: rule,
2415
								  expected: expected,
2416
								  callback: callback});
2417
			});
2418
			it("no-extra-parens - in HTML if statement",function(callback) {
2419
				var rule = createTestRule('no-extra-parens');
2420
				 var expected = [
2421
				 				{value: "",
2422
								start: 18, 
2423
								end: 19},
2424
								{value: "",
2425
								start: 20, 
2426
								end: 21}
2427
								];
2428
				return getFixes({buffer: '<script>if (a === (b)){}</script>', 
2429
								  rule: rule,
2430
								  expected: expected,
2431
								  callback: callback,
2432
								  contentType: 'text/html'});
2433
			});
2434
			it("no-extra-parens - in HTML typeof",function(callback) {
2435
				var rule = createTestRule('no-extra-parens');
2436
				 var expected = [
2437
				 				{value: " ",
2438
								start: 18, 
2439
								end: 19},
2440
								{value: "",
2441
								start: 20, 
2442
								end: 21}
2443
								];
2444
				return getFixes({buffer: '<script>if (typeof(a) === "object"){}</script>', 
2445
								  rule: rule,
2446
								  expected: expected,
2447
								  callback: callback,
2448
								  contentType: 'text/html'});
2449
			});
2450
			it("no-extra-parens - in HTML fix all not nested",function(callback) {
2451
				var rule = createTestRule('no-extra-parens');
2452
				 var expected = [
2453
				 				{value: "",
2454
								start: 16, 
2455
								end: 17},
2456
								{value: "",
2457
								start: 20, 
2458
								end: 21},
2459
								{value: "",
2460
								start: 31, 
2461
								end: 32},
2462
								{value: "",
2463
								start: 35, 
2464
								end: 36}
2465
								];
2466
				return getFixes({buffer: '<script>var a = (1+1);\nvar b = (1-1);</script>', 
2467
								  rule: rule,
2468
								  expected: expected,
2469
								  callback: callback,
2470
								  contentType: 'text/html'});
2471
			});
2472
			it("no-extra-parens - in HTML fix all nested",function(callback) {
2473
				var rule = createTestRule('no-extra-parens');
2474
				 var expected = [
2475
				 				{value: "",
2476
								start: 16, 
2477
								end: 18},
2478
								{value: "",
2479
								start: 19, 
2480
								end: 20},
2481
								{value: "",
2482
								start: 21, 
2483
								end: 22},
2484
								{value: "",
2485
								start: 23, 
2486
								end: 25},
2487
								];
2488
				return getFixes({buffer: '<script>var a = ((1)+(1));</script>', 
2489
								  rule: rule,
2490
								  expected: expected,
2491
								  callback: callback,
2492
								  contentType: 'text/html'});
2493
			});
2494
			it("no-extra-parens - multiline expression",function(callback) {
2495
				var rule = createTestRule('no-extra-parens');
2496
				 var expected = [
2497
				 				{value: "",
2498
								start: 10, 
2499
								end: 11},
2500
								{value: "",
2501
								start: 14, 
2502
								end: 15}
2503
								];
2504
				return getFixes({buffer: 'if (a === (\nb\n)){}', 
2505
								  rule: rule,
2506
								  expected: expected,
2507
								  callback: callback});
2508
			});
2509
			it("no-extra-parens -space before closing paren",function(callback) {
2510
				var rule = createTestRule('no-extra-parens');
2511
				 var expected = [
2512
				 				{value: "",
2513
								start: 10, 
2514
								end: 11},
2515
								{value: "",
2516
								start: 13, 
2517
								end: 14}
2518
								];
2519
				return getFixes({buffer: 'if (a === (b )){}', 
2520
								  rule: rule,
2521
								  expected: expected,
2522
								  callback: callback});
2523
			});
2524
		});
2525
		//NO-EXTRA-SEMI
2526
		describe('no-extra-semi', function(){
2527
			it("Test no-extra-semi-1",function(callback) {
2528
				var rule = createTestRule('no-extra-semi');
2529
				 var expected = {value: "",
2530
								start: 15, 
2531
								end: 16};
2532
				return getFixes({buffer: 'function f() {};', 
2533
								  rule: rule,
2534
								  expected: expected,
2535
								  callback: callback});
2536
			});
2537
			it("Test no-extra-semi-2",function(callback) {
2538
				var rule = createTestRule('no-extra-semi');
2539
				var expected = {value: "",
2540
								start: 13, 
2541
								end: 14};
2542
				return getFixes({buffer: 'var foo = 10;;', 
2543
								  rule: rule,
2544
								  expected: expected,
2545
								  callback: callback});
2546
			});
2547
			it("Test no-extra-semi-3",function(callback) {
2548
				var rule = createTestRule('no-extra-semi');
2549
				var expected = {value: "",
2550
								start: 13, 
2551
								end: 14};
2552
				return getFixes({buffer: 'var foo = {};;', 
2553
								  rule: rule,
2554
								  expected: expected,
2555
								  callback: callback});
2556
			});
2557
			it("Test no-extra-semi-4",function(callback) {
2558
				var rule = createTestRule('no-extra-semi');
2559
				var expected = {value: "",
2560
								start: 0, 
2561
								end: 1};
2562
				return getFixes({buffer: ';', 
2563
								  rule: rule,
2564
								  expected: expected,
2565
								  callback: callback});
2566
			});
2567
			it("Test no-extra-semi-html-1",function(callback) {
2568
				var rule = createTestRule('no-extra-semi');
2569
				 var expected = {value: "",
2570
								start: 35, 
2571
								end: 36};
2572
				return getFixes({buffer: '<html><head><script>function f() {};</script></head></html>', 
2573
								  rule: rule,
2574
								  expected: expected,
2575
								  callback: callback,
2576
								  contentType: 'text/html'});
2577
			});
2578
			it("Test no-extra-semi-html-2",function(callback) {
2579
				var rule = createTestRule('no-extra-semi');
2580
				var expected = {value: "",
2581
								start: 33, 
2582
								end: 34};
2583
				return getFixes({buffer: '<html><head><script>var foo = 10;;</script></head></html>', 
2584
								  rule: rule,
2585
								  expected: expected,
2586
								  callback: callback,
2587
								  contentType: 'text/html'});
2588
			});
2589
			it("Test no-extra-semi-html-3",function(callback) {
2590
				var rule = createTestRule('no-extra-semi');
2591
				var expected = {value: "",
2592
								start: 33, 
2593
								end: 34};
2594
				return getFixes({buffer: '<html><head><script>var foo = {};;</script></head></html>', 
2595
								  rule: rule,
2596
								  expected: expected,
2597
								  callback: callback,
2598
								  contentType: 'text/html'});
2599
			});
2600
			it("Test no-extra-semi-html-4",function(callback) {
2601
				var rule = createTestRule('no-extra-semi');
2602
				var expected = {value: "",
2603
								start: 20, 
2604
								end: 21};
2605
				return getFixes({buffer: '<html><head><script>;</script></head></html>', 
2606
								  rule: rule,
2607
								  expected: expected,
2608
								  callback: callback,
2609
								  contentType: 'text/html'});
2610
			});
2611
			it("Test no-extra-semi-html-5",function(callback) {
2612
				var rule = createTestRule('no-extra-semi');
2613
				var expected = {value: "",
2614
								start: 37, 
2615
								end: 38};
2616
				return getFixes({buffer: '<html><head><script></script><script>;</script></head></html>', 
2617
								  rule: rule,
2618
								  expected: expected,
2619
								  callback: callback,
2620
								  contentType: 'text/html'});
2621
			});
2622
			it("Test no-extra-semi fix all 1",function(callback) {
2623
				var rule = createTestRule('no-extra-semi');
2624
				 var expected = [
2625
				 				{value: "",
2626
								start: 15, 
2627
								end: 16},
2628
								{value: "",
2629
								start: 32, 
2630
								end: 33}
2631
								];
2632
				return getFixes({buffer: 'function f() {}; function g() {};', 
2633
								  rule: rule,
2634
								  expected: expected,
2635
								  callback: callback});
2636
			});
2637
			it("Test no-extra-semi fix all 2",function(callback) {
2638
				var rule = createTestRule('no-extra-semi');
2639
				 var expected = [
2640
				 				{value: "",
2641
								start: 11, 
2642
								end: 14}
2643
								];
2644
				return getFixes({buffer: 'var a = 10;;;;', 
2645
								  rule: rule,
2646
								  expected: expected,
2647
								  callback: callback});
2648
			});
2649
			it("Test no-extra-semi fix all 3",function(callback) {
2650
				var rule = createTestRule('no-extra-semi');
2651
				 var expected = [
2652
				 				{value: "",
2653
								start: 14, 
2654
								end: 17}
2655
								];
2656
				return getFixes({buffer: 'function f(){};;;', 
2657
								  rule: rule,
2658
								  expected: expected,
2659
								  callback: callback});
2660
			});
2661
			it("Test no-extra-semi fix all 4",function(callback) {
2662
				var rule = createTestRule('no-extra-semi');
2663
				 var expected = [
2664
				 				{value: "",
2665
								start: 0, 
2666
								end: 1},
2667
								{value: "",
2668
								start: 17, 
2669
								end: 18},
2670
								{value: "",
2671
								start: 29, 
2672
								end: 30},
2673
								{value: "",
2674
								start: 42, 
2675
								end: 43}
2676
								];
2677
				return getFixes({buffer: '; function f() {}; var a = 0;; var b = {};;', 
2678
								  rule: rule,
2679
								  expected: expected,
2680
								  callback: callback});
2681
			});
2682
			it("Test no-extra-semi fix all inside html",function(callback) {
2683
				var rule = createTestRule('no-extra-semi');
2684
				var expected = [
2685
				 				{value: "",
2686
								start: 18, 
2687
								end: 21}
2688
								];
2689
				return getFixes({buffer: '<script>var a = 0;;;;</script>', 
2690
								  rule: rule,
2691
								  expected: expected,
2692
								  callback: callback,
2693
								  contentType: 'text/html'});
2694
			});
2695
			it("Test no-extra-semi-2",function(callback) {
2696
				var rule = createTestRule('no-extra-semi');
2697
				var expected = {value: "",
2698
								start: 13, 
2699
								end: 14};
2700
				return getFixes({buffer: 'var foo = 10;;', 
2701
								  rule: rule,
2702
								  expected: expected,
2703
								  callback: callback});
2704
			});
2705
			it("Test no-extra-semi-3",function(callback) {
2706
				var rule = createTestRule('no-extra-semi');
2707
				var expected = {value: "",
2708
								start: 13, 
2709
								end: 14};
2710
				return getFixes({buffer: 'var foo = {};;', 
2711
								  rule: rule,
2712
								  expected: expected,
2713
								  callback: callback});
2714
			});
2715
			it("Test no-extra-semi-4",function(callback) {
2716
				var rule = createTestRule('no-extra-semi');
2717
				var expected = {value: "",
2718
								start: 0, 
2719
								end: 1};
2720
				return getFixes({buffer: ';', 
2721
								  rule: rule,
2722
								  expected: expected,
2723
								  callback: callback});
2724
			});
2725
			
2726
			
2727
			
2728
		});
2729
		//NO-FALLTHROUGH
2730
		describe("no-fallthrough", function() {
2731
			it("Test no-fallthrough-1",function(callback) {
2732
				var rule = createTestRule('no-fallthrough');
2733
				var expected = {value: "//$FALLTHROUGH$",
2734
								start: 30, 
2735
								end: 30};
2736
				return getFixes({buffer: 'switch(num) {case 1:{code();} case 2:{}}', 
2737
								  rule: rule,
2738
								  expected: expected,
2739
								  callback: callback});
2740
			});
2741
			it("Test no-fallthrough-2",function(callback) {
2742
				var rule = createTestRule('no-fallthrough');
2743
				var expected = {value: "//$FALLTHROUGH$",
2744
								start: 46, 
2745
								end: 46};
2746
				return getFixes({buffer: 'switch(num) {case 1:{break;} case 2:{code();} default: {}}', 
2747
								  rule: rule,
2748
								  expected: expected,
2749
								  callback: callback});
2750
			});
2751
			it("Test no-fallthrough-html-1",function(callback) {
2752
				var rule = createTestRule('no-fallthrough');
2753
				var expected = {value: "//$FALLTHROUGH$",
2754
								start: 50, 
2755
								end: 50};
2756
				return getFixes({buffer: '<html><head><script>switch(num) {case 1:{code();} case 2:{}}</script></head></html>', 
2757
								  rule: rule,
2758
								  expected: expected,
2759
								  callback: callback,
2760
								  contentType: 'text/html'});
2761
			});
2762
			it("Test no-fallthrough-html-2",function(callback) {
2763
				var rule = createTestRule('no-fallthrough');
2764
				var expected = {value: "//$FALLTHROUGH$",
2765
								start: 66, 
2766
								end: 66};
2767
				return getFixes({buffer: '<html><head><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>', 
2768
								  rule: rule,
2769
								  expected: expected,
2770
								  callback: callback,
2771
								  contentType: 'text/html'});
2772
			});
2773
			it("Test no-fallthrough-html-3",function(callback) {
2774
				var rule = createTestRule('no-fallthrough');
2775
				var expected = {value: "//$FALLTHROUGH$",
2776
								start: 83, 
2777
								end: 83};
2778
				return getFixes({buffer: '<html><head><script></script><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>', 
2779
								  rule: rule,
2780
								  expected: expected,
2781
								  callback: callback,
2782
								  contentType: 'text/html'});
2783
			});
2784
			it("Test no-fallthrough-break-1",function(callback) {
2785
				var rule = createTestRule('no-fallthrough');
2786
				var expected = {value: "break;",
2787
								start: 30, 
2788
								end: 30};
2789
				return getFixes({buffer: 'switch(num) {case 1:{code();} case 2:{}}', 
2790
								  rule: rule,
2791
								  expected: expected,
2792
								  callback: callback,
2793
								  fixid: 'no-fallthrough-break'});
2794
			});
2795
			it("Test no-fallthrough-break-2",function(callback) {
2796
				var rule = createTestRule('no-fallthrough');
2797
				var expected = {value: "break;",
2798
								start: 46, 
2799
								end: 46};
2800
				return getFixes({buffer: 'switch(num) {case 1:{break;} case 2:{code();} default: {}}', 
2801
								  rule: rule,
2802
								  expected: expected,
2803
								  callback: callback,
2804
								  fixid: 'no-fallthrough-break'});
2805
			});
2806
			it("Test no-fallthrough-break-html-1",function(callback) {
2807
				var rule = createTestRule('no-fallthrough');
2808
				var expected = {value: "break;",
2809
								start: 50, 
2810
								end: 50};
2811
				return getFixes({buffer: '<html><head><script>switch(num) {case 1:{code();} case 2:{}}</script></head></html>', 
2812
								  rule: rule,
2813
								  expected: expected,
2814
								  callback: callback,
2815
								  fixid: 'no-fallthrough-break',
2816
								  contentType: 'text/html'});
2817
			});
2818
			it("Test no-fallthrough-break-html-2",function(callback) {
2819
				var rule = createTestRule('no-fallthrough');
2820
				var expected = {value: "break;",
2821
								start: 66, 
2822
								end: 66};
2823
				return getFixes({buffer: '<html><head><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>', 
2824
								  rule: rule,
2825
								  expected: expected,
2826
								  callback: callback,
2827
								  fixid: 'no-fallthrough-break',
2828
								  contentType: 'text/html'});
2829
			});
2830
			it("Test no-fallthrough-break-html-3",function(callback) {
2831
				var rule = createTestRule('no-fallthrough');
2832
				var expected = {value: "break;",
2833
								start: 83, 
2834
								end: 83};
2835
				return getFixes({buffer: '<html><head><script></script><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>', 
2836
								  rule: rule,
2837
								  expected: expected,
2838
								  callback: callback,
2839
								  fixid: 'no-fallthrough-break',
2840
								  contentType: 'text/html'});
2841
			});
2842
		});
2843
		//NO-NEW-ARRAY
2844
		describe("no-new-array", function() {
2845
			it("test no-new-array single non-number literal param",function(callback) {
2846
				var rule = createTestRule('no-new-array');
2847
				return getFixes({
2848
					buffer: "var ar = new Array('a');",
2849
					rule: rule,
2850
					expected: { value: "['a']", start: 9,  end: 23 },
2851
					callback: callback
2852
				});
2910
				});
2853
			});
2911
				it("Test no-throw-literal-string",function(callback) {
2854
			it("test no-new-array multi number literal params",function(callback) {
2912
					var rule = createTestRule('no-throw-literal');
2855
				var rule = createTestRule('no-new-array');
2913
					return getFixes({
2856
				return getFixes({
2914
						buffer: 'throw "fizz buzz"',
2857
					buffer: "var ar = new Array(1, 2, 3);",
2915
						rule: rule,
2858
					rule: rule,
2916
						expected: { value: "new Error(\"fizz buzz\")", start: 6,  end: 17 },
2859
					expected: { value: "[1, 2, 3]", start: 9,  end: 27 },
2917
						callback: callback
2860
					callback: callback
2918
					});
2861
				});
2919
				});
2920
				it("Test no-throw-literal-ArrayExpression",function(callback) {
2921
					var rule = createTestRule('no-throw-literal');
2922
					return getFixes({
2923
						buffer: 'throw [1,  2]',
2924
						rule: rule,
2925
						expected: { value: "new Error([1,  2])", start: 6,  end: 13 },
2926
						callback: callback
2927
					});
2928
			   });
2862
			});
2929
			});
2863
			it("test no-new-array mixed multi params",function(callback) {
2930
			//NO-RESERVED-KEYS
2864
				var rule = createTestRule('no-new-array');
2931
			describe("no-reserved-keys", function() {
2865
				return getFixes({
2932
				/**
2866
					buffer: "var ar = new Array(1, 'd', {});",
2933
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=469966
2867
					rule: rule,
2934
				 */
2868
					expected: { value: "[1, 'd', {}]", start: 9,  end: 30 },
2935
				it("Test no-reserved-keys-fix-1",function(callback) {
2869
					callback: callback
2936
					var rule = createTestRule('no-reserved-keys');
2937
					var expected = {value: '"public"',
2938
									start: 11,
2939
									end: 17
2940
									};
2941
					return getFixes({buffer: 'var foo = {public: 1};',
2942
										rule: rule,
2943
										expected: expected,
2944
										callback: callback});
2870
				});
2945
				});
2871
			});
2946
				/**
2872
			it("test no-new-array call expr single non-number literal param",function(callback) {
2947
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=469966
2873
				var rule = createTestRule('no-new-array');
2948
				 */
2874
				return getFixes({
2949
				it("Test no-reserved-keys-fix-2",function(callback) {
2875
					buffer: "var ar = Array('a');",
2950
					var rule = createTestRule('no-reserved-keys');
2876
					rule: rule,
2951
					var expected = {value: '"enum"',
2877
					expected: { value: "['a']", start: 9,  end: 19 },
2952
									start: 24,
2878
					callback: callback
2953
									end: 28
2954
									};
2955
					return getFixes({buffer: 'var foo = {"public": 1, enum:2};',
2956
										rule: rule,
2957
										expected: expected,
2958
										callback: callback});
2879
				});
2959
				});
2880
			});
2960
				/**
2881
			it("test no-new-array call expr multi number literal params",function(callback) {
2961
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=469966
2882
				var rule = createTestRule('no-new-array');
2962
				 */
2883
				return getFixes({
2963
				it("Test no-reserved-keys-fix-3",function(callback) {
2884
					buffer: "var ar = Array(1, 2, 3);",
2964
					var rule = createTestRule('no-reserved-keys');
2885
					rule: rule,
2965
					var expected = {value: '"break"',
2886
					expected: { value: "[1, 2, 3]", start: 9,  end: 23 },
2966
									start: 34,
2887
					callback: callback
2967
									end: 39
2968
									};
2969
					return getFixes({buffer: 'var foo = {"public": 1, "enum":2, break: function(){}};',
2970
										rule: rule,
2971
										expected: expected,
2972
										callback: callback});
2888
				});
2973
				});
2889
			});
2974
				it("Test no-reserved-keys multi 1", function(done) {
2890
			it("test no-new-array call expr mixed multi params",function(callback) {
2975
					var rule = createTestRule("no-reserved-keys");
2891
				var rule = createTestRule('no-new-array');
2976
					var expected = [
2892
				return getFixes({
2977
						{value: '"void"', start: 9, end: 13},
2893
					buffer: "var ar = Array(1, 'd', {});",
2978
						{value: '"in"', start: 18, end: 20}
2894
					rule: rule,
2979
					];
2895
					expected: { value: "[1, 'd', {}]", start: 9,  end: 26 },
2980
					return getFixes({
2896
					callback: callback
2981
						buffer: "var v = {void: {},in: {}};",
2982
						rule: rule,
2983
						expected: expected,
2984
						callback: done
2985
					});
2897
				});
2986
				});
2898
			});
2987
			});
2899
		});
2988
			//NO-UNDEF
2900
		//NO-THROW-LITERAL
2989
			describe("no-undef", function() {
2901
		describe("no-throw-literal", function() {
2990
				 /**
2902
			it("Test no-throw-literal-number",function(callback) {
2991
				  * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=458567
2903
				var rule = createTestRule('no-throw-literal');
2992
				  */
2904
				return getFixes({
2993
				 it("Test no-undef-defined-existing-doc",function(callback) {
2905
					buffer: 'throw 1',
2994
					var rule = createTestRule('no-undef');
2906
					rule: rule,
2995
					var expected = {value: "/*globals aa:true */",
2907
					expected: { value: "new Error(1)", start: 6,  end: 7 },
2996
									start: 0, 
2908
					callback: callback
2997
									end: 0};
2998
					return getFixes({buffer: '/** @returns {Object} */ function f() {aa = 10;}', 
2999
										rule: rule,
3000
										expected: expected,
3001
										callback: callback});
2909
				});
3002
				});
2910
			});
3003
				/**
2911
			it("Test no-throw-literal-string",function(callback) {
3004
				  * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=458567
2912
				var rule = createTestRule('no-throw-literal');
3005
				  */
2913
				return getFixes({
3006
				 it("Test no-undef-defined-existing-doc 2",function(callback) {
2914
					buffer: 'throw "fizz buzz"',
3007
					var rule = createTestRule('no-undef');
2915
					rule: rule,
3008
					var expected = {value: "/*globals aa:true */",
2916
					expected: { value: "new Error(\"fizz buzz\")", start: 6,  end: 17 },
3009
									start: 25, 
2917
					callback: callback
3010
									end: 25};
3011
					return getFixes({buffer: '/** just some comment */ function f() {aa = 10;}', 
3012
										rule: rule,
3013
										expected: expected,
3014
										callback: callback});
2918
				});
3015
				});
2919
			});
3016
				/**
2920
			it("Test no-throw-literal-ArrayExpression",function(callback) {
3017
				  * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=458567
2921
				var rule = createTestRule('no-throw-literal');
3018
				  */
2922
				return getFixes({
3019
				 it("Test no-undef-defined-existing-doc 3",function(callback) {
2923
					buffer: 'throw [1,  2]',
3020
					var rule = createTestRule('no-undef');
2924
					rule: rule,
3021
					var expected = {value: "/*globals Foo */",
2925
					expected: { value: "new Error([1,  2])", start: 6,  end: 13 },
3022
									start: 0, 
2926
					callback: callback
3023
									end: 0};
3024
					return getFixes({buffer: '/** @returns {Object} */ Foo["bar"] =function() {};', 
3025
										rule: rule,
3026
										expected: expected,
3027
										callback: callback});
2927
				});
3028
				});
2928
		   });
3029
				/**
2929
		});
3030
				  * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=458567
2930
		//NO-RESERVED-KEYS
3031
				  */
2931
		describe("no-reserved-keys", function() {
3032
				 it("Test no-undef-defined-existing-doc 4",function(callback) {
2932
			/**
3033
					var rule = createTestRule('no-undef');
2933
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=469966
3034
					var expected = {value: "/*globals Foo */",
2934
			 */
3035
									start: 25, 
2935
			it("Test no-reserved-keys-fix-1",function(callback) {
3036
									end: 25};
2936
				var rule = createTestRule('no-reserved-keys');
3037
					return getFixes({buffer: '/** just some comment */ Foo["bar"] =function() {};', 
2937
				var expected = {value: '"public"',
2938
								start: 11,
2939
								end: 17
2940
								};
2941
				return getFixes({buffer: 'var foo = {public: 1};',
2942
									rule: rule,
3038
									rule: rule,
2943
									expected: expected,
3039
									expected: expected,
2944
									callback: callback});
3040
									callback: callback});
2945
			});
3041
				});
2946
			/**
3042
				it("Test no-undef-defined-1",function(callback) {
2947
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=469966
3043
					var rule = createTestRule('no-undef');
2948
			 */
3044
					var expected = {value: "/*eslint-env browser */",
2949
			it("Test no-reserved-keys-fix-2",function(callback) {
3045
									start: 0, 
2950
				var rule = createTestRule('no-reserved-keys');
3046
									end: 0};
2951
				var expected = {value: '"enum"',
3047
					return getFixes(
2952
								start: 24,
3048
									{buffer: 'console.log(10);', 
2953
								end: 28
2954
								};
2955
				return getFixes({buffer: 'var foo = {"public": 1, enum:2};',
2956
									rule: rule,
3049
									rule: rule,
2957
									expected: expected,
3050
									expected: expected,
2958
									callback: callback});
3051
									callback: callback});
2959
			});
3052
				});
2960
			/**
3053
				/**
2961
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=469966
3054
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
2962
			 */
3055
				 */
2963
			it("Test no-reserved-keys-fix-3",function(callback) {
3056
				it("Test no-undef-defined-1a",function(callback) {
2964
				var rule = createTestRule('no-reserved-keys');
3057
					var rule = createTestRule('no-undef');
2965
				var expected = {value: '"break"',
3058
					var expected = {value: "/*eslint-env node */",
2966
								start: 34,
3059
									start: 0, 
2967
								end: 39
3060
									end: 0};
2968
								};
3061
					return getFixes(
2969
				return getFixes({buffer: 'var foo = {"public": 1, "enum":2, break: function(){}};',
3062
									{buffer: 'var v = require("");\nconsole.log(10);', 
3063
									rule: rule,
3064
									pbcount: 2,
3065
									expected: expected,
3066
									callback: callback});
3067
				});
3068
				/**
3069
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
3070
				 */
3071
				it("Test no-undef-defined-1b",function(callback) {
3072
					var rule = createTestRule('no-undef');
3073
					var expected = {value: "/*eslint-env browser */",
3074
									start: 0, 
3075
									end: 0};
3076
					return getFixes(
3077
									{buffer: 'define([], function() {console.log(10);});', 
3078
									rule: rule,
3079
									pbcount: 2,
3080
									pbindex: 1,
3081
									expected: expected,
3082
									callback: callback});
3083
				});
3084
				/**
3085
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
3086
				 */
3087
				it("Test no-undef-defined-1c",function(callback) {
3088
					var rule = createTestRule('no-undef');
3089
					var expected = {value: "/*eslint-env browser */",
3090
									start: 0, 
3091
									end: 0};
3092
					return getFixes(
3093
									{buffer: 'define([], function(require) { var v = require("");\nconsole.log(10);});', 
3094
									rule: rule,
3095
									pbcount: 2,
3096
									pbindex: 1,
3097
									expected: expected,
3098
									callback: callback});
3099
				});
3100
				/**
3101
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
3102
				 */
3103
				it("Test no-undef-defined-1d",function(callback) {
3104
					var rule = createTestRule('no-undef');
3105
					var expected = {value: "/*eslint-env browser */",
3106
									start: 0, 
3107
									end: 0};
3108
					return getFixes(
3109
									{buffer: 'define("", [], function() {console.log(10);});', 
3110
									rule: rule,
3111
									pbcount: 2,
3112
									pbindex: 1,
3113
									expected: expected,
3114
									callback: callback});
3115
				});
3116
				/**
3117
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
3118
				 */
3119
				it("Test no-undef-defined-1e",function(callback) {
3120
					var rule = createTestRule('no-undef');
3121
					var expected = {value: "/*eslint-env browser */",
3122
									start: 0, 
3123
									end: 0};
3124
					return getFixes(
3125
									{buffer: 'define(function() {console.log(10);});', 
3126
									rule: rule,
3127
									pbcount: 2,
3128
									pbindex: 1,
3129
									expected: expected,
3130
									callback: callback});
3131
				});
3132
				/**
3133
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
3134
				 */
3135
				it("Test no-undef-defined-1f",function(callback) {
3136
					var rule = createTestRule('no-undef');
3137
					var expected = {value: "/*eslint-env browser */",
3138
									start: 0, 
3139
									end: 0};
3140
					return getFixes(
3141
									{buffer: 'require({}); console.log(10);', 
3142
									rule: rule,
3143
									pbcount: 2,
3144
									pbindex: 1,
3145
									expected: expected,
3146
									callback: callback});
3147
				});
3148
				/**
3149
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
3150
				 */
3151
				it("Test no-undef-defined-1g",function(callback) {
3152
					var rule = createTestRule('no-undef');
3153
					var expected = {value: "/*eslint-env browser */",
3154
									start: 0, 
3155
									end: 0};
3156
					return getFixes(
3157
									{buffer: 'require([""]); console.log(10);', 
3158
									rule: rule,
3159
									pbcount: 2,
3160
									pbindex: 1,
3161
									expected: expected,
3162
									callback: callback});
3163
				});
3164
				it("Test no-undef-defined-2",function(callback) {
3165
					var rule = createTestRule('no-undef');
3166
					var expected = {value: "/*globals foo */",
3167
									start: 0, 
3168
									end: 0};
3169
					return getFixes(
3170
									{buffer: 'foo(10);', 
2970
									rule: rule,
3171
									rule: rule,
2971
									expected: expected,
3172
									expected: expected,
2972
									callback: callback});
3173
									callback: callback});
2973
			});
3174
				});
2974
			it("Test no-reserved-keys multi 1", function(done) {
3175
				it("Test no-undef-defined-3",function(callback) {
2975
				var rule = createTestRule("no-reserved-keys");
3176
					var rule = createTestRule('no-undef');
2976
				var expected = [
3177
					var expected = {value: "globals foo bar",
2977
					{value: '"void"', start: 9, end: 13},
3178
									start: 2, 
2978
					{value: '"in"', start: 18, end: 20}
3179
									end: 14};
2979
				];
3180
					return getFixes(
2980
				return getFixes({
3181
									{buffer: '/*globals foo */ foo(10); bar();', 
2981
					buffer: "var v = {void: {},in: {}};",
3182
									rule: rule,
2982
					rule: rule,
3183
									expected: expected,
2983
					expected: expected,
3184
									callback: callback});
2984
					callback: done
3185
				});
3186
				it("Test no-undef-defined-4",function(callback) {
3187
					var rule = createTestRule('no-undef');
3188
					var expected = {value: "globals bar foo:true",
3189
									start: 2, 
3190
									end: 13};
3191
					return getFixes({buffer: '/*globals bar*/ foo++; bar();', 
3192
										rule: rule,
3193
										expected: expected,
3194
										callback: callback});
3195
				});
3196
				it("Test no-undef-defined-5",function(callback) {
3197
					var rule = createTestRule('no-undef');
3198
					var expected = {value: "globals bar foo:true",
3199
									start: 2, 
3200
									end: 13};
3201
					return getFixes({buffer: '/*globals bar*/ foo = bar; bar();', 
3202
									  rule: rule,
3203
									  expected: expected,
3204
									callback: callback});
3205
				});
3206
				it("Test no-undef-defined-eslint-env-4",function(callback) {
3207
					var rule = createTestRule('no-undef');
3208
					var expected = {value: "eslint-env node, browser",
3209
									start: 2, 
3210
									end: 18};
3211
					return getFixes({buffer: '/*eslint-env node */ console.log(10); window.open();', 
3212
									  rule: rule,
3213
									  expected: expected,
3214
									callback: callback});
3215
				});
3216
				it("Test no-undef-defined-indent-1",function(callback) {
3217
					var rule = createTestRule('no-undef');
3218
					var expected = {value: "/*globals foo */\n\t\t",
3219
									start: 2, 
3220
									end: 2};
3221
					return getFixes({buffer: '\t\tfoo(10);', 
3222
									  rule: rule,
3223
									  expected: expected,
3224
									callback: callback});
3225
				});
3226
				it("Test no-undef-defined-indent-2",function(callback) {
3227
					var rule = createTestRule('no-undef');
3228
					var expected = {value: "/*globals foo */\n    ",
3229
									start: 4, 
3230
									end: 4};
3231
					return getFixes({buffer: '    foo(10);', 
3232
									  rule: rule,
3233
									  expected: expected,
3234
									callback: callback});
3235
				});
3236
				it("Test no-undef-defined-indent-3",function(callback) {
3237
					var rule = createTestRule('no-undef');
3238
					var expected = {value: "/*globals foo */\n\t  \t",
3239
									start: 4, 
3240
									end: 4};
3241
					return getFixes({buffer: '\t  \tfoo(10);', 
3242
									  rule: rule,
3243
									  expected: expected,
3244
									callback: callback});
3245
				});
3246
				it("Test no-undef-defined-indent-4",function(callback) {
3247
					var rule = createTestRule('no-undef');
3248
					var expected = {value: "/*eslint-env browser */\n\t\t",
3249
									start: 2, 
3250
									end: 2};
3251
					return getFixes({buffer: '\t\tconsole.log(10);', 
3252
									  rule: rule,
3253
									  expected: expected,
3254
									callback: callback});
3255
				});
3256
				it("Test no-undef-defined-indent-5",function(callback) {
3257
					var rule = createTestRule('no-undef');
3258
					var expected = {value: "/*eslint-env browser */\n    ",
3259
									start: 4, 
3260
									end: 4};
3261
					return getFixes({buffer: '    console.log(10);', 
3262
									  rule: rule,
3263
									  expected: expected,
3264
									callback: callback});
3265
				});
3266
				it("Test no-undef-defined-indent-6",function(callback) {
3267
					var rule = createTestRule('no-undef');
3268
					var expected = {value: "/*eslint-env browser */\n\t  \t",
3269
									start: 4, 
3270
									end: 4};
3271
					return getFixes({buffer: '\t  \tconsole.log(10);', 
3272
									  rule: rule,
3273
									  expected: expected,
3274
									callback: callback});
2985
				});
3275
				});
2986
			});
3276
			});
2987
		});
3277
			//NO-UNDEF-EXPRESSION
2988
		//NO-UNDEF
3278
			describe("no-undef-expression", function() {
2989
		describe("no-undef", function() {
3279
				 it("Navigate to definition in file",function(callback) {
2990
			 /**
3280
					var rule = createTestRule('no-undef-expression');
2991
			  * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=458567
3281
					var expected = {file: 'quickfix_test_script.js',
2992
			  */
3282
									start: 8, 
2993
			 it("Test no-undef-defined-existing-doc",function(callback) {
3283
									end: 15};
2994
				var rule = createTestRule('no-undef');
3284
					return getFixes({buffer: 'var a = {b: ""}; var c = a; c.d();', 
2995
				var expected = {value: "/*globals aa:true */",
3285
										rule: rule,
2996
								start: 0, 
3286
										expected: expected,
2997
								end: 0};
3287
										callback: callback});
2998
				return getFixes({buffer: '/** @returns {Object} */ function f() {aa = 10;}', 
2999
									rule: rule,
3000
									expected: expected,
3001
									callback: callback});
3002
			});
3003
			/**
3004
			  * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=458567
3005
			  */
3006
			 it("Test no-undef-defined-existing-doc 2",function(callback) {
3007
				var rule = createTestRule('no-undef');
3008
				var expected = {value: "/*globals aa:true */",
3009
								start: 25, 
3010
								end: 25};
3011
				return getFixes({buffer: '/** just some comment */ function f() {aa = 10;}', 
3012
									rule: rule,
3013
									expected: expected,
3014
									callback: callback});
3015
			});
3016
			/**
3017
			  * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=458567
3018
			  */
3019
			 it("Test no-undef-defined-existing-doc 3",function(callback) {
3020
				var rule = createTestRule('no-undef');
3021
				var expected = {value: "/*globals Foo */",
3022
								start: 0, 
3023
								end: 0};
3024
				return getFixes({buffer: '/** @returns {Object} */ Foo["bar"] =function() {};', 
3025
									rule: rule,
3026
									expected: expected,
3027
									callback: callback});
3028
			});
3029
			/**
3030
			  * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=458567
3031
			  */
3032
			 it("Test no-undef-defined-existing-doc 4",function(callback) {
3033
				var rule = createTestRule('no-undef');
3034
				var expected = {value: "/*globals Foo */",
3035
								start: 25, 
3036
								end: 25};
3037
				return getFixes({buffer: '/** just some comment */ Foo["bar"] =function() {};', 
3038
								rule: rule,
3039
								expected: expected,
3040
								callback: callback});
3041
			});
3042
			it("Test no-undef-defined-1",function(callback) {
3043
				var rule = createTestRule('no-undef');
3044
				var expected = {value: "/*eslint-env browser */",
3045
								start: 0, 
3046
								end: 0};
3047
				return getFixes(
3048
								{buffer: 'console.log(10);', 
3049
								rule: rule,
3050
								expected: expected,
3051
								callback: callback});
3052
			});
3053
			/**
3054
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
3055
			 */
3056
			it("Test no-undef-defined-1a",function(callback) {
3057
				var rule = createTestRule('no-undef');
3058
				var expected = {value: "/*eslint-env node */",
3059
								start: 0, 
3060
								end: 0};
3061
				return getFixes(
3062
								{buffer: 'var v = require("");\nconsole.log(10);', 
3063
								rule: rule,
3064
								pbcount: 2,
3065
								expected: expected,
3066
								callback: callback});
3067
			});
3068
			/**
3069
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
3070
			 */
3071
			it("Test no-undef-defined-1b",function(callback) {
3072
				var rule = createTestRule('no-undef');
3073
				var expected = {value: "/*eslint-env browser */",
3074
								start: 0, 
3075
								end: 0};
3076
				return getFixes(
3077
								{buffer: 'define([], function() {console.log(10);});', 
3078
								rule: rule,
3079
								pbcount: 2,
3080
								pbindex: 1,
3081
								expected: expected,
3082
								callback: callback});
3083
			});
3084
			/**
3085
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
3086
			 */
3087
			it("Test no-undef-defined-1c",function(callback) {
3088
				var rule = createTestRule('no-undef');
3089
				var expected = {value: "/*eslint-env browser */",
3090
								start: 0, 
3091
								end: 0};
3092
				return getFixes(
3093
								{buffer: 'define([], function(require) { var v = require("");\nconsole.log(10);});', 
3094
								rule: rule,
3095
								pbcount: 2,
3096
								pbindex: 1,
3097
								expected: expected,
3098
								callback: callback});
3099
			});
3100
			/**
3101
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
3102
			 */
3103
			it("Test no-undef-defined-1d",function(callback) {
3104
				var rule = createTestRule('no-undef');
3105
				var expected = {value: "/*eslint-env browser */",
3106
								start: 0, 
3107
								end: 0};
3108
				return getFixes(
3109
								{buffer: 'define("", [], function() {console.log(10);});', 
3110
								rule: rule,
3111
								pbcount: 2,
3112
								pbindex: 1,
3113
								expected: expected,
3114
								callback: callback});
3115
			});
3116
			/**
3117
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
3118
			 */
3119
			it("Test no-undef-defined-1e",function(callback) {
3120
				var rule = createTestRule('no-undef');
3121
				var expected = {value: "/*eslint-env browser */",
3122
								start: 0, 
3123
								end: 0};
3124
				return getFixes(
3125
								{buffer: 'define(function() {console.log(10);});', 
3126
								rule: rule,
3127
								pbcount: 2,
3128
								pbindex: 1,
3129
								expected: expected,
3130
								callback: callback});
3131
			});
3132
			/**
3133
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
3134
			 */
3135
			it("Test no-undef-defined-1f",function(callback) {
3136
				var rule = createTestRule('no-undef');
3137
				var expected = {value: "/*eslint-env browser */",
3138
								start: 0, 
3139
								end: 0};
3140
				return getFixes(
3141
								{buffer: 'require({}); console.log(10);', 
3142
								rule: rule,
3143
								pbcount: 2,
3144
								pbindex: 1,
3145
								expected: expected,
3146
								callback: callback});
3147
			});
3148
			/**
3149
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=494575
3150
			 */
3151
			it("Test no-undef-defined-1g",function(callback) {
3152
				var rule = createTestRule('no-undef');
3153
				var expected = {value: "/*eslint-env browser */",
3154
								start: 0, 
3155
								end: 0};
3156
				return getFixes(
3157
								{buffer: 'require([""]); console.log(10);', 
3158
								rule: rule,
3159
								pbcount: 2,
3160
								pbindex: 1,
3161
								expected: expected,
3162
								callback: callback});
3163
			});
3164
			it("Test no-undef-defined-2",function(callback) {
3165
				var rule = createTestRule('no-undef');
3166
				var expected = {value: "/*globals foo */",
3167
								start: 0, 
3168
								end: 0};
3169
				return getFixes(
3170
								{buffer: 'foo(10);', 
3171
								rule: rule,
3172
								expected: expected,
3173
								callback: callback});
3174
			});
3175
			it("Test no-undef-defined-3",function(callback) {
3176
				var rule = createTestRule('no-undef');
3177
				var expected = {value: "globals foo bar",
3178
								start: 2, 
3179
								end: 14};
3180
				return getFixes(
3181
								{buffer: '/*globals foo */ foo(10); bar();', 
3182
								rule: rule,
3183
								expected: expected,
3184
								callback: callback});
3185
			});
3186
			it("Test no-undef-defined-4",function(callback) {
3187
				var rule = createTestRule('no-undef');
3188
				var expected = {value: "globals bar foo:true",
3189
								start: 2, 
3190
								end: 13};
3191
				return getFixes({buffer: '/*globals bar*/ foo++; bar();', 
3192
									rule: rule,
3193
									expected: expected,
3194
									callback: callback});
3195
			});
3196
			it("Test no-undef-defined-5",function(callback) {
3197
				var rule = createTestRule('no-undef');
3198
				var expected = {value: "globals bar foo:true",
3199
								start: 2, 
3200
								end: 13};
3201
				return getFixes({buffer: '/*globals bar*/ foo = bar; bar();', 
3202
								  rule: rule,
3203
								  expected: expected,
3204
								callback: callback});
3205
			});
3206
			it("Test no-undef-defined-eslint-env-4",function(callback) {
3207
				var rule = createTestRule('no-undef');
3208
				var expected = {value: "eslint-env node, browser",
3209
								start: 2, 
3210
								end: 18};
3211
				return getFixes({buffer: '/*eslint-env node */ console.log(10); window.open();', 
3212
								  rule: rule,
3213
								  expected: expected,
3214
								callback: callback});
3215
			});
3216
			it("Test no-undef-defined-indent-1",function(callback) {
3217
				var rule = createTestRule('no-undef');
3218
				var expected = {value: "/*globals foo */\n\t\t",
3219
								start: 2, 
3220
								end: 2};
3221
				return getFixes({buffer: '\t\tfoo(10);', 
3222
								  rule: rule,
3223
								  expected: expected,
3224
								callback: callback});
3225
			});
3226
			it("Test no-undef-defined-indent-2",function(callback) {
3227
				var rule = createTestRule('no-undef');
3228
				var expected = {value: "/*globals foo */\n    ",
3229
								start: 4, 
3230
								end: 4};
3231
				return getFixes({buffer: '    foo(10);', 
3232
								  rule: rule,
3233
								  expected: expected,
3234
								callback: callback});
3235
			});
3236
			it("Test no-undef-defined-indent-3",function(callback) {
3237
				var rule = createTestRule('no-undef');
3238
				var expected = {value: "/*globals foo */\n\t  \t",
3239
								start: 4, 
3240
								end: 4};
3241
				return getFixes({buffer: '\t  \tfoo(10);', 
3242
								  rule: rule,
3243
								  expected: expected,
3244
								callback: callback});
3245
			});
3246
			it("Test no-undef-defined-indent-4",function(callback) {
3247
				var rule = createTestRule('no-undef');
3248
				var expected = {value: "/*eslint-env browser */\n\t\t",
3249
								start: 2, 
3250
								end: 2};
3251
				return getFixes({buffer: '\t\tconsole.log(10);', 
3252
								  rule: rule,
3253
								  expected: expected,
3254
								callback: callback});
3255
			});
3256
			it("Test no-undef-defined-indent-5",function(callback) {
3257
				var rule = createTestRule('no-undef');
3258
				var expected = {value: "/*eslint-env browser */\n    ",
3259
								start: 4, 
3260
								end: 4};
3261
				return getFixes({buffer: '    console.log(10);', 
3262
								  rule: rule,
3263
								  expected: expected,
3264
								callback: callback});
3265
			});
3266
			it("Test no-undef-defined-indent-6",function(callback) {
3267
				var rule = createTestRule('no-undef');
3268
				var expected = {value: "/*eslint-env browser */\n\t  \t",
3269
								start: 4, 
3270
								end: 4};
3271
				return getFixes({buffer: '\t  \tconsole.log(10);', 
3272
								  rule: rule,
3273
								  expected: expected,
3274
								callback: callback});
3275
			});
3276
		});
3277
		//NO-UNDEF-EXPRESSION
3278
		describe("no-undef-expression", function() {
3279
			 it("Navigate to definition in file",function(callback) {
3280
				var rule = createTestRule('no-undef-expression');
3281
				var expected = {file: 'quickfix_test_script.js',
3282
								start: 8, 
3283
								end: 15};
3284
				return getFixes({buffer: 'var a = {b: ""}; var c = a; c.d();', 
3285
									rule: rule,
3286
									expected: expected,
3287
									callback: callback});
3288
			});
3289
		});
3290
		//NO-UNUSED-PARAMS
3291
		describe("no-unused-params", function() {
3292
			this.timeout(1000000);
3293
			it("Test no-unused-params-1",function(callback) {
3294
				var rule = createTestRule('no-unused-params');
3295
				var expected = {value: "",
3296
								start: 11,
3297
								end: 12};
3298
				return getFixes({buffer: 'function f(p) {}', 
3299
									rule: rule,
3300
									expected: expected,
3301
									callback: callback});
3302
			});
3303
			it("Test no-unused-params-2",function(callback) {
3304
				var rule = createTestRule('no-unused-params');
3305
				var expected = {value: "",
3306
								start: 14,
3307
								end: 18};
3308
				return getFixes({buffer: 'function f(p, p2, p3) {p(); p3();}', 
3309
								  rule: rule,
3310
								  expected: expected,
3311
								callback: callback});
3312
			});
3313
			it("Test no-unused-params-3",function(callback) {
3314
				var rule = createTestRule('no-unused-params');
3315
				var expected = {value: "",
3316
								start:16,
3317
								end:20};
3318
				return getFixes({buffer: 'function f(p, p2, p3) {p(); p2();}', 
3319
								  rule: rule,
3320
								  expected: expected,
3321
								callback: callback});
3322
			});
3323
			it("Test no-unused-params-4",function(callback) {
3324
				var rule = createTestRule('no-unused-params');
3325
				var expected = {value: "/* @callback */",
3326
								start: 11, 
3327
								end: 11};
3328
				return getFixes({buffer: 'define([], function(p, p2, p3) {p(); p2();});', 
3329
								  rule: rule,
3330
								  expected: expected,
3331
								callback: callback});
3332
			});
3333
			it("Test no-unused-params-5",function(callback) {
3334
				var rule = createTestRule('no-unused-params');
3335
				var expected = {value: "/**\n * @callback\n */",
3336
								start: 10, 
3337
								end: 10};
3338
				return getFixes({buffer: 'var f = { one: function(p, p2, p3) {p(); p2();}};', 
3339
								  rule: rule,
3340
								  expected: expected,
3341
								callback: callback});
3342
			});
3343
			/**
3344
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=461462
3345
			 */
3346
			it("Test no-unused-params-existing-doc-1",function(callback) {
3347
				var rule = createTestRule('no-unused-params');
3348
				var expected = {value: "* @callback\n",
3349
								start: 25, 
3350
								end: 25};
3351
				return getFixes({buffer: 'var f = { /**\n *@see\n *\n */\none: function(p, p2, p3) {p(); p2();}};', 
3352
								  rule: rule,
3353
								  expected: expected,
3354
								callback: callback});
3355
			});
3356
			/**
3357
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3358
			 * @since 10.0
3359
			 */
3360
			it("Test no-unused-params-assignment-1",function(callback) {
3361
				var rule = createTestRule('no-unused-params');
3362
				var expected = {value: "* @callback\n",
3363
								start: 4, 
3364
								end: 4};
3365
				return getFixes({buffer: '/** */a.b.c = function(p1) {};', 
3366
								  rule: rule,
3367
								  expected: expected,
3368
								callback: callback});
3369
			});
3370
			/**
3371
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3372
			 * @since 10.0
3373
			 */
3374
			it("Test no-unused-params-assignment-2",function(callback) {
3375
				var rule = createTestRule('no-unused-params');
3376
				var expected = {value: "* @callback\n",
3377
								start: 4, 
3378
								end: 4};
3379
				return getFixes({buffer: '/** */f = function(p1) {};', 
3380
								  rule: rule,
3381
								  expected: expected,
3382
								callback: callback});
3383
			});
3384
			/**
3385
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3386
			 * @since 10.0
3387
			 */
3388
			it("Test no-unused-params-assignment-3",function(callback) {
3389
				var rule = createTestRule('no-unused-params');
3390
				var expected = {value: "* @callback\n",
3391
								start: 4, 
3392
								end: 4};
3393
				return getFixes({buffer: '/** */var f = function(p1) {};', 
3394
								  rule: rule,
3395
								  expected: expected,
3396
								callback: callback});
3397
			});
3398
			/**
3399
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3400
			 * @since 10.0
3401
			 */
3402
			it("Test no-unused-params-assignment-4",function(callback) {
3403
				var rule = createTestRule('no-unused-params');
3404
				var expected = {value: "* @callback\n",
3405
								start: 16, 
3406
								end: 16};
3407
				return getFixes({buffer: 'var f = 10, /** */g = function(p1) {};', 
3408
								  rule: rule,
3409
								  expected: expected,
3410
								callback: callback});
3411
			});
3412
			/**
3413
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3414
			 * @since 10.0
3415
			 */
3416
			it("Test no-unused-params-assignment-5",function(callback) {
3417
				var rule = createTestRule('no-unused-params');
3418
				var expected = {value: "/**\n * @callback\n */\n",
3419
								start: 0, 
3420
								end: 0};
3421
				return getFixes({buffer: 'a.b.c = function(p1) {};', 
3422
								  rule: rule,
3423
								  expected: expected,
3424
								callback: callback});
3425
			});
3426
			/**
3427
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3428
			 * @since 10.0
3429
			 */
3430
			it("Test no-unused-params-assignment-6",function(callback) {
3431
				var rule = createTestRule('no-unused-params');
3432
				var expected = {value: "/**\n * @callback\n */\n",
3433
								start: 0, 
3434
								end: 0};
3435
				return getFixes({buffer: 'f = function(p1) {};', 
3436
								  rule: rule,
3437
								  expected: expected,
3438
								callback: callback});
3439
			});
3440
			/**
3441
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3442
			 * @since 10.0
3443
			 */
3444
			it("Test no-unused-params-assignment-7",function(callback) {
3445
				var rule = createTestRule('no-unused-params');
3446
				var expected = {value: "/**\n * @callback\n */\n",
3447
								start: 0, 
3448
								end: 0};
3449
				return getFixes({buffer: 'var f = function(p1) {};', 
3450
								  rule: rule,
3451
								  expected: expected,
3452
								callback: callback});
3453
			});
3454
			/**
3455
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3456
			 * @since 10.0
3457
			 */
3458
			it("Test no-unused-params-assignment-8",function(callback) {
3459
				var rule = createTestRule('no-unused-params');
3460
				var expected = {value: "/**\n * @callback\n */\n",
3461
								start: 12, 
3462
								end: 12};
3463
				return getFixes({buffer: 'var f = 10, g = function(p1) {};', 
3464
								  rule: rule,
3465
								  expected: expected,
3466
								callback: callback});
3467
			});
3468
			/**
3469
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=467757
3470
			 */
3471
			it("Test no-unused-params-leading-line-comment-1",function(callback) {
3472
				var rule = createTestRule('no-unused-params');
3473
				var expected = {value: "/**\n  * @callback\n  */\n ",
3474
								start: 16, 
3475
								end: 16};
3476
				return getFixes({buffer: 'var f = {//foo\n one: function(p, p2, p3) {p(); p2();}};', 
3477
								  rule: rule,
3478
								  expected: expected,
3479
								callback: callback});
3480
			});
3481
			it("Test no-unused-params-html-1",function(callback) {
3482
				var rule = createTestRule('no-unused-params');
3483
				var expected = {value: "",
3484
								start: 31,
3485
								end: 32};
3486
				return getFixes({buffer: '<html><head><script>function f(p) {}</script></head></html>', 
3487
								  rule: rule,
3488
								  expected: expected,
3489
								callback: callback,
3490
								  contentType: 'text/html'});
3491
			});
3492
			it("Test no-unused-params-html-2",function(callback) {
3493
				var rule = createTestRule('no-unused-params');
3494
				var expected = {value: "",
3495
								start: 34,
3496
								end: 38};
3497
				return getFixes({buffer: '<html><head><script>function f(p, p2, p3) {p(); p3();}</script></head></html>', 
3498
								  rule: rule,
3499
								  expected: expected,
3500
								callback: callback,
3501
								  contentType: 'text/html'});
3502
			});
3503
			it("Test no-unused-params-html-3",function(callback) {
3504
				var rule = createTestRule('no-unused-params');
3505
				var expected = {value: "",
3506
								start:36,
3507
								end:40};
3508
				return getFixes({buffer: '<html><head><script>function f(p, p2, p3) {p(); p2();}</script></head></html>', 
3509
								  rule: rule,
3510
								  expected: expected,
3511
								callback: callback,
3512
								  contentType: 'text/html'});
3513
			});
3514
			it("Test no-unused-params-html-4",function(callback) {
3515
				var rule = createTestRule('no-unused-params');
3516
				var expected = {value: "/* @callback */",
3517
								start: 31, 
3518
								end: 31};
3519
				return getFixes({buffer: '<html><head><script>define([], function(p, p2, p3) {p(); p2();});</script></head></html>', 
3520
								  rule: rule,
3521
								  expected: expected,
3522
								callback: callback,
3523
								  contentType: 'text/html'});
3524
			});
3525
			it("Test no-unused-params-html-5",function(callback) {
3526
				var rule = createTestRule('no-unused-params');
3527
				var expected = {value: "/**\n * @callback\n */\n",
3528
								start: 30, 
3529
								end: 30};
3530
				return getFixes({buffer: '<html><head><script>var f = { one: function(p, p2, p3) {p(); p2();}};</script></head></html>', 
3531
								  rule: rule,
3532
								  expected: expected,
3533
								  callback: callback,
3534
								  contentType: 'text/html'});
3535
			});
3536
			/**
3537
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=461462
3538
			 */
3539
			it("Test no-unused-params-html-existing-doc-1",function(callback) {
3540
				var rule = createTestRule('no-unused-params');
3541
				var expected = {value: "* @callback",
3542
								start: 45, 
3543
								end: 45};
3544
				return getFixes({buffer: '<html><head><script>var f = { /**\n *@see\n *\n */\none: function(p, p2, p3) {p(); p2();}};</script></head></html>', 
3545
								  rule: rule,
3546
								  expected: expected,
3547
								callback: callback,
3548
								  contentType: 'text/html'});
3549
			});
3550
3551
			/**
3552
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=488790
3553
			 */
3554
			 it("Test no-unused-params-update-doc-1", function(callback){
3555
			 	var rule = createTestRule('no-unused-params');
3556
			 	var expected = [{value: '',
3557
								start: 18, 
3558
								end: 72},
3559
								{value:'',
3560
								start: 94,
3561
								end:98 }];
3562
			 	return getFixes({buffer: 'var temp = {\n\t/**\n\t * @param {String} file The file name that we parsed\n\t */\n\tparse: function(file) {\n\t\treturn null;\n\t}\n}',
3563
			 					rule: rule,
3564
			 					expected: expected,
3565
			 					callback: callback,
3566
			 					fixid: "no-unused-params"});
3567
			 });
3568
3569
			 it("Test no-unused-params-update-doc-2", function(callback){
3570
			 	var rule = createTestRule('no-unused-params');
3571
			 	var expected = [{value: '',
3572
								start: 12, 
3573
								end: 66},
3574
								{value:'',
3575
								start: 132,
3576
								end:138 }];
3577
			 	return getFixes({buffer: 'test({\n\t/**\n\t * @param {String} file The file name that we parsed\n\t * @param {String} text The text to return\n\t */\n\tparse: function(file, text) {\n\t\treturn text;\n\t}\n});',
3578
			 					rule: rule,
3579
			 					expected: expected,
3580
			 					callback: callback,
3581
			 					fixid: "no-unused-params"});
3582
			 });
3583
3584
			 it("Test no-unused-params-update-doc-3", function(callback){
3585
			 	var rule = createTestRule('no-unused-params');
3586
			 	var expected = [{value: '',
3587
								start: 57, 
3588
								end: 100},
3589
								{value:'',
3590
								start: 123,
3591
								end:129 }];
3592
			 	return getFixes({buffer: '/**\n * @param {String} file The file name that we parsed\n * @param {String} text The text to return\n */\nfunction parse(file, text) {\n\treturn file;\n}',
3593
			 					rule: rule,
3594
			 					expected: expected,
3595
			 					callback: callback,
3596
			 					fixid: "no-unused-params"});
3597
			 });
3598
3599
			 /**
3600
			 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=490109
3601
			 */
3602
			 it("Test no-unused-params-fix-all-1", function(callback){
3603
			 	var rule = createTestRule('no-unused-params');
3604
			 	var expected = [{
3605
			 		value: '',
3606
			 		start: 66,
3607
			 		end: 105
3608
			 	},{
3609
			 		value: '',
3610
			 		start: 142,
3611
			 		end: 152
3612
			 	}];
3613
			 	return getFixes({
3614
			 		buffer: '/*eslint-env node */\n/**\n * @name bar\n * @description description\n * @param p1\n * @param p2\n * @param p3\n * @returns returns\n */\nfunction bar(p1, p2, p3) {\n}',
3615
			 		rule: rule,
3616
			 		expected: expected,
3617
			 		callback: callback
3618
			 	});
3619
			 });
3620
3621
			 it("Test no-unused-params-fix-all-2", function(callback){
3622
			 	var rule = createTestRule('no-unused-params');
3623
			 	var expected = [{
3624
			 		value: '',
3625
			 		start: 14,
3626
			 		end: 22
3627
			 	},{
3628
			 		value: '',
3629
			 		start: 52,
3630
			 		end: 62
3631
			 	}];
3632
			 	return getFixes({
3633
			 		buffer: 'function bar2(p1, p2, p3){\n\tp3();\n}\nfunction bar3(p1,   p2, p3){\n\tp1();\n}',
3634
			 		rule: rule,
3635
			 		expected: expected,
3636
			 		callback: callback
3637
			 	});
3638
			 });
3639
3640
			 it("Test no-unused-params-fix-all-3", function(callback){
3641
			 	var rule = createTestRule('no-unused-params');
3642
			 	var expected = [{
3643
			 		value: '',
3644
			 		start: 14,
3645
			 		end: 24
3646
			 	},{
3647
			 		value: '',
3648
			 		start: 43,
3649
			 		end: 88
3650
			 	}];
3651
			 	return getFixes({
3652
			 		buffer: 'function bar2(p1, p2, p3){\n}\nfunction bar3(p1,   p2,                                  p3){\n}',
3653
			 		rule: rule,
3654
			 		expected: expected,
3655
			 		callback: callback
3656
			 	});
3657
			 });
3658
3659
			 it("Test no-unused-params-fix-all-4", function(callback){
3660
			 	var rule = createTestRule('no-unused-params');
3661
			 	var expected = [{
3662
			 		value: '',
3663
			 		start: 20,
3664
			 		end: 59
3665
			 	}];
3666
			 	return getFixes({
3667
			 		buffer: 'var bar = function (p1,                \np2,                p3) {\n\tp3();\n}',
3668
			 		rule: rule,
3669
			 		expected: expected,
3670
			 		callback: callback,
3671
			 		fixid: "no-unused-params"
3672
			 	});
3673
			 });
3674
3675
			 it("Test no-unused-params-fix-all-5", function(callback){
3676
			 	var rule = createTestRule('no-unused-params');
3677
			 	var expected = [{
3678
			 		value: '',
3679
			 		start: 45,
3680
			 		end: 97
3681
			 	},{
3682
			 		value: '',
3683
			 		start: 134,
3684
			 		end: 198
3685
			 	}];
3686
			 	return getFixes({
3687
			 		buffer: '/**\n * @name bar\n * @description description\n * @param p1\n * @param p2\n * @param p3\n * @param p4\n * @returns returns\n */\nfunction bar(p1,                               p2, \n p3,                   p4) {\n}',
3688
			 		rule: rule,
3689
			 		expected: expected,
3690
			 		callback: callback,
3691
			 		fixid: "no-unused-params"
3692
			 	});
3693
			 });
3694
3695
			 it("Test no-unused-params-fix-all-6", function(callback){
3696
			 	var rule = createTestRule('no-unused-params');
3697
			 	var expected = [{
3698
			 		value: '',
3699
			 		start: 58,
3700
			 		end: 97
3701
			 	},{
3702
			 		value: '',
3703
			 		start: 136,
3704
			 		end: 198
3705
			 	}];
3706
			 	return getFixes({
3707
			 		buffer: '/**\n * @name bar\n * @description description\n * @param p1\n * @param p2\n * @param p3\n * @param p4\n * @returns returns\n */\nfunction bar(p1,                               p2, \n p3,                   p4) {\n \tp1();\n}',
3708
			 		rule: rule,
3709
			 		expected: expected,
3710
			 		callback: callback,
3711
			 		fixid: "no-unused-params"
3712
			 	});
3713
			 });
3714
		});
3715
		//EQEQEQ
3716
		describe('eqeqeq', function(){
3717
			it("Test eqeqeq-1",function(callback) {
3718
				var rule = createTestRule('eqeqeq');
3719
				var expected = {value: "===",
3720
								start: 5, 
3721
								end: 7};
3722
				return getFixes({buffer: 'if(1 == 3) {}', 
3723
								  rule: rule,
3724
								  expected: expected,
3725
								callback: callback});
3726
			});
3727
			it("Test eqeqeq-2",function(callback) {
3728
				var rule = createTestRule('eqeqeq');
3729
				var expected = {value: "===",
3730
								start: 12, 
3731
								end: 14};
3732
				return getFixes({buffer: 'if(typeof f == "undefined") {}', 
3733
								  rule: rule,
3734
								  expected: expected,
3735
								callback: callback});
3736
			});
3737
			it("Test eqeqeq-3",function(callback) {
3738
				var rule = createTestRule('eqeqeq');
3739
				var expected = {value: "!==",
3740
								start: 5, 
3741
								end: 7};
3742
				return getFixes({buffer: 'if(1 != 3) {}', 
3743
								  rule: rule,
3744
								  expected: expected,
3745
								callback: callback});
3746
			});
3747
			it("Test eqeqeq-4",function(callback) {
3748
				var rule = createTestRule('eqeqeq');
3749
				var expected = {value: "!==",
3750
								start: 12, 
3751
								end: 14};
3752
				return getFixes({buffer: 'if(typeof f != "undefined") {}', 
3753
								  rule: rule,
3754
								  expected: expected,
3755
								callback: callback});
3756
			});
3757
			it("Test eqeqeq-html-1",function(callback) {
3758
				var rule = createTestRule('eqeqeq');
3759
				var expected = {value: "===",
3760
								start: 25, 
3761
								end: 27};
3762
				return getFixes({buffer: '<html><head><script>if(1 == 3) {}</script></head></html>', 
3763
								  rule: rule,
3764
								  expected: expected,
3765
								callback: callback,
3766
								  contentType: 'text/html'});
3767
			});
3768
			it("Test eqeqeq-html-2",function(callback) {
3769
				var rule = createTestRule('eqeqeq');
3770
				var expected = {value: "===",
3771
								start: 32, 
3772
								end: 34};
3773
				return getFixes({buffer: '<html><head><script>if(typeof f == "undefined") {}</script></head></html>', 
3774
								  rule: rule,
3775
								  expected: expected,
3776
								  callback: callback,
3777
								  contentType: 'text/html'});
3778
			});
3779
			it("Test eqeqeq-html-3",function(callback) {
3780
				var rule = createTestRule('eqeqeq');
3781
				var expected = {value: "!==",
3782
								start: 25, 
3783
								end: 27};
3784
				return getFixes({buffer: '<html><head><script>if(1 != 3) {}</script></head></html>', 
3785
								  rule: rule,
3786
								  expected: expected,
3787
								  callback: callback,
3788
								  contentType: 'text/html'});
3789
			});
3790
			it("Test eqeqeq-html-4",function(callback) {
3791
				var rule = createTestRule('eqeqeq');
3792
				var expected = {value: "!==",
3793
								start: 32, 
3794
								end: 34};
3795
				return getFixes({buffer: '<html><head><script>if(typeof f != "undefined") {}</script></head></html>', 
3796
								  rule: rule,
3797
								  expected: expected,
3798
								callback: callback,
3799
								  contentType: 'text/html'});
3800
			});
3801
			it("Test eqeqeq-html-5",function(callback) {
3802
				var rule = createTestRule('eqeqeq');
3803
				var expected = {value: "!==",
3804
								start: 49, 
3805
								end: 51};
3806
				return getFixes({buffer: '<html><head><script></script><script>if(typeof f != "undefined") {}</script></head></html>', 
3807
								  rule: rule,
3808
								  expected: expected,
3809
								  callback: callback,
3810
								  contentType: 'text/html'});
3811
			});
3812
			it("Test eqeqeq fix all 1",function(callback) {
3813
				var rule = createTestRule('eqeqeq');
3814
				var expected = [{value: "===",
3815
								start: 5, 
3816
								end: 7},
3817
								{value: "===",
3818
								start: 20,
3819
								end: 22}
3820
								];
3821
				return getFixes({buffer: 'if(1 == 3) {} if (1 == 4) {}', 
3822
								  rule: rule,
3823
								  expected: expected,
3824
								callback: callback});
3825
			});
3826
			it("Test eqeqeq fix all 2",function(callback) {
3827
				var rule = createTestRule('eqeqeq');
3828
				var expected = [{value: "!==",
3829
								start: 5, 
3830
								end: 7},
3831
								{value: "!==",
3832
								start: 20,
3833
								end: 22}
3834
								];
3835
				return getFixes({buffer: 'if(1 != 3) {} if (1 != 4) {}', 
3836
								  rule: rule,
3837
								  expected: expected,
3838
								callback: callback});
3839
			});
3840
			it("Test eqeqeq fix all 3",function(callback) {
3841
				var rule = createTestRule('eqeqeq');
3842
				var expected = [{value: "===",
3843
								start: 5, 
3844
								end: 7},
3845
								{value: "!==",
3846
								start: 20,
3847
								end: 22}
3848
								];
3849
				return getFixes({buffer: 'if(1 == 3) {} if (1 != 4) {}', 
3850
								  rule: rule,
3851
								  expected: expected,
3852
								callback: callback});
3853
			});
3854
		});
3855
		describe("no-unreachable", function() {
3856
		//NO-UNREACHABLE
3857
			it("Test no-unreachable-1",function(callback) {
3858
				var rule = createTestRule('no-unreachable');
3859
				var expected = {value: "",
3860
								start: 30, 
3861
								end: 36};
3862
				return getFixes({buffer: 'function foo(){var f;return 1;f = 9;}', 
3863
								  rule: rule,
3864
								  expected: expected,
3865
								  callback: callback});
3866
			});
3867
			it("Test no-unreachable-2",function(callback) {
3868
				var rule = createTestRule('no-unreachable');
3869
				var expected = {value: "",
3870
								start: 32, 
3871
								end: 39};
3872
				return getFixes({buffer: 'switch(num) { case 1: {throw e; f = 10;}}', 
3873
								  rule: rule,
3874
								  expected: expected,
3875
								  callback: callback});
3876
			});
3877
			it("Test no-unreachable-html-1",function(callback) {
3878
				var rule = createTestRule('no-unreachable');
3879
				var expected = {value: "",
3880
								start: 43, 
3881
								end: 51};
3882
				return getFixes({buffer: '<html><head><script>function f(p) {return; foo = 9;}</script></head></html>', 
3883
								  rule: rule,
3884
								  expected: expected,
3885
								callback: callback,
3886
								  contentType: 'text/html'});
3887
			});
3888
			it("Test no-unreachable-html-2",function(callback) {
3889
				var rule = createTestRule('no-unreachable');
3890
				var expected = {value: "",
3891
								start: 52, 
3892
								end: 59};
3893
				return getFixes({buffer: '<html><head><script>switch(num) { case 1: {throw e; f = 10;}}</script></head></html>', 
3894
								  rule: rule,
3895
								  expected: expected,
3896
								callback: callback,
3897
								  contentType: 'text/html'});
3898
			});
3899
		});
3900
		//NO-SPARSE-ARRAYS
3901
		describe("no-sparse-arrays", function() {
3902
			it("Test no-sparse-arrays-1",function(callback) {
3903
				var rule = createTestRule('no-sparse-arrays');
3904
				var expected = {value: "[1, 2]",
3905
								start: 8, 
3906
								end: 16};
3907
				return getFixes({buffer: 'var a = [1, , 2]', 
3908
								  rule: rule,
3909
								  expected: expected,
3910
								callback: callback});
3911
			});
3912
			it("Test no-sparse-arrays-2",function(callback) {
3913
				var rule = createTestRule('no-sparse-arrays');
3914
				var expected = {value: "[1, 2]",
3915
								start: 8, 
3916
								end: 20};
3917
				return getFixes({buffer: 'var a = [1, , 2, , ]', 
3918
								  rule: rule,
3919
								  expected: expected,
3920
								callback: callback});
3921
			});
3922
			it("Test no-sparse-arrays-3",function(callback) {
3923
				var rule = createTestRule('no-sparse-arrays');
3924
				var expected = {value: "[1, 2]",
3925
								start: 8, 
3926
								end: 24};
3927
				return getFixes({buffer: 'var a = [, , 1, , 2, , ]', 
3928
								  rule: rule,
3929
								  expected: expected,
3930
								callback: callback});
3931
			});
3932
			it("Test no-sparse-arrays-4",function(callback) {
3933
				var rule = createTestRule('no-sparse-arrays');
3934
				var expected = {value: "[1, 2]",
3935
								start: 8, 
3936
								end: 27};
3937
				return getFixes({buffer: 'var a = [, , \n1, \n, 2, \n, ]', 
3938
								  rule: rule,
3939
								  expected: expected,
3940
								callback: callback});
3941
			});
3942
			it("Test no-sparse-arrays-5",function(callback) {
3943
				var rule = createTestRule('no-sparse-arrays');
3944
				var expected = {value: "[1, 2, 3]",
3945
								start: 8, 
3946
								end: 28};
3947
				return getFixes({buffer: 'var a = [, , \n1, \n, 2, \n, 3]', 
3948
								  rule: rule,
3949
								  expected: expected,
3950
								callback: callback});
3951
			});
3952
			it("Test no-sparse-arrays-6",function(callback) {
3953
				var rule = createTestRule('no-sparse-arrays');
3954
				var expected = {value: "[1, 2, 3]",
3955
								start: 8, 
3956
								end: 41};
3957
				return getFixes({buffer: 'var a = [, ,,,, \n1, \n, , ,, ,\n,, 2, \n, 3]', 
3958
								  rule: rule,
3959
								  expected: expected,
3960
								callback: callback});
3961
			});
3962
			it("Test no-sparse-arrays-7",function(callback) {
3963
				var rule = createTestRule('no-sparse-arrays');
3964
				var expected = {value: "[1, 2]",
3965
								start: 8, 
3966
								end: 20};
3967
				return getFixes({buffer: 'var a = [1, , 2, , ];', 
3968
								  rule: rule,
3969
								  expected: expected,
3970
								  callback: callback});
3971
			});
3972
			it("Test no-sparse-arrays-8",function(callback) {
3973
				var rule = createTestRule('no-sparse-arrays');
3974
				var expected = {value: "[1, 2]",
3975
								start: 8, 
3976
								end: 27};
3977
				return getFixes({buffer: 'var a = [, , \n1, \n, 2, \n, ];', 
3978
								  rule: rule,
3979
								  expected: expected,
3980
								  callback: callback});
3981
			});
3982
			/**
3983
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=461449
3984
			 */
3985
			it("Test no-sparse-arrays-no-spacing-1",function(callback) {
3986
				var rule = createTestRule('no-sparse-arrays');
3987
				var expected = {value: "[1, 2]",
3988
								start: 8, 
3989
								end: 22};
3990
				return getFixes({buffer: 'var a = [,,\n1,\n,2,\n,,]', 
3991
								  rule: rule,
3992
								  expected: expected,
3993
								  callback: callback});
3994
			});
3995
			/**
3996
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=461449
3997
			 */
3998
			it("Test no-sparse-arrays-no-spacing-2",function(callback) {
3999
				var rule = createTestRule('no-sparse-arrays');
4000
				var expected = {value: "[1, 2]",
4001
								start: 0, 
4002
								end: 14};
4003
				return getFixes({buffer: '[,,\n1,\n,2,\n,,]', 
4004
								  rule: rule,
4005
								  expected: expected,
4006
								  callback: callback,
4007
								  pid: 'no-sparse-arrays'});
4008
			});
4009
			/**
4010
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=461449
4011
			 */
4012
			it("Test no-sparse-arrays-no-spacing-3",function(callback) {
4013
				var rule = createTestRule('no-sparse-arrays');
4014
				var expected = {value: "[1, 2]",
4015
								start: 8, 
4016
								end: 22};
4017
				return getFixes({buffer: 'var a = [,,\n1,\n,2,\n,,];', 
4018
								  rule: rule,
4019
								  expected: expected,
4020
								callback: callback});
4021
			});
4022
			/**
4023
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=461449
4024
			 */
4025
			it("Test no-sparse-arrays-no-spacing-4",function(callback) {
4026
				var rule = createTestRule('no-sparse-arrays');
4027
				var expected = {value: "[1, 2]",
4028
								start: 8, 
4029
								end: 22};
4030
				return getFixes({buffer: 'var a = [,,\n1,\n,2,\n,,]\nvar foo = "bar";', 
4031
								  rule: rule,
4032
								  expected: expected,
4033
								callback: callback});
4034
			});
4035
			it("Test no-sparse-arrays-html-1",function(callback) {
4036
				var rule = createTestRule('no-sparse-arrays');
4037
				var expected = {value: "[1, 2]",
4038
								start: 28, 
4039
								end: 36};
4040
				return getFixes({buffer: '<html><head><script>var a = [1, , 2]</script></head></html>', 
4041
								  rule: rule,
4042
								  expected: expected,
4043
								callback: callback,
4044
								  contentType: 'text/html'});
4045
			});
4046
			it("Test no-sparse-arrays-html-2",function(callback) {
4047
				var rule = createTestRule('no-sparse-arrays');
4048
				var expected = {value: "[1, 2]",
4049
								start: 28, 
4050
								end: 40};
4051
				return getFixes({buffer: '<html><head><script>var a = [1, , 2, , ]</script></head></html>', 
4052
								  rule: rule,
4053
								  expected: expected,
4054
								callback: callback,
4055
								  contentType: 'text/html'});
4056
			});
4057
			it("Test no-sparse-arrays-html-3",function(callback) {
4058
				var rule = createTestRule('no-sparse-arrays');
4059
				var expected = {value: "[1, 2]",
4060
								start: 28, 
4061
								end: 44};
4062
				return getFixes({buffer: '<html><head><script>var a = [, , 1, , 2, , ]</script></head></html>', 
4063
								  rule: rule,
4064
								  expected: expected,
4065
								callback: callback,
4066
								  contentType: 'text/html'});
4067
			});
4068
			it("Test no-sparse-arrays-html-4",function(callback) {
4069
				var rule = createTestRule('no-sparse-arrays');
4070
				var expected = {value: "[1, 2]",
4071
								start: 28, 
4072
								end: 46};
4073
				return getFixes({buffer: '<html><head><script>var a = [, , 1, \n, 2, \n, ]</script></head></html>', 
4074
								  rule: rule,
4075
								  expected: expected,
4076
								callback: callback,
4077
								  contentType: 'text/html'});
4078
			});
4079
			it("Test no-sparse-arrays-html-5",function(callback) {
4080
				var rule = createTestRule('no-sparse-arrays');
4081
				var expected = {value: "[1, 2, 3]",
4082
								start: 28, 
4083
								end: 48};
4084
				return getFixes({buffer: '<html><head><script>var a = [, , \n1, \n, 2, \n, 3]</script></head></html>', 
4085
								  rule: rule,
4086
								  expected: expected,
4087
								callback: callback,
4088
								  contentType: 'text/html'});
4089
			});
4090
			it("Test no-sparse-arrays-html-6",function(callback) {
4091
				var rule = createTestRule('no-sparse-arrays');
4092
				var expected = {value: "[1, 2, 3]",
4093
								start: 28, 
4094
								end: 61};
4095
				return getFixes({buffer: '<html><head><script>var a = [, ,,,, \n1, \n, , ,, ,\n,, 2, \n, 3]</script></head></html>', 
4096
								  rule: rule,
4097
								  expected: expected,
4098
								callback: callback,
4099
								  contentType: 'text/html'});
4100
			});
4101
			it("Test no-sparse-arrays-html-7",function(callback) {
4102
				var rule = createTestRule('no-sparse-arrays');
4103
				var expected = {value: "[1, 2]",
4104
								start: 28, 
4105
								end: 40};
4106
				return getFixes({buffer: '<html><head><script>var a = [1, , 2, , ];</script></head></html>', 
4107
								  rule: rule,
4108
								  expected: expected,
4109
								callback: callback,
4110
								  contentType: 'text/html'});
4111
			});
4112
			it("Test no-sparse-arrays-html-8",function(callback) {
4113
				var rule = createTestRule('no-sparse-arrays');
4114
				var expected = {value: "[1, 2]",
4115
								start: 28, 
4116
								end: 47};
4117
				return getFixes({buffer: '<html><head><script>var a = [, , \n1, \n, 2, \n, ];</script></head></html>', 
4118
								  rule: rule,
4119
								  expected: expected,
4120
								callback: callback,
4121
								  contentType: 'text/html'});
4122
			});
4123
4124
			/**
4125
			 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=489146
4126
			 */
4127
			it("Test no-sparse-arrays-empty-array-1",function(callback) {
4128
				var rule = createTestRule('no-sparse-arrays');
4129
				var expected = {value: "",
4130
								start: 9, 
4131
								end: 24};
4132
				return getFixes({buffer: 'var a = [, , \n, \n, , \n, ];', 
4133
								  rule: rule,
4134
								  expected: expected,
4135
								  callback: callback});
4136
			});
4137
4138
			it("Test no-sparse-arrays-empty-array-2",function(callback) {
4139
				var rule = createTestRule('no-sparse-arrays');
4140
				var expected = {value: "",
4141
								start: 9, 
4142
								end: 13};
4143
				return getFixes({buffer: 'var a = [, , ]', 
4144
								  rule: rule,
4145
								  expected: expected,
4146
								callback: callback});
4147
			});
4148
			it("Test no-sparse-arrays-empty-array-3",function(callback) {
4149
				var rule = createTestRule('no-sparse-arrays');
4150
				var expected = {value: "",
4151
								start: 10, 
4152
								end: 22};
4153
				return getFixes({buffer: 'var a = \n[, , , , , , ]', 
4154
								  rule: rule,
4155
								  expected: expected,
4156
								callback: callback});
4157
			});
4158
			it("Test no-sparse-arrays-empty-array-4",function(callback) {
4159
				var rule = createTestRule('no-sparse-arrays');
4160
				var expected = {value: "",
4161
								start: 9, 
4162
								end: 24};
4163
				return getFixes({buffer: 'var a = [, , \n, \n, , \n, ]\n;', 
4164
								  rule: rule,
4165
								  expected: expected,
4166
								callback: callback});
4167
			});
4168
		});
4169
		//SEMI
4170
		describe("semi", function(){
4171
			it("Test semi-1",function(callback) {
4172
				var rule = createTestRule('semi');
4173
				var expected = {value: ";",
4174
								start: 14, 
4175
								end: 14};
4176
				return getFixes({buffer: 'var a = [1, 2]', 
4177
								  rule: rule,
4178
								  expected: expected,
4179
								callback: callback});
4180
			});
4181
			it("Test semi-2",function(callback) {
4182
				var rule = createTestRule('semi');
4183
				var expected = {value: ";",
4184
								start: 5, 
4185
								end: 5};
4186
				return getFixes({buffer: 'foo()', 
4187
								  rule: rule,
4188
								  expected: expected,
4189
								callback: callback});
4190
			});
4191
			it("Test semi-3",function(callback) {
4192
				var rule = createTestRule('semi');
4193
				var expected = {value: ";",
4194
								start: 10, 
4195
								end: 10};
4196
				return getFixes({buffer: 'var a = {}', 
4197
								  rule: rule,
4198
								  expected: expected,
4199
								callback: callback});
4200
			});
4201
			it("Test semi-html-1",function(callback) {
4202
				var rule = createTestRule('semi');
4203
				var expected = {value: ";",
4204
								start: 34, 
4205
								end: 34};
4206
				return getFixes({buffer: '<html><head><script>var a = [1, 2]</script></head></html>', 
4207
								  rule: rule,
4208
								  expected: expected,
4209
								callback: callback,
4210
								  contentType: 'text/html'});
4211
			});
4212
			it("Test semi-html-2",function(callback) {
4213
				var rule = createTestRule('semi');
4214
				var expected = {value: ";",
4215
								start: 25, 
4216
								end: 25};
4217
				return getFixes({buffer: '<html><head><script>foo()</script></head></html>', 
4218
								  rule: rule,
4219
								  expected: expected,
4220
								callback: callback,
4221
								  contentType: 'text/html'});
4222
			});
4223
			it("Test semi-html-3",function(callback) {
4224
				var rule = createTestRule('semi');
4225
				var expected = {value: ";",
4226
								start: 30, 
4227
								end: 30};
4228
				return getFixes({buffer: '<html><head><script>var a = {}</script></head></html>', 
4229
								  rule: rule,
4230
								  expected: expected,
4231
								callback: callback,
4232
								  contentType: 'text/html'});
4233
			});
4234
			it("Test semi fix all 1",function(callback) {
4235
				var rule = createTestRule('semi');
4236
				var expected = [
4237
								{value: ";",
4238
								start: 14, 
4239
								end: 14},
4240
								{value: ";",
4241
								start: 29, 
4242
								end: 29}
4243
								];
4244
				return getFixes({buffer: 'var a = [1, 2]\nvar b = [1, 2]', 
4245
								  rule: rule,
4246
								  expected: expected,
4247
								callback: callback});
4248
			});
4249
			it("Test semi fix all 2",function(callback) {
4250
				var rule = createTestRule('semi');
4251
				var expected = [
4252
								{value: ";",
4253
								start: 5, 
4254
								end: 5},
4255
								{value: ";",
4256
								start: 11, 
4257
								end: 11}
4258
								];
4259
				return getFixes({buffer: 'foo()\nfoo()', 
4260
								  rule: rule,
4261
								  expected: expected,
4262
								callback: callback});
4263
			});
4264
			it("Test semi fix all 3",function(callback) {
4265
				var rule = createTestRule('semi');
4266
				var expected = [
4267
								{value: ";",
4268
								start: 10, 
4269
								end: 10},
4270
								{value: ";",
4271
								start: 21, 
4272
								end: 21}
4273
								];
4274
				return getFixes({buffer: 'var a = {}\nvar a = {}', 
4275
								  rule: rule,
4276
								  expected: expected,
4277
								callback: callback});
4278
			});
4279
			it("Test semi fix all 3",function(callback) {
4280
				var rule = createTestRule('semi');
4281
				var expected = [
4282
								{value: ";",
4283
								start: 14, 
4284
								end: 14},
4285
								{value: ";",
4286
								start: 20, 
4287
								end: 20},
4288
								{value: ";",
4289
								start: 31, 
4290
								end: 31}
4291
								];
4292
				return getFixes({buffer: 'var a = [1, 2]\nfoo()\nvar a = {}', 
4293
								  rule: rule,
4294
								  expected: expected,
4295
								callback: callback});
4296
			});
4297
		});
4298
		//NO-UNUSED-VARS-UNUSED
4299
		describe("no-unused-vars-unused", function() {
4300
			it("Test no-unused-vars-unused-1",function(callback) {
4301
				var rule = createTestRule('no-unused-vars');
4302
				var expected = {value: "",
4303
								start: 0, 
4304
								end: 6};
4305
				return getFixes({buffer: 'var a;', 
4306
								  rule: rule,
4307
								  expected: expected,
4308
								  callback: callback,
4309
								  pid: 'no-unused-vars-unused'});
4310
			});
4311
			it("Test no-unused-vars-unused-2",function(callback) {
4312
				var rule = createTestRule('no-unused-vars');
4313
				var expected = {value: "",
4314
								start: 10, 
4315
								end: 13};
4316
				return getFixes({buffer: 'var a = 10, b;', 
4317
								  rule: rule,
4318
								  expected: expected,
4319
								  callback: callback,
4320
								  pid: 'no-unused-vars-unused'});
4321
			});
4322
			it("Test no-unused-vars-unused-3",function(callback) {
4323
				var rule = createTestRule('no-unused-vars');
4324
				var expected = {value: "",
4325
								start: 12, 
4326
								end: 15};
4327
				return getFixes({buffer: 'var a = 10, b, c = 1;', 
4328
								  rule: rule,
4329
								  expected: expected,
4330
								  callback: callback,
4331
								  pid: 'no-unused-vars-unused'});
4332
			});
4333
			it("Test no-unused-vars-unused-funcdecl-1",function(callback) {
4334
				var rule = createTestRule('no-unused-vars');
4335
				var expected = {value: "",
4336
								start: 0, 
4337
								end: 15};
4338
				return getFixes({buffer: 'function f() {}', 
4339
								  rule: rule,
4340
								  expected: expected,
4341
								  callback: callback,
4342
								  pid: 'no-unused-vars-unused-funcdecl'});
4343
			});
4344
			it("Test no-unused-vars-unused-funcdecl-2",function(callback) {
4345
				var rule = createTestRule('no-unused-vars');
4346
				var expected = {value: "",
4347
								start: 26, 
4348
								end: 41};
4349
				return getFixes({buffer: 'var a = {one: function() {function f() {}}}', 
4350
								  rule: rule,
4351
								  expected: expected,
4352
								  callback: callback,
4353
								  pid: 'no-unused-vars-unused-funcdecl'});
4354
			});
4355
			it("Test no-unused-vars-unused-html-1",function(callback) {
4356
				var rule = createTestRule('no-unused-vars');
4357
				var expected = {value: "",
4358
								start: 20, 
4359
								end: 26};
4360
				return getFixes({buffer: '<html><head><script>var a;</script></head></html>', 
4361
								  rule: rule,
4362
								  expected: expected,
4363
								callback: callback,
4364
								  pid: 'no-unused-vars-unused',
4365
								  contentType: 'text/html'});
4366
			});
4367
			it("Test no-unused-vars-unused-html-2",function(callback) {
4368
				var rule = createTestRule('no-unused-vars');
4369
				var expected = {value: "",
4370
								start: 30, 
4371
								end: 33};
4372
				return getFixes({buffer: '<html><head><script>var a = 10, b;</script></head></html>', 
4373
								  rule: rule,
4374
								  expected: expected,
4375
								callback: callback,
4376
								  pid: 'no-unused-vars-unused',
4377
								  contentType: 'text/html'});
4378
			});
4379
			it("Test no-unused-vars-unused-html-3",function(callback) {
4380
				var rule = createTestRule('no-unused-vars');
4381
				var expected = {value: "",
4382
								start: 32, 
4383
								end: 35};
4384
				return getFixes({buffer: '<html><head><script>var a = 10, b, c = 1;</script></head></html>', 
4385
								  rule: rule,
4386
								  expected: expected,
4387
								callback: callback,
4388
								  pid: 'no-unused-vars-unused',
4389
								  contentType: 'text/html'});
4390
			});
4391
			it("Test no-unused-vars-unused-funcdecl-html-1",function(callback) {
4392
				var rule = createTestRule('no-unused-vars');
4393
				var expected = {value: "",
4394
								start: 20, 
4395
								end: 35};
4396
				return getFixes({buffer: '<html><head><script>function f() {}</script></head></html>', 
4397
								  rule: rule,
4398
								  expected: expected,
4399
								callback: callback,
4400
								  pid: 'no-unused-vars-unused-funcdecl',
4401
								  contentType: 'text/html'});
4402
			});
4403
			it("Test no-unused-vars-unused-funcdecl-html-2",function(callback) {
4404
				var rule = createTestRule('no-unused-vars');
4405
				var expected = {value: "",
4406
								start: 46, 
4407
								end: 61};
4408
				return getFixes({buffer: '<html><head><script>var a = {one: function() {function f() {}}}</script></head></html>', 
4409
								  rule: rule,
4410
								  expected: expected,
4411
								callback: callback,
4412
								  pid: 'no-unused-vars-unused-funcdecl',
4413
								  contentType: 'text/html'});
4414
			});
4415
		});
4416
		describe("no-unused-vars-unread", function() {
4417
			this.timeout(100000000);
4418
			it("Test no-unused-vars-unread-1",function(callback) {
4419
				var rule = createTestRule('no-unused-vars');
4420
				var expected = {value: "",
4421
								start: 0, 
4422
								end: 10};
4423
				return getFixes({buffer: 'var a = 4;', 
4424
								  rule: rule,
4425
								  expected: expected,
4426
								  callback: callback,
4427
								  pid: 'no-unused-vars-unread'});
4428
			});
4429
			it("Test no-unused-vars-unread-2",function(callback) {
4430
				var rule = createTestRule('no-unused-vars');
4431
				var expected = {value: "",
4432
								start: 4, 
4433
								end: 12};
4434
				return getFixes({buffer: 'var a = 10, b;', 
4435
								  rule: rule,
4436
								  expected: expected,
4437
								  callback: callback,
4438
								  pid: 'no-unused-vars-unread'});
4439
			});
4440
			it("Test no-unused-vars-unread-3",function(callback) {
4441
				var rule = createTestRule('no-unused-vars');
4442
				var expected = {value: "",
4443
								start: 5, 
4444
								end: 12};
4445
				return getFixes({buffer: 'var a, b = 4;', 
4446
								  rule: rule,
4447
								  expected: expected,
4448
								  callback: callback,
4449
								  pid: 'no-unused-vars-unread'});
4450
			});
4451
		});
4452
		//NO-MISSING-NLS
4453
		describe("no-missing-nls", function() {
4454
			it("Test missing-nls-1", function(callback) {
4455
				var rule = createTestRule('missing-nls');
4456
				var expected = {value: " //$NON-NLS-1$",
4457
								start: 12, 
4458
								end: 12};
4459
				return getFixes({buffer: 'var a = "a";', 
4460
								  rule: rule,
4461
								  expected: expected,
4462
								  callback: callback,
4463
								  pid: 'missing-nls'});
4464
			});
4465
			it("Test missing-nls-2",function(callback) {
4466
				var rule = createTestRule('missing-nls');
4467
				var expected = {value: " //$NON-NLS-2$",
4468
								start: 39, 
4469
								end: 39};
4470
				return getFixes({buffer: 'var a = "a"; var b = "b"; //$NON-NLS-1$', 
4471
								  rule: rule,
4472
								  expected: expected,
4473
								callback: callback,
4474
								  pid: 'missing-nls'});
4475
			});
4476
			it("Test missing-nls-3",function(callback) {
4477
				var rule = createTestRule('missing-nls');
4478
				var expected = {value: " //$NON-NLS-1$",
4479
								start: 39, 
4480
								end: 39};
4481
				return getFixes({buffer: 'var a = "a"; var b = "b"; //$NON-NLS-2$', 
4482
								  rule: rule,
4483
								  expected: expected,
4484
								callback: callback,
4485
								  pid: 'missing-nls'});
4486
			});
4487
			it("Test missing-nls multi 1",function(callback) {
4488
				var rule = createTestRule('missing-nls');
4489
				var expected = [
4490
					{value: " //$NON-NLS-1$ //$NON-NLS-2$", start: 33, end: 33}
4491
				];
4492
				return getFixes({
4493
					buffer: 'var two = "two", three = "three";',
4494
					rule: rule,
4495
					expected: expected,
4496
					callback: callback
4497
				});
3288
				});
4498
			});
3289
			});
4499
			it("Test missing-nls multi 2",function(callback) {
3290
			//NO-UNUSED-PARAMS
4500
				var rule = createTestRule('missing-nls');
3291
			describe("no-unused-params", function() {
4501
				var expected = [
3292
				this.timeout(1000000);
4502
					{value: " //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$", start: 45, end: 45}
3293
				it("Test no-unused-params-1",function(callback) {
4503
				];
3294
					var rule = createTestRule('no-unused-params');
4504
				return getFixes({
3295
					var expected = {value: "",
4505
					buffer: 'var four = "four", five ="five", six = "six";',
3296
									start: 11,
4506
					rule: rule,
3297
									end: 12};
4507
					expected: expected,
3298
					return getFixes({buffer: 'function f(p) {}', 
4508
					callback: callback
3299
										rule: rule,
3300
										expected: expected,
3301
										callback: callback});
3302
				});
3303
				it("Test no-unused-params-2",function(callback) {
3304
					var rule = createTestRule('no-unused-params');
3305
					var expected = {value: "",
3306
									start: 14,
3307
									end: 18};
3308
					return getFixes({buffer: 'function f(p, p2, p3) {p(); p3();}', 
3309
									  rule: rule,
3310
									  expected: expected,
3311
									callback: callback});
3312
				});
3313
				it("Test no-unused-params-3",function(callback) {
3314
					var rule = createTestRule('no-unused-params');
3315
					var expected = {value: "",
3316
									start:16,
3317
									end:20};
3318
					return getFixes({buffer: 'function f(p, p2, p3) {p(); p2();}', 
3319
									  rule: rule,
3320
									  expected: expected,
3321
									callback: callback});
3322
				});
3323
				it("Test no-unused-params-4",function(callback) {
3324
					var rule = createTestRule('no-unused-params');
3325
					var expected = {value: "/* @callback */",
3326
									start: 11, 
3327
									end: 11};
3328
					return getFixes({buffer: 'define([], function(p, p2, p3) {p(); p2();});', 
3329
									  rule: rule,
3330
									  expected: expected,
3331
									callback: callback});
3332
				});
3333
				it("Test no-unused-params-5",function(callback) {
3334
					var rule = createTestRule('no-unused-params');
3335
					var expected = {value: "/**\n * @callback\n */",
3336
									start: 10, 
3337
									end: 10};
3338
					return getFixes({buffer: 'var f = { one: function(p, p2, p3) {p(); p2();}};', 
3339
									  rule: rule,
3340
									  expected: expected,
3341
									callback: callback});
3342
				});
3343
				/**
3344
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=461462
3345
				 */
3346
				it("Test no-unused-params-existing-doc-1",function(callback) {
3347
					var rule = createTestRule('no-unused-params');
3348
					var expected = {value: "* @callback\n",
3349
									start: 25, 
3350
									end: 25};
3351
					return getFixes({buffer: 'var f = { /**\n *@see\n *\n */\none: function(p, p2, p3) {p(); p2();}};', 
3352
									  rule: rule,
3353
									  expected: expected,
3354
									callback: callback});
3355
				});
3356
				/**
3357
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3358
				 * @since 10.0
3359
				 */
3360
				it("Test no-unused-params-assignment-1",function(callback) {
3361
					var rule = createTestRule('no-unused-params');
3362
					var expected = {value: "* @callback\n",
3363
									start: 4, 
3364
									end: 4};
3365
					return getFixes({buffer: '/** */a.b.c = function(p1) {};', 
3366
									  rule: rule,
3367
									  expected: expected,
3368
									callback: callback});
3369
				});
3370
				/**
3371
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3372
				 * @since 10.0
3373
				 */
3374
				it("Test no-unused-params-assignment-2",function(callback) {
3375
					var rule = createTestRule('no-unused-params');
3376
					var expected = {value: "* @callback\n",
3377
									start: 4, 
3378
									end: 4};
3379
					return getFixes({buffer: '/** */f = function(p1) {};', 
3380
									  rule: rule,
3381
									  expected: expected,
3382
									callback: callback});
3383
				});
3384
				/**
3385
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3386
				 * @since 10.0
3387
				 */
3388
				it("Test no-unused-params-assignment-3",function(callback) {
3389
					var rule = createTestRule('no-unused-params');
3390
					var expected = {value: "* @callback\n",
3391
									start: 4, 
3392
									end: 4};
3393
					return getFixes({buffer: '/** */var f = function(p1) {};', 
3394
									  rule: rule,
3395
									  expected: expected,
3396
									callback: callback});
3397
				});
3398
				/**
3399
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3400
				 * @since 10.0
3401
				 */
3402
				it("Test no-unused-params-assignment-4",function(callback) {
3403
					var rule = createTestRule('no-unused-params');
3404
					var expected = {value: "* @callback\n",
3405
									start: 16, 
3406
									end: 16};
3407
					return getFixes({buffer: 'var f = 10, /** */g = function(p1) {};', 
3408
									  rule: rule,
3409
									  expected: expected,
3410
									callback: callback});
3411
				});
3412
				/**
3413
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3414
				 * @since 10.0
3415
				 */
3416
				it("Test no-unused-params-assignment-5",function(callback) {
3417
					var rule = createTestRule('no-unused-params');
3418
					var expected = {value: "/**\n * @callback\n */\n",
3419
									start: 0, 
3420
									end: 0};
3421
					return getFixes({buffer: 'a.b.c = function(p1) {};', 
3422
									  rule: rule,
3423
									  expected: expected,
3424
									callback: callback});
3425
				});
3426
				/**
3427
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3428
				 * @since 10.0
3429
				 */
3430
				it("Test no-unused-params-assignment-6",function(callback) {
3431
					var rule = createTestRule('no-unused-params');
3432
					var expected = {value: "/**\n * @callback\n */\n",
3433
									start: 0, 
3434
									end: 0};
3435
					return getFixes({buffer: 'f = function(p1) {};', 
3436
									  rule: rule,
3437
									  expected: expected,
3438
									callback: callback});
3439
				});
3440
				/**
3441
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3442
				 * @since 10.0
3443
				 */
3444
				it("Test no-unused-params-assignment-7",function(callback) {
3445
					var rule = createTestRule('no-unused-params');
3446
					var expected = {value: "/**\n * @callback\n */\n",
3447
									start: 0, 
3448
									end: 0};
3449
					return getFixes({buffer: 'var f = function(p1) {};', 
3450
									  rule: rule,
3451
									  expected: expected,
3452
									callback: callback});
3453
				});
3454
				/**
3455
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=473790
3456
				 * @since 10.0
3457
				 */
3458
				it("Test no-unused-params-assignment-8",function(callback) {
3459
					var rule = createTestRule('no-unused-params');
3460
					var expected = {value: "/**\n * @callback\n */\n",
3461
									start: 12, 
3462
									end: 12};
3463
					return getFixes({buffer: 'var f = 10, g = function(p1) {};', 
3464
									  rule: rule,
3465
									  expected: expected,
3466
									callback: callback});
3467
				});
3468
				/**
3469
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=467757
3470
				 */
3471
				it("Test no-unused-params-leading-line-comment-1",function(callback) {
3472
					var rule = createTestRule('no-unused-params');
3473
					var expected = {value: "/**\n  * @callback\n  */\n ",
3474
									start: 16, 
3475
									end: 16};
3476
					return getFixes({buffer: 'var f = {//foo\n one: function(p, p2, p3) {p(); p2();}};', 
3477
									  rule: rule,
3478
									  expected: expected,
3479
									callback: callback});
3480
				});
3481
				it("Test no-unused-params-html-1",function(callback) {
3482
					var rule = createTestRule('no-unused-params');
3483
					var expected = {value: "",
3484
									start: 31,
3485
									end: 32};
3486
					return getFixes({buffer: '<html><head><script>function f(p) {}</script></head></html>', 
3487
									  rule: rule,
3488
									  expected: expected,
3489
									callback: callback,
3490
									  contentType: 'text/html'});
3491
				});
3492
				it("Test no-unused-params-html-2",function(callback) {
3493
					var rule = createTestRule('no-unused-params');
3494
					var expected = {value: "",
3495
									start: 34,
3496
									end: 38};
3497
					return getFixes({buffer: '<html><head><script>function f(p, p2, p3) {p(); p3();}</script></head></html>', 
3498
									  rule: rule,
3499
									  expected: expected,
3500
									callback: callback,
3501
									  contentType: 'text/html'});
3502
				});
3503
				it("Test no-unused-params-html-3",function(callback) {
3504
					var rule = createTestRule('no-unused-params');
3505
					var expected = {value: "",
3506
									start:36,
3507
									end:40};
3508
					return getFixes({buffer: '<html><head><script>function f(p, p2, p3) {p(); p2();}</script></head></html>', 
3509
									  rule: rule,
3510
									  expected: expected,
3511
									callback: callback,
3512
									  contentType: 'text/html'});
3513
				});
3514
				it("Test no-unused-params-html-4",function(callback) {
3515
					var rule = createTestRule('no-unused-params');
3516
					var expected = {value: "/* @callback */",
3517
									start: 31, 
3518
									end: 31};
3519
					return getFixes({buffer: '<html><head><script>define([], function(p, p2, p3) {p(); p2();});</script></head></html>', 
3520
									  rule: rule,
3521
									  expected: expected,
3522
									callback: callback,
3523
									  contentType: 'text/html'});
3524
				});
3525
				it("Test no-unused-params-html-5",function(callback) {
3526
					var rule = createTestRule('no-unused-params');
3527
					var expected = {value: "/**\n * @callback\n */\n",
3528
									start: 30, 
3529
									end: 30};
3530
					return getFixes({buffer: '<html><head><script>var f = { one: function(p, p2, p3) {p(); p2();}};</script></head></html>', 
3531
									  rule: rule,
3532
									  expected: expected,
3533
									  callback: callback,
3534
									  contentType: 'text/html'});
3535
				});
3536
				/**
3537
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=461462
3538
				 */
3539
				it("Test no-unused-params-html-existing-doc-1",function(callback) {
3540
					var rule = createTestRule('no-unused-params');
3541
					var expected = {value: "* @callback",
3542
									start: 45, 
3543
									end: 45};
3544
					return getFixes({buffer: '<html><head><script>var f = { /**\n *@see\n *\n */\none: function(p, p2, p3) {p(); p2();}};</script></head></html>', 
3545
									  rule: rule,
3546
									  expected: expected,
3547
									callback: callback,
3548
									  contentType: 'text/html'});
3549
				});
3550
	
3551
				/**
3552
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=488790
3553
				 */
3554
				 it("Test no-unused-params-update-doc-1", function(callback){
3555
				 	var rule = createTestRule('no-unused-params');
3556
				 	var expected = [{value: '',
3557
									start: 18, 
3558
									end: 72},
3559
									{value:'',
3560
									start: 94,
3561
									end:98 }];
3562
				 	return getFixes({buffer: 'var temp = {\n\t/**\n\t * @param {String} file The file name that we parsed\n\t */\n\tparse: function(file) {\n\t\treturn null;\n\t}\n}',
3563
				 					rule: rule,
3564
				 					expected: expected,
3565
				 					callback: callback,
3566
				 					fixid: "no-unused-params"});
3567
				 });
3568
	
3569
				 it("Test no-unused-params-update-doc-2", function(callback){
3570
				 	var rule = createTestRule('no-unused-params');
3571
				 	var expected = [{value: '',
3572
									start: 12, 
3573
									end: 66},
3574
									{value:'',
3575
									start: 132,
3576
									end:138 }];
3577
				 	return getFixes({buffer: 'test({\n\t/**\n\t * @param {String} file The file name that we parsed\n\t * @param {String} text The text to return\n\t */\n\tparse: function(file, text) {\n\t\treturn text;\n\t}\n});',
3578
				 					rule: rule,
3579
				 					expected: expected,
3580
				 					callback: callback,
3581
				 					fixid: "no-unused-params"});
3582
				 });
3583
	
3584
				 it("Test no-unused-params-update-doc-3", function(callback){
3585
				 	var rule = createTestRule('no-unused-params');
3586
				 	var expected = [{value: '',
3587
									start: 57, 
3588
									end: 100},
3589
									{value:'',
3590
									start: 123,
3591
									end:129 }];
3592
				 	return getFixes({buffer: '/**\n * @param {String} file The file name that we parsed\n * @param {String} text The text to return\n */\nfunction parse(file, text) {\n\treturn file;\n}',
3593
				 					rule: rule,
3594
				 					expected: expected,
3595
				 					callback: callback,
3596
				 					fixid: "no-unused-params"});
3597
				 });
3598
	
3599
				 /**
3600
				 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=490109
3601
				 */
3602
				 it("Test no-unused-params-fix-all-1", function(callback){
3603
				 	var rule = createTestRule('no-unused-params');
3604
				 	var expected = [{
3605
				 		value: '',
3606
				 		start: 66,
3607
				 		end: 105
3608
				 	},{
3609
				 		value: '',
3610
				 		start: 142,
3611
				 		end: 152
3612
				 	}];
3613
				 	return getFixes({
3614
				 		buffer: '/*eslint-env node */\n/**\n * @name bar\n * @description description\n * @param p1\n * @param p2\n * @param p3\n * @returns returns\n */\nfunction bar(p1, p2, p3) {\n}',
3615
				 		rule: rule,
3616
				 		expected: expected,
3617
				 		callback: callback
3618
				 	});
3619
				 });
3620
	
3621
				 it("Test no-unused-params-fix-all-2", function(callback){
3622
				 	var rule = createTestRule('no-unused-params');
3623
				 	var expected = [{
3624
				 		value: '',
3625
				 		start: 14,
3626
				 		end: 22
3627
				 	},{
3628
				 		value: '',
3629
				 		start: 52,
3630
				 		end: 62
3631
				 	}];
3632
				 	return getFixes({
3633
				 		buffer: 'function bar2(p1, p2, p3){\n\tp3();\n}\nfunction bar3(p1,   p2, p3){\n\tp1();\n}',
3634
				 		rule: rule,
3635
				 		expected: expected,
3636
				 		callback: callback
3637
				 	});
3638
				 });
3639
	
3640
				 it("Test no-unused-params-fix-all-3", function(callback){
3641
				 	var rule = createTestRule('no-unused-params');
3642
				 	var expected = [{
3643
				 		value: '',
3644
				 		start: 14,
3645
				 		end: 24
3646
				 	},{
3647
				 		value: '',
3648
				 		start: 43,
3649
				 		end: 88
3650
				 	}];
3651
				 	return getFixes({
3652
				 		buffer: 'function bar2(p1, p2, p3){\n}\nfunction bar3(p1,   p2,                                  p3){\n}',
3653
				 		rule: rule,
3654
				 		expected: expected,
3655
				 		callback: callback
3656
				 	});
3657
				 });
3658
	
3659
				 it("Test no-unused-params-fix-all-4", function(callback){
3660
				 	var rule = createTestRule('no-unused-params');
3661
				 	var expected = [{
3662
				 		value: '',
3663
				 		start: 20,
3664
				 		end: 59
3665
				 	}];
3666
				 	return getFixes({
3667
				 		buffer: 'var bar = function (p1,                \np2,                p3) {\n\tp3();\n}',
3668
				 		rule: rule,
3669
				 		expected: expected,
3670
				 		callback: callback,
3671
				 		fixid: "no-unused-params"
3672
				 	});
3673
				 });
3674
	
3675
				 it("Test no-unused-params-fix-all-5", function(callback){
3676
				 	var rule = createTestRule('no-unused-params');
3677
				 	var expected = [{
3678
				 		value: '',
3679
				 		start: 45,
3680
				 		end: 97
3681
				 	},{
3682
				 		value: '',
3683
				 		start: 134,
3684
				 		end: 198
3685
				 	}];
3686
				 	return getFixes({
3687
				 		buffer: '/**\n * @name bar\n * @description description\n * @param p1\n * @param p2\n * @param p3\n * @param p4\n * @returns returns\n */\nfunction bar(p1,                               p2, \n p3,                   p4) {\n}',
3688
				 		rule: rule,
3689
				 		expected: expected,
3690
				 		callback: callback,
3691
				 		fixid: "no-unused-params"
3692
				 	});
3693
				 });
3694
	
3695
				 it("Test no-unused-params-fix-all-6", function(callback){
3696
				 	var rule = createTestRule('no-unused-params');
3697
				 	var expected = [{
3698
				 		value: '',
3699
				 		start: 58,
3700
				 		end: 97
3701
				 	},{
3702
				 		value: '',
3703
				 		start: 136,
3704
				 		end: 198
3705
				 	}];
3706
				 	return getFixes({
3707
				 		buffer: '/**\n * @name bar\n * @description description\n * @param p1\n * @param p2\n * @param p3\n * @param p4\n * @returns returns\n */\nfunction bar(p1,                               p2, \n p3,                   p4) {\n \tp1();\n}',
3708
				 		rule: rule,
3709
				 		expected: expected,
3710
				 		callback: callback,
3711
				 		fixid: "no-unused-params"
3712
				 	});
3713
				 });
3714
			});
3715
			//EQEQEQ
3716
			describe('eqeqeq', function(){
3717
				it("Test eqeqeq-1",function(callback) {
3718
					var rule = createTestRule('eqeqeq');
3719
					var expected = {value: "===",
3720
									start: 5, 
3721
									end: 7};
3722
					return getFixes({buffer: 'if(1 == 3) {}', 
3723
									  rule: rule,
3724
									  expected: expected,
3725
									callback: callback});
3726
				});
3727
				it("Test eqeqeq-2",function(callback) {
3728
					var rule = createTestRule('eqeqeq');
3729
					var expected = {value: "===",
3730
									start: 12, 
3731
									end: 14};
3732
					return getFixes({buffer: 'if(typeof f == "undefined") {}', 
3733
									  rule: rule,
3734
									  expected: expected,
3735
									callback: callback});
3736
				});
3737
				it("Test eqeqeq-3",function(callback) {
3738
					var rule = createTestRule('eqeqeq');
3739
					var expected = {value: "!==",
3740
									start: 5, 
3741
									end: 7};
3742
					return getFixes({buffer: 'if(1 != 3) {}', 
3743
									  rule: rule,
3744
									  expected: expected,
3745
									callback: callback});
3746
				});
3747
				it("Test eqeqeq-4",function(callback) {
3748
					var rule = createTestRule('eqeqeq');
3749
					var expected = {value: "!==",
3750
									start: 12, 
3751
									end: 14};
3752
					return getFixes({buffer: 'if(typeof f != "undefined") {}', 
3753
									  rule: rule,
3754
									  expected: expected,
3755
									callback: callback});
3756
				});
3757
				it("Test eqeqeq-html-1",function(callback) {
3758
					var rule = createTestRule('eqeqeq');
3759
					var expected = {value: "===",
3760
									start: 25, 
3761
									end: 27};
3762
					return getFixes({buffer: '<html><head><script>if(1 == 3) {}</script></head></html>', 
3763
									  rule: rule,
3764
									  expected: expected,
3765
									callback: callback,
3766
									  contentType: 'text/html'});
3767
				});
3768
				it("Test eqeqeq-html-2",function(callback) {
3769
					var rule = createTestRule('eqeqeq');
3770
					var expected = {value: "===",
3771
									start: 32, 
3772
									end: 34};
3773
					return getFixes({buffer: '<html><head><script>if(typeof f == "undefined") {}</script></head></html>', 
3774
									  rule: rule,
3775
									  expected: expected,
3776
									  callback: callback,
3777
									  contentType: 'text/html'});
3778
				});
3779
				it("Test eqeqeq-html-3",function(callback) {
3780
					var rule = createTestRule('eqeqeq');
3781
					var expected = {value: "!==",
3782
									start: 25, 
3783
									end: 27};
3784
					return getFixes({buffer: '<html><head><script>if(1 != 3) {}</script></head></html>', 
3785
									  rule: rule,
3786
									  expected: expected,
3787
									  callback: callback,
3788
									  contentType: 'text/html'});
3789
				});
3790
				it("Test eqeqeq-html-4",function(callback) {
3791
					var rule = createTestRule('eqeqeq');
3792
					var expected = {value: "!==",
3793
									start: 32, 
3794
									end: 34};
3795
					return getFixes({buffer: '<html><head><script>if(typeof f != "undefined") {}</script></head></html>', 
3796
									  rule: rule,
3797
									  expected: expected,
3798
									callback: callback,
3799
									  contentType: 'text/html'});
3800
				});
3801
				it("Test eqeqeq-html-5",function(callback) {
3802
					var rule = createTestRule('eqeqeq');
3803
					var expected = {value: "!==",
3804
									start: 49, 
3805
									end: 51};
3806
					return getFixes({buffer: '<html><head><script></script><script>if(typeof f != "undefined") {}</script></head></html>', 
3807
									  rule: rule,
3808
									  expected: expected,
3809
									  callback: callback,
3810
									  contentType: 'text/html'});
3811
				});
3812
				it("Test eqeqeq fix all 1",function(callback) {
3813
					var rule = createTestRule('eqeqeq');
3814
					var expected = [{value: "===",
3815
									start: 5, 
3816
									end: 7},
3817
									{value: "===",
3818
									start: 20,
3819
									end: 22}
3820
									];
3821
					return getFixes({buffer: 'if(1 == 3) {} if (1 == 4) {}', 
3822
									  rule: rule,
3823
									  expected: expected,
3824
									callback: callback});
3825
				});
3826
				it("Test eqeqeq fix all 2",function(callback) {
3827
					var rule = createTestRule('eqeqeq');
3828
					var expected = [{value: "!==",
3829
									start: 5, 
3830
									end: 7},
3831
									{value: "!==",
3832
									start: 20,
3833
									end: 22}
3834
									];
3835
					return getFixes({buffer: 'if(1 != 3) {} if (1 != 4) {}', 
3836
									  rule: rule,
3837
									  expected: expected,
3838
									callback: callback});
3839
				});
3840
				it("Test eqeqeq fix all 3",function(callback) {
3841
					var rule = createTestRule('eqeqeq');
3842
					var expected = [{value: "===",
3843
									start: 5, 
3844
									end: 7},
3845
									{value: "!==",
3846
									start: 20,
3847
									end: 22}
3848
									];
3849
					return getFixes({buffer: 'if(1 == 3) {} if (1 != 4) {}', 
3850
									  rule: rule,
3851
									  expected: expected,
3852
									callback: callback});
4509
				});
3853
				});
4510
			});
3854
			});
4511
		});
3855
			describe("no-unreachable", function() {
4512
		//UNNECESSARY-NLS
3856
			//NO-UNREACHABLE
4513
		describe('unnecessary-nls', function(){
3857
				it("Test no-unreachable-1",function(callback) {
4514
			it("Test unnecessary-nls-1", function(callback) {
3858
					var rule = createTestRule('no-unreachable');
4515
				var rule = createTestRule('unnecessary-nls');
3859
					var expected = {value: "",
4516
				var expected = {value: "",
3860
									start: 30, 
4517
								start: 10, 
3861
									end: 36};
4518
								end: 24};
3862
					return getFixes({buffer: 'function foo(){var f;return 1;f = 9;}', 
4519
				return getFixes({buffer: 'var a = 1; //$NON-NLS-0$', 
3863
									  rule: rule,
4520
								  rule: rule,
3864
									  expected: expected,
4521
								  expected: expected,
3865
									  callback: callback});
4522
								  callback: callback,
3866
				});
4523
								  pid: 'unnecessary-nls'});
3867
				it("Test no-unreachable-2",function(callback) {
4524
			});
3868
					var rule = createTestRule('no-unreachable');
4525
			it("Test unnecessary-nls-2", function(callback) {
3869
					var expected = {value: "",
4526
				var rule = createTestRule('unnecessary-nls');
3870
									start: 32, 
4527
				var expected = {value: "",
3871
									end: 39};
4528
								start: 10, 
3872
					return getFixes({buffer: 'switch(num) { case 1: {throw e; f = 10;}}', 
4529
								end: 24};
3873
									  rule: rule,
4530
				return getFixes({buffer: 'var a = 1; //$NON-NLS-1$', 
3874
									  expected: expected,
4531
								  rule: rule,
3875
									  callback: callback});
4532
								  expected: expected,
3876
				});
4533
								  callback: callback,
3877
				it("Test no-unreachable-html-1",function(callback) {
4534
								  pid: 'unnecessary-nls'});
3878
					var rule = createTestRule('no-unreachable');
4535
			});
3879
					var expected = {value: "",
4536
			it("Test unnecessary-nls-3", function(callback) {
3880
									start: 43, 
4537
				var rule = createTestRule('unnecessary-nls');
3881
									end: 51};
4538
				var expected = {value: "",
3882
					return getFixes({buffer: '<html><head><script>function f(p) {return; foo = 9;}</script></head></html>', 
4539
								start: 10, 
3883
									  rule: rule,
4540
								end: 24};
3884
									  expected: expected,
4541
				return getFixes({buffer: 'var a = 1; //$NON-NLS-2$', 
3885
									callback: callback,
4542
								  rule: rule,
3886
									  contentType: 'text/html'});
4543
								  expected: expected,
3887
				});
4544
								  callback: callback,
3888
				it("Test no-unreachable-html-2",function(callback) {
4545
								  pid: 'unnecessary-nls'});
3889
					var rule = createTestRule('no-unreachable');
4546
			});
3890
					var expected = {value: "",
4547
			it("Test unnecessary-nls-4", function(callback) {
3891
									start: 52, 
4548
				var rule = createTestRule('unnecessary-nls');
3892
									end: 59};
4549
				var expected = {value: "",
3893
					return getFixes({buffer: '<html><head><script>switch(num) { case 1: {throw e; f = 10;}}</script></head></html>', 
4550
								start: 13, 
3894
									  rule: rule,
4551
								end: 24};
3895
									  expected: expected,
4552
				return getFixes({buffer: 'var a = 1; //$NON-NLS-1$ foo', 
3896
									callback: callback,
4553
								  rule: rule,
3897
									  contentType: 'text/html'});
4554
								  expected: expected,
4555
								  callback: callback,
4556
								  pid: 'unnecessary-nls'});
4557
			});
4558
			it("Test unnecessary-nls-5", function(callback) {
4559
				var rule = createTestRule('unnecessary-nls');
4560
				var expected = {value: "",
4561
								start: 26, 
4562
								end: 40};
4563
				return getFixes({buffer: 'var a = "a"; //$NON-NLS-1$ //$NON-NLS-2$', 
4564
								  rule: rule,
4565
								  expected: expected,
4566
								  callback: callback,
4567
								  pid: 'unnecessary-nls'});
4568
			});
4569
			it("Test unnecessary-nls-6", function(callback) {
4570
				var rule = createTestRule('unnecessary-nls');
4571
				var expected = {value: "",
4572
								start: 12, 
4573
								end: 26};
4574
				return getFixes({buffer: 'var a = "a"; //$NON-NLS-2$ //$NON-NLS-1$', 
4575
								  rule: rule,
4576
								  expected: expected,
4577
								  callback: callback,
4578
								  pid: 'unnecessary-nls'});
4579
			});
4580
			it("Test unnecessary-nls fix all 1", function(callback) {
4581
				var rule = createTestRule('unnecessary-nls');
4582
				var expected = [
4583
								{value: "",
4584
								start: 10, 
4585
								end: 24},
4586
								{value: "",
4587
								start: 35, 
4588
								end: 49},
4589
								];
4590
4591
				return getFixes({buffer: 'var a = 1; //$NON-NLS-0$\nvar b = 1; //$NON-NLS-0$', 
4592
								  rule: rule,
4593
								  expected: expected,
4594
								  callback: callback,
4595
								  pid: 'unnecessary-nls'});
4596
			});
4597
			it("Test unnecessary-nls fix all 2", function(callback) {
4598
				var rule = createTestRule('unnecessary-nls');
4599
				var expected = [
4600
								{value: "",
4601
								start: 10, 
4602
								end: 38}
4603
								];
4604
4605
				return getFixes({buffer: 'var a = 1; //$NON-NLS-0$ //$NON-NLS-1$', 
4606
								  rule: rule,
4607
								  expected: expected,
4608
								  callback: callback,
4609
								  pid: 'unnecessary-nls'});
4610
			});
4611
			it("Test unnecessary-nls fix all 3", function(callback) {
4612
				var rule = createTestRule('unnecessary-nls');
4613
				var expected = [
4614
								{value: "",
4615
								start: 12, 
4616
								end: 26},
4617
								{value: "",
4618
								start: 40, 
4619
								end: 54},
4620
								];
4621
4622
				return getFixes({buffer: 'var a = "a"; //$NON-NLS-2$ //$NON-NLS-1$ //$NON-NLS-9$', 
4623
								  rule: rule,
4624
								  expected: expected,
4625
								  callback: callback,
4626
								  pid: 'unnecessary-nls'});
4627
			});
4628
			it("Test unnecessary-nls fix all 4 - careful whitespace removal", function(callback) {
4629
				var rule = createTestRule('unnecessary-nls');
4630
				var expected = [
4631
								{value: "",
4632
								start: 11, 
4633
								end: 40}
4634
								];
4635
4636
				return getFixes({buffer: 'var v = 10; //$NON-NLS-1$  //$NON-NLS-2$\nvar v2;', 
4637
								  rule: rule,
4638
								  expected: expected,
4639
								  callback: callback,
4640
								  pid: 'unnecessary-nls'});
4641
			});
4642
			it("Test unnecessary-nls fix all 5 - careful whitespace removal", function(callback) {
4643
				var rule = createTestRule('unnecessary-nls');
4644
				var expected = [
4645
								{value: "",
4646
								start: 11, 
4647
								end: 40}
4648
								];
4649
4650
				return getFixes({buffer: 'var v = 10; //$NON-NLS-1$  //$NON-NLS-2$     \nvar v2;', 
4651
								  rule: rule,
4652
								  expected: expected,
4653
								  callback: callback,
4654
								  pid: 'unnecessary-nls'});
4655
			});
4656
		});
4657
		//USE-ISNAN
4658
		describe("use-isnan", function() {
4659
			it("Test use-isnan multi fix 1", function(done) {
4660
				var rule = createTestRule("use-isnan");
4661
				var expected = [
4662
					{value: "isNaN(foo)", start: 3,	end: 14},
4663
					{value: "isNaN(bar)", start: 21,	end: 32}
4664
				];
4665
				return getFixes({
4666
					buffer: "if(foo === NaN){} if(NaN === bar){}",
4667
					rule: rule,
4668
					expected: expected,
4669
					callback: done
4670
				});
3898
				});
4671
			});
3899
			});
4672
			it("Test use-isnan multi fix 2", function(done) {
3900
			//NO-SPARSE-ARRAYS
4673
				var rule = createTestRule("use-isnan");
3901
			describe("no-sparse-arrays", function() {
4674
				var expected = [
3902
				it("Test no-sparse-arrays-1",function(callback) {
4675
					{value: "isNaN(foo)", start: 3,	end: 14},
3903
					var rule = createTestRule('no-sparse-arrays');
4676
					{value: "isNaN(bar)", start: 18,	end: 29}
3904
					var expected = {value: "[1, 2]",
4677
				];
3905
									start: 8, 
4678
				return getFixes({
3906
									end: 16};
4679
					buffer: "if(foo === NaN || NaN === bar){}",
3907
					return getFixes({buffer: 'var a = [1, , 2]', 
4680
					rule: rule,
3908
									  rule: rule,
4681
					expected: expected,
3909
									  expected: expected,
4682
					callback: done
3910
									callback: callback});
3911
				});
3912
				it("Test no-sparse-arrays-2",function(callback) {
3913
					var rule = createTestRule('no-sparse-arrays');
3914
					var expected = {value: "[1, 2]",
3915
									start: 8, 
3916
									end: 20};
3917
					return getFixes({buffer: 'var a = [1, , 2, , ]', 
3918
									  rule: rule,
3919
									  expected: expected,
3920
									callback: callback});
3921
				});
3922
				it("Test no-sparse-arrays-3",function(callback) {
3923
					var rule = createTestRule('no-sparse-arrays');
3924
					var expected = {value: "[1, 2]",
3925
									start: 8, 
3926
									end: 24};
3927
					return getFixes({buffer: 'var a = [, , 1, , 2, , ]', 
3928
									  rule: rule,
3929
									  expected: expected,
3930
									callback: callback});
3931
				});
3932
				it("Test no-sparse-arrays-4",function(callback) {
3933
					var rule = createTestRule('no-sparse-arrays');
3934
					var expected = {value: "[1, 2]",
3935
									start: 8, 
3936
									end: 27};
3937
					return getFixes({buffer: 'var a = [, , \n1, \n, 2, \n, ]', 
3938
									  rule: rule,
3939
									  expected: expected,
3940
									callback: callback});
3941
				});
3942
				it("Test no-sparse-arrays-5",function(callback) {
3943
					var rule = createTestRule('no-sparse-arrays');
3944
					var expected = {value: "[1, 2, 3]",
3945
									start: 8, 
3946
									end: 28};
3947
					return getFixes({buffer: 'var a = [, , \n1, \n, 2, \n, 3]', 
3948
									  rule: rule,
3949
									  expected: expected,
3950
									callback: callback});
3951
				});
3952
				it("Test no-sparse-arrays-6",function(callback) {
3953
					var rule = createTestRule('no-sparse-arrays');
3954
					var expected = {value: "[1, 2, 3]",
3955
									start: 8, 
3956
									end: 41};
3957
					return getFixes({buffer: 'var a = [, ,,,, \n1, \n, , ,, ,\n,, 2, \n, 3]', 
3958
									  rule: rule,
3959
									  expected: expected,
3960
									callback: callback});
3961
				});
3962
				it("Test no-sparse-arrays-7",function(callback) {
3963
					var rule = createTestRule('no-sparse-arrays');
3964
					var expected = {value: "[1, 2]",
3965
									start: 8, 
3966
									end: 20};
3967
					return getFixes({buffer: 'var a = [1, , 2, , ];', 
3968
									  rule: rule,
3969
									  expected: expected,
3970
									  callback: callback});
3971
				});
3972
				it("Test no-sparse-arrays-8",function(callback) {
3973
					var rule = createTestRule('no-sparse-arrays');
3974
					var expected = {value: "[1, 2]",
3975
									start: 8, 
3976
									end: 27};
3977
					return getFixes({buffer: 'var a = [, , \n1, \n, 2, \n, ];', 
3978
									  rule: rule,
3979
									  expected: expected,
3980
									  callback: callback});
3981
				});
3982
				/**
3983
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=461449
3984
				 */
3985
				it("Test no-sparse-arrays-no-spacing-1",function(callback) {
3986
					var rule = createTestRule('no-sparse-arrays');
3987
					var expected = {value: "[1, 2]",
3988
									start: 8, 
3989
									end: 22};
3990
					return getFixes({buffer: 'var a = [,,\n1,\n,2,\n,,]', 
3991
									  rule: rule,
3992
									  expected: expected,
3993
									  callback: callback});
3994
				});
3995
				/**
3996
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=461449
3997
				 */
3998
				it("Test no-sparse-arrays-no-spacing-2",function(callback) {
3999
					var rule = createTestRule('no-sparse-arrays');
4000
					var expected = {value: "[1, 2]",
4001
									start: 0, 
4002
									end: 14};
4003
					return getFixes({buffer: '[,,\n1,\n,2,\n,,]', 
4004
									  rule: rule,
4005
									  expected: expected,
4006
									  callback: callback,
4007
									  pid: 'no-sparse-arrays'});
4008
				});
4009
				/**
4010
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=461449
4011
				 */
4012
				it("Test no-sparse-arrays-no-spacing-3",function(callback) {
4013
					var rule = createTestRule('no-sparse-arrays');
4014
					var expected = {value: "[1, 2]",
4015
									start: 8, 
4016
									end: 22};
4017
					return getFixes({buffer: 'var a = [,,\n1,\n,2,\n,,];', 
4018
									  rule: rule,
4019
									  expected: expected,
4020
									callback: callback});
4021
				});
4022
				/**
4023
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=461449
4024
				 */
4025
				it("Test no-sparse-arrays-no-spacing-4",function(callback) {
4026
					var rule = createTestRule('no-sparse-arrays');
4027
					var expected = {value: "[1, 2]",
4028
									start: 8, 
4029
									end: 22};
4030
					return getFixes({buffer: 'var a = [,,\n1,\n,2,\n,,]\nvar foo = "bar";', 
4031
									  rule: rule,
4032
									  expected: expected,
4033
									callback: callback});
4034
				});
4035
				it("Test no-sparse-arrays-html-1",function(callback) {
4036
					var rule = createTestRule('no-sparse-arrays');
4037
					var expected = {value: "[1, 2]",
4038
									start: 28, 
4039
									end: 36};
4040
					return getFixes({buffer: '<html><head><script>var a = [1, , 2]</script></head></html>', 
4041
									  rule: rule,
4042
									  expected: expected,
4043
									callback: callback,
4044
									  contentType: 'text/html'});
4045
				});
4046
				it("Test no-sparse-arrays-html-2",function(callback) {
4047
					var rule = createTestRule('no-sparse-arrays');
4048
					var expected = {value: "[1, 2]",
4049
									start: 28, 
4050
									end: 40};
4051
					return getFixes({buffer: '<html><head><script>var a = [1, , 2, , ]</script></head></html>', 
4052
									  rule: rule,
4053
									  expected: expected,
4054
									callback: callback,
4055
									  contentType: 'text/html'});
4056
				});
4057
				it("Test no-sparse-arrays-html-3",function(callback) {
4058
					var rule = createTestRule('no-sparse-arrays');
4059
					var expected = {value: "[1, 2]",
4060
									start: 28, 
4061
									end: 44};
4062
					return getFixes({buffer: '<html><head><script>var a = [, , 1, , 2, , ]</script></head></html>', 
4063
									  rule: rule,
4064
									  expected: expected,
4065
									callback: callback,
4066
									  contentType: 'text/html'});
4067
				});
4068
				it("Test no-sparse-arrays-html-4",function(callback) {
4069
					var rule = createTestRule('no-sparse-arrays');
4070
					var expected = {value: "[1, 2]",
4071
									start: 28, 
4072
									end: 46};
4073
					return getFixes({buffer: '<html><head><script>var a = [, , 1, \n, 2, \n, ]</script></head></html>', 
4074
									  rule: rule,
4075
									  expected: expected,
4076
									callback: callback,
4077
									  contentType: 'text/html'});
4078
				});
4079
				it("Test no-sparse-arrays-html-5",function(callback) {
4080
					var rule = createTestRule('no-sparse-arrays');
4081
					var expected = {value: "[1, 2, 3]",
4082
									start: 28, 
4083
									end: 48};
4084
					return getFixes({buffer: '<html><head><script>var a = [, , \n1, \n, 2, \n, 3]</script></head></html>', 
4085
									  rule: rule,
4086
									  expected: expected,
4087
									callback: callback,
4088
									  contentType: 'text/html'});
4089
				});
4090
				it("Test no-sparse-arrays-html-6",function(callback) {
4091
					var rule = createTestRule('no-sparse-arrays');
4092
					var expected = {value: "[1, 2, 3]",
4093
									start: 28, 
4094
									end: 61};
4095
					return getFixes({buffer: '<html><head><script>var a = [, ,,,, \n1, \n, , ,, ,\n,, 2, \n, 3]</script></head></html>', 
4096
									  rule: rule,
4097
									  expected: expected,
4098
									callback: callback,
4099
									  contentType: 'text/html'});
4100
				});
4101
				it("Test no-sparse-arrays-html-7",function(callback) {
4102
					var rule = createTestRule('no-sparse-arrays');
4103
					var expected = {value: "[1, 2]",
4104
									start: 28, 
4105
									end: 40};
4106
					return getFixes({buffer: '<html><head><script>var a = [1, , 2, , ];</script></head></html>', 
4107
									  rule: rule,
4108
									  expected: expected,
4109
									callback: callback,
4110
									  contentType: 'text/html'});
4111
				});
4112
				it("Test no-sparse-arrays-html-8",function(callback) {
4113
					var rule = createTestRule('no-sparse-arrays');
4114
					var expected = {value: "[1, 2]",
4115
									start: 28, 
4116
									end: 47};
4117
					return getFixes({buffer: '<html><head><script>var a = [, , \n1, \n, 2, \n, ];</script></head></html>', 
4118
									  rule: rule,
4119
									  expected: expected,
4120
									callback: callback,
4121
									  contentType: 'text/html'});
4122
				});
4123
	
4124
				/**
4125
				 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=489146
4126
				 */
4127
				it("Test no-sparse-arrays-empty-array-1",function(callback) {
4128
					var rule = createTestRule('no-sparse-arrays');
4129
					var expected = {value: "",
4130
									start: 9, 
4131
									end: 24};
4132
					return getFixes({buffer: 'var a = [, , \n, \n, , \n, ];', 
4133
									  rule: rule,
4134
									  expected: expected,
4135
									  callback: callback});
4136
				});
4137
	
4138
				it("Test no-sparse-arrays-empty-array-2",function(callback) {
4139
					var rule = createTestRule('no-sparse-arrays');
4140
					var expected = {value: "",
4141
									start: 9, 
4142
									end: 13};
4143
					return getFixes({buffer: 'var a = [, , ]', 
4144
									  rule: rule,
4145
									  expected: expected,
4146
									callback: callback});
4147
				});
4148
				it("Test no-sparse-arrays-empty-array-3",function(callback) {
4149
					var rule = createTestRule('no-sparse-arrays');
4150
					var expected = {value: "",
4151
									start: 10, 
4152
									end: 22};
4153
					return getFixes({buffer: 'var a = \n[, , , , , , ]', 
4154
									  rule: rule,
4155
									  expected: expected,
4156
									callback: callback});
4157
				});
4158
				it("Test no-sparse-arrays-empty-array-4",function(callback) {
4159
					var rule = createTestRule('no-sparse-arrays');
4160
					var expected = {value: "",
4161
									start: 9, 
4162
									end: 24};
4163
					return getFixes({buffer: 'var a = [, , \n, \n, , \n, ]\n;', 
4164
									  rule: rule,
4165
									  expected: expected,
4166
									callback: callback});
4683
				});
4167
				});
4684
			});
4168
			});
4685
			it("Test use-isnan-1",function(callback) {
4169
			//SEMI
4686
				var rule = createTestRule('use-isnan');
4170
			describe("semi", function(){
4687
				var expected = {value: "isNaN(foo)",
4171
				it("Test semi-1",function(callback) {
4688
								start: 3, 
4172
					var rule = createTestRule('semi');
4689
								end: 14};
4173
					var expected = {value: ";",
4690
				return getFixes({buffer: 'if(foo === NaN){}', 
4174
									start: 14, 
4691
								  rule: rule,
4175
									end: 14};
4692
								  expected: expected,
4176
					return getFixes({buffer: 'var a = [1, 2]', 
4693
								  callback: callback,
4177
									  rule: rule,
4694
								  pid: 'use-isnan'});
4178
									  expected: expected,
4695
			});
4179
									callback: callback});
4696
			it("Test use-isnan-2",function(callback) {
4180
				});
4697
				var rule = createTestRule('use-isnan');
4181
				it("Test semi-2",function(callback) {
4698
				var expected = {value: "isNaN(foo)",
4182
					var rule = createTestRule('semi');
4699
								start: 3, 
4183
					var expected = {value: ";",
4700
								end: 14};
4184
									start: 5, 
4701
				return getFixes({buffer: 'if(NaN === foo){}', 
4185
									end: 5};
4702
								  rule: rule,
4186
					return getFixes({buffer: 'foo()', 
4703
								  expected: expected,
4187
									  rule: rule,
4704
								  callback: callback,
4188
									  expected: expected,
4705
								  pid: 'use-isnan'});
4189
									callback: callback});
4706
			});
4190
				});
4707
			it("Test use-isnan-3",function(callback) {
4191
				it("Test semi-3",function(callback) {
4708
				var rule = createTestRule('use-isnan');
4192
					var rule = createTestRule('semi');
4709
				var expected = {value: "isNaN(foo+23)",
4193
					var expected = {value: ";",
4710
								start: 3, 
4194
									start: 10, 
4711
								end: 19};
4195
									end: 10};
4712
				return getFixes({buffer: 'if((foo+23) === NaN){}', 
4196
					return getFixes({buffer: 'var a = {}', 
4713
								  rule: rule,
4197
									  rule: rule,
4714
								  expected: expected,
4198
									  expected: expected,
4715
								  callback: callback,
4199
									callback: callback});
4716
								  pid: 'use-isnan'});
4200
				});
4717
			});
4201
				it("Test semi-html-1",function(callback) {
4718
			it("Test use-isnan-4",function(callback) {
4202
					var rule = createTestRule('semi');
4719
				var rule = createTestRule('use-isnan');
4203
					var expected = {value: ";",
4720
				var expected = {value: "isNaN(foo+23)",
4204
									start: 34, 
4721
								start: 3, 
4205
									end: 34};
4722
								end: 19};
4206
					return getFixes({buffer: '<html><head><script>var a = [1, 2]</script></head></html>', 
4723
				return getFixes({buffer: 'if(NaN === (foo+23)){}', 
4207
									  rule: rule,
4724
								  rule: rule,
4208
									  expected: expected,
4725
								  expected: expected,
4209
									callback: callback,
4726
								  callback: callback,
4210
									  contentType: 'text/html'});
4727
								  pid: 'use-isnan'});
4211
				});
4728
			});
4212
				it("Test semi-html-2",function(callback) {
4729
			it("Test use-isnan-5",function(callback) {
4213
					var rule = createTestRule('semi');
4730
				var rule = createTestRule('use-isnan');
4214
					var expected = {value: ";",
4731
				var expected = {value: "isNaN(45 === (foo+23))",
4215
									start: 25, 
4732
								start: 3, 
4216
									end: 25};
4733
								end: 28};
4217
					return getFixes({buffer: '<html><head><script>foo()</script></head></html>', 
4734
				return getFixes({buffer: 'if(NaN === (45 === (foo+23))){}', 
4218
									  rule: rule,
4735
								  rule: rule,
4219
									  expected: expected,
4736
								  expected: expected,
4220
									callback: callback,
4737
								  callback: callback,
4221
									  contentType: 'text/html'});
4738
								  pid: 'use-isnan'});
4222
				});
4739
			});
4223
				it("Test semi-html-3",function(callback) {
4740
		});
4224
					var rule = createTestRule('semi');
4741
		//NO-DUPLICATE-CASE
4225
					var expected = {value: ";",
4742
		describe("no-duplicate-case", function() {
4226
									start: 30, 
4743
			it("no-duplicate-case - rename 1", function(done) {
4227
									end: 30};
4744
				var rule = createTestRule("no-duplicate-case");
4228
					return getFixes({buffer: '<html><head><script>var a = {}</script></head></html>', 
4745
				var expected = {
4229
									  rule: rule,
4746
					groups: [
4230
									  expected: expected,
4747
						{data: {}, positions: [{offset: 66, length: 1}]}
4231
									callback: callback,
4748
					]
4232
									  contentType: 'text/html'});
4749
				};
4233
				});
4750
				return getFixes({
4234
				it("Test semi fix all 1",function(callback) {
4751
					buffer: "var a = 1;\n" +
4235
					var rule = createTestRule('semi');
4752
							"switch (a) {\n" +
4236
					var expected = [
4753
							"	case 1:\n" +
4237
									{value: ";",
4754
							"		break;\n" +
4238
									start: 14, 
4755
							"	case 2:\n" +
4239
									end: 14},
4756
							"		break;\n" +
4240
									{value: ";",
4757
							"	case 1:\n" +
4241
									start: 29, 
4758
							"		break;\n" +
4242
									end: 29}
4759
							"	default:\n" +
4243
									];
4760
							"		break;\n" +
4244
					return getFixes({buffer: 'var a = [1, 2]\nvar b = [1, 2]', 
4761
							"}",
4245
									  rule: rule,
4762
					rule: rule,
4246
									  expected: expected,
4763
					expected: expected,
4247
									callback: callback});
4764
					callback: done
4248
				});
4249
				it("Test semi fix all 2",function(callback) {
4250
					var rule = createTestRule('semi');
4251
					var expected = [
4252
									{value: ";",
4253
									start: 5, 
4254
									end: 5},
4255
									{value: ";",
4256
									start: 11, 
4257
									end: 11}
4258
									];
4259
					return getFixes({buffer: 'foo()\nfoo()', 
4260
									  rule: rule,
4261
									  expected: expected,
4262
									callback: callback});
4263
				});
4264
				it("Test semi fix all 3",function(callback) {
4265
					var rule = createTestRule('semi');
4266
					var expected = [
4267
									{value: ";",
4268
									start: 10, 
4269
									end: 10},
4270
									{value: ";",
4271
									start: 21, 
4272
									end: 21}
4273
									];
4274
					return getFixes({buffer: 'var a = {}\nvar a = {}', 
4275
									  rule: rule,
4276
									  expected: expected,
4277
									callback: callback});
4278
				});
4279
				it("Test semi fix all 3",function(callback) {
4280
					var rule = createTestRule('semi');
4281
					var expected = [
4282
									{value: ";",
4283
									start: 14, 
4284
									end: 14},
4285
									{value: ";",
4286
									start: 20, 
4287
									end: 20},
4288
									{value: ";",
4289
									start: 31, 
4290
									end: 31}
4291
									];
4292
					return getFixes({buffer: 'var a = [1, 2]\nfoo()\nvar a = {}', 
4293
									  rule: rule,
4294
									  expected: expected,
4295
									callback: callback});
4765
				});
4296
				});
4766
			});
4297
			});
4767
		});
4298
			//NO-UNUSED-VARS-UNUSED
4299
			describe("no-unused-vars-unused", function() {
4300
				it("Test no-unused-vars-unused-1",function(callback) {
4301
					var rule = createTestRule('no-unused-vars');
4302
					var expected = {value: "",
4303
									start: 0, 
4304
									end: 6};
4305
					return getFixes({buffer: 'var a;', 
4306
									  rule: rule,
4307
									  expected: expected,
4308
									  callback: callback,
4309
									  pid: 'no-unused-vars-unused'});
4310
				});
4311
				it("Test no-unused-vars-unused-2",function(callback) {
4312
					var rule = createTestRule('no-unused-vars');
4313
					var expected = {value: "",
4314
									start: 10, 
4315
									end: 13};
4316
					return getFixes({buffer: 'var a = 10, b;', 
4317
									  rule: rule,
4318
									  expected: expected,
4319
									  callback: callback,
4320
									  pid: 'no-unused-vars-unused'});
4321
				});
4322
				it("Test no-unused-vars-unused-3",function(callback) {
4323
					var rule = createTestRule('no-unused-vars');
4324
					var expected = {value: "",
4325
									start: 12, 
4326
									end: 15};
4327
					return getFixes({buffer: 'var a = 10, b, c = 1;', 
4328
									  rule: rule,
4329
									  expected: expected,
4330
									  callback: callback,
4331
									  pid: 'no-unused-vars-unused'});
4332
				});
4333
				it("Test no-unused-vars-unused-funcdecl-1",function(callback) {
4334
					var rule = createTestRule('no-unused-vars');
4335
					var expected = {value: "",
4336
									start: 0, 
4337
									end: 15};
4338
					return getFixes({buffer: 'function f() {}', 
4339
									  rule: rule,
4340
									  expected: expected,
4341
									  callback: callback,
4342
									  pid: 'no-unused-vars-unused-funcdecl'});
4343
				});
4344
				it("Test no-unused-vars-unused-funcdecl-2",function(callback) {
4345
					var rule = createTestRule('no-unused-vars');
4346
					var expected = {value: "",
4347
									start: 26, 
4348
									end: 41};
4349
					return getFixes({buffer: 'var a = {one: function() {function f() {}}}', 
4350
									  rule: rule,
4351
									  expected: expected,
4352
									  callback: callback,
4353
									  pid: 'no-unused-vars-unused-funcdecl'});
4354
				});
4355
				it("Test no-unused-vars-unused-html-1",function(callback) {
4356
					var rule = createTestRule('no-unused-vars');
4357
					var expected = {value: "",
4358
									start: 20, 
4359
									end: 26};
4360
					return getFixes({buffer: '<html><head><script>var a;</script></head></html>', 
4361
									  rule: rule,
4362
									  expected: expected,
4363
									callback: callback,
4364
									  pid: 'no-unused-vars-unused',
4365
									  contentType: 'text/html'});
4366
				});
4367
				it("Test no-unused-vars-unused-html-2",function(callback) {
4368
					var rule = createTestRule('no-unused-vars');
4369
					var expected = {value: "",
4370
									start: 30, 
4371
									end: 33};
4372
					return getFixes({buffer: '<html><head><script>var a = 10, b;</script></head></html>', 
4373
									  rule: rule,
4374
									  expected: expected,
4375
									callback: callback,
4376
									  pid: 'no-unused-vars-unused',
4377
									  contentType: 'text/html'});
4378
				});
4379
				it("Test no-unused-vars-unused-html-3",function(callback) {
4380
					var rule = createTestRule('no-unused-vars');
4381
					var expected = {value: "",
4382
									start: 32, 
4383
									end: 35};
4384
					return getFixes({buffer: '<html><head><script>var a = 10, b, c = 1;</script></head></html>', 
4385
									  rule: rule,
4386
									  expected: expected,
4387
									callback: callback,
4388
									  pid: 'no-unused-vars-unused',
4389
									  contentType: 'text/html'});
4390
				});
4391
				it("Test no-unused-vars-unused-funcdecl-html-1",function(callback) {
4392
					var rule = createTestRule('no-unused-vars');
4393
					var expected = {value: "",
4394
									start: 20, 
4395
									end: 35};
4396
					return getFixes({buffer: '<html><head><script>function f() {}</script></head></html>', 
4397
									  rule: rule,
4398
									  expected: expected,
4399
									callback: callback,
4400
									  pid: 'no-unused-vars-unused-funcdecl',
4401
									  contentType: 'text/html'});
4402
				});
4403
				it("Test no-unused-vars-unused-funcdecl-html-2",function(callback) {
4404
					var rule = createTestRule('no-unused-vars');
4405
					var expected = {value: "",
4406
									start: 46, 
4407
									end: 61};
4408
					return getFixes({buffer: '<html><head><script>var a = {one: function() {function f() {}}}</script></head></html>', 
4409
									  rule: rule,
4410
									  expected: expected,
4411
									callback: callback,
4412
									  pid: 'no-unused-vars-unused-funcdecl',
4413
									  contentType: 'text/html'});
4414
				});
4415
			});
4416
			describe("no-unused-vars-unread", function() {
4417
				this.timeout(100000000);
4418
				it("Test no-unused-vars-unread-1",function(callback) {
4419
					var rule = createTestRule('no-unused-vars');
4420
					var expected = {value: "",
4421
									start: 0, 
4422
									end: 10};
4423
					return getFixes({buffer: 'var a = 4;', 
4424
									  rule: rule,
4425
									  expected: expected,
4426
									  callback: callback,
4427
									  pid: 'no-unused-vars-unread'});
4428
				});
4429
				it("Test no-unused-vars-unread-2",function(callback) {
4430
					var rule = createTestRule('no-unused-vars');
4431
					var expected = {value: "",
4432
									start: 4, 
4433
									end: 12};
4434
					return getFixes({buffer: 'var a = 10, b;', 
4435
									  rule: rule,
4436
									  expected: expected,
4437
									  callback: callback,
4438
									  pid: 'no-unused-vars-unread'});
4439
				});
4440
				it("Test no-unused-vars-unread-3",function(callback) {
4441
					var rule = createTestRule('no-unused-vars');
4442
					var expected = {value: "",
4443
									start: 5, 
4444
									end: 12};
4445
					return getFixes({buffer: 'var a, b = 4;', 
4446
									  rule: rule,
4447
									  expected: expected,
4448
									  callback: callback,
4449
									  pid: 'no-unused-vars-unread'});
4450
				});
4451
			});
4452
			//NO-MISSING-NLS
4453
			describe("no-missing-nls", function() {
4454
				it("Test missing-nls-1", function(callback) {
4455
					var rule = createTestRule('missing-nls');
4456
					var expected = {value: " //$NON-NLS-1$",
4457
									start: 12, 
4458
									end: 12};
4459
					return getFixes({buffer: 'var a = "a";', 
4460
									  rule: rule,
4461
									  expected: expected,
4462
									  callback: callback,
4463
									  pid: 'missing-nls'});
4464
				});
4465
				it("Test missing-nls-2",function(callback) {
4466
					var rule = createTestRule('missing-nls');
4467
					var expected = {value: " //$NON-NLS-2$",
4468
									start: 39, 
4469
									end: 39};
4470
					return getFixes({buffer: 'var a = "a"; var b = "b"; //$NON-NLS-1$', 
4471
									  rule: rule,
4472
									  expected: expected,
4473
									callback: callback,
4474
									  pid: 'missing-nls'});
4475
				});
4476
				it("Test missing-nls-3",function(callback) {
4477
					var rule = createTestRule('missing-nls');
4478
					var expected = {value: " //$NON-NLS-1$",
4479
									start: 39, 
4480
									end: 39};
4481
					return getFixes({buffer: 'var a = "a"; var b = "b"; //$NON-NLS-2$', 
4482
									  rule: rule,
4483
									  expected: expected,
4484
									callback: callback,
4485
									  pid: 'missing-nls'});
4486
				});
4487
				it("Test missing-nls multi 1",function(callback) {
4488
					var rule = createTestRule('missing-nls');
4489
					var expected = [
4490
						{value: " //$NON-NLS-1$ //$NON-NLS-2$", start: 33, end: 33}
4491
					];
4492
					return getFixes({
4493
						buffer: 'var two = "two", three = "three";',
4494
						rule: rule,
4495
						expected: expected,
4496
						callback: callback
4497
					});
4498
				});
4499
				it("Test missing-nls multi 2",function(callback) {
4500
					var rule = createTestRule('missing-nls');
4501
					var expected = [
4502
						{value: " //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$", start: 45, end: 45}
4503
					];
4504
					return getFixes({
4505
						buffer: 'var four = "four", five ="five", six = "six";',
4506
						rule: rule,
4507
						expected: expected,
4508
						callback: callback
4509
					});
4510
				});
4511
			});
4512
			//UNNECESSARY-NLS
4513
			describe('unnecessary-nls', function(){
4514
				it("Test unnecessary-nls-1", function(callback) {
4515
					var rule = createTestRule('unnecessary-nls');
4516
					var expected = {value: "",
4517
									start: 10, 
4518
									end: 24};
4519
					return getFixes({buffer: 'var a = 1; //$NON-NLS-0$', 
4520
									  rule: rule,
4521
									  expected: expected,
4522
									  callback: callback,
4523
									  pid: 'unnecessary-nls'});
4524
				});
4525
				it("Test unnecessary-nls-2", function(callback) {
4526
					var rule = createTestRule('unnecessary-nls');
4527
					var expected = {value: "",
4528
									start: 10, 
4529
									end: 24};
4530
					return getFixes({buffer: 'var a = 1; //$NON-NLS-1$', 
4531
									  rule: rule,
4532
									  expected: expected,
4533
									  callback: callback,
4534
									  pid: 'unnecessary-nls'});
4535
				});
4536
				it("Test unnecessary-nls-3", function(callback) {
4537
					var rule = createTestRule('unnecessary-nls');
4538
					var expected = {value: "",
4539
									start: 10, 
4540
									end: 24};
4541
					return getFixes({buffer: 'var a = 1; //$NON-NLS-2$', 
4542
									  rule: rule,
4543
									  expected: expected,
4544
									  callback: callback,
4545
									  pid: 'unnecessary-nls'});
4546
				});
4547
				it("Test unnecessary-nls-4", function(callback) {
4548
					var rule = createTestRule('unnecessary-nls');
4549
					var expected = {value: "",
4550
									start: 13, 
4551
									end: 24};
4552
					return getFixes({buffer: 'var a = 1; //$NON-NLS-1$ foo', 
4553
									  rule: rule,
4554
									  expected: expected,
4555
									  callback: callback,
4556
									  pid: 'unnecessary-nls'});
4557
				});
4558
				it("Test unnecessary-nls-5", function(callback) {
4559
					var rule = createTestRule('unnecessary-nls');
4560
					var expected = {value: "",
4561
									start: 26, 
4562
									end: 40};
4563
					return getFixes({buffer: 'var a = "a"; //$NON-NLS-1$ //$NON-NLS-2$', 
4564
									  rule: rule,
4565
									  expected: expected,
4566
									  callback: callback,
4567
									  pid: 'unnecessary-nls'});
4568
				});
4569
				it("Test unnecessary-nls-6", function(callback) {
4570
					var rule = createTestRule('unnecessary-nls');
4571
					var expected = {value: "",
4572
									start: 12, 
4573
									end: 26};
4574
					return getFixes({buffer: 'var a = "a"; //$NON-NLS-2$ //$NON-NLS-1$', 
4575
									  rule: rule,
4576
									  expected: expected,
4577
									  callback: callback,
4578
									  pid: 'unnecessary-nls'});
4579
				});
4580
				it("Test unnecessary-nls fix all 1", function(callback) {
4581
					var rule = createTestRule('unnecessary-nls');
4582
					var expected = [
4583
									{value: "",
4584
									start: 10, 
4585
									end: 24},
4586
									{value: "",
4587
									start: 35, 
4588
									end: 49},
4589
									];
4590
	
4591
					return getFixes({buffer: 'var a = 1; //$NON-NLS-0$\nvar b = 1; //$NON-NLS-0$', 
4592
									  rule: rule,
4593
									  expected: expected,
4594
									  callback: callback,
4595
									  pid: 'unnecessary-nls'});
4596
				});
4597
				it("Test unnecessary-nls fix all 2", function(callback) {
4598
					var rule = createTestRule('unnecessary-nls');
4599
					var expected = [
4600
									{value: "",
4601
									start: 10, 
4602
									end: 38}
4603
									];
4604
	
4605
					return getFixes({buffer: 'var a = 1; //$NON-NLS-0$ //$NON-NLS-1$', 
4606
									  rule: rule,
4607
									  expected: expected,
4608
									  callback: callback,
4609
									  pid: 'unnecessary-nls'});
4610
				});
4611
				it("Test unnecessary-nls fix all 3", function(callback) {
4612
					var rule = createTestRule('unnecessary-nls');
4613
					var expected = [
4614
									{value: "",
4615
									start: 12, 
4616
									end: 26},
4617
									{value: "",
4618
									start: 40, 
4619
									end: 54},
4620
									];
4621
	
4622
					return getFixes({buffer: 'var a = "a"; //$NON-NLS-2$ //$NON-NLS-1$ //$NON-NLS-9$', 
4623
									  rule: rule,
4624
									  expected: expected,
4625
									  callback: callback,
4626
									  pid: 'unnecessary-nls'});
4627
				});
4628
				it("Test unnecessary-nls fix all 4 - careful whitespace removal", function(callback) {
4629
					var rule = createTestRule('unnecessary-nls');
4630
					var expected = [
4631
									{value: "",
4632
									start: 11, 
4633
									end: 40}
4634
									];
4635
	
4636
					return getFixes({buffer: 'var v = 10; //$NON-NLS-1$  //$NON-NLS-2$\nvar v2;', 
4637
									  rule: rule,
4638
									  expected: expected,
4639
									  callback: callback,
4640
									  pid: 'unnecessary-nls'});
4641
				});
4642
				it("Test unnecessary-nls fix all 5 - careful whitespace removal", function(callback) {
4643
					var rule = createTestRule('unnecessary-nls');
4644
					var expected = [
4645
									{value: "",
4646
									start: 11, 
4647
									end: 40}
4648
									];
4649
	
4650
					return getFixes({buffer: 'var v = 10; //$NON-NLS-1$  //$NON-NLS-2$     \nvar v2;', 
4651
									  rule: rule,
4652
									  expected: expected,
4653
									  callback: callback,
4654
									  pid: 'unnecessary-nls'});
4655
				});
4656
			});
4657
			//USE-ISNAN
4658
			describe("use-isnan", function() {
4659
				it("Test use-isnan multi fix 1", function(done) {
4660
					var rule = createTestRule("use-isnan");
4661
					var expected = [
4662
						{value: "isNaN(foo)", start: 3,	end: 14},
4663
						{value: "isNaN(bar)", start: 21,	end: 32}
4664
					];
4665
					return getFixes({
4666
						buffer: "if(foo === NaN){} if(NaN === bar){}",
4667
						rule: rule,
4668
						expected: expected,
4669
						callback: done
4670
					});
4671
				});
4672
				it("Test use-isnan multi fix 2", function(done) {
4673
					var rule = createTestRule("use-isnan");
4674
					var expected = [
4675
						{value: "isNaN(foo)", start: 3,	end: 14},
4676
						{value: "isNaN(bar)", start: 18,	end: 29}
4677
					];
4678
					return getFixes({
4679
						buffer: "if(foo === NaN || NaN === bar){}",
4680
						rule: rule,
4681
						expected: expected,
4682
						callback: done
4683
					});
4684
				});
4685
				it("Test use-isnan-1",function(callback) {
4686
					var rule = createTestRule('use-isnan');
4687
					var expected = {value: "isNaN(foo)",
4688
									start: 3, 
4689
									end: 14};
4690
					return getFixes({buffer: 'if(foo === NaN){}', 
4691
									  rule: rule,
4692
									  expected: expected,
4693
									  callback: callback,
4694
									  pid: 'use-isnan'});
4695
				});
4696
				it("Test use-isnan-2",function(callback) {
4697
					var rule = createTestRule('use-isnan');
4698
					var expected = {value: "isNaN(foo)",
4699
									start: 3, 
4700
									end: 14};
4701
					return getFixes({buffer: 'if(NaN === foo){}', 
4702
									  rule: rule,
4703
									  expected: expected,
4704
									  callback: callback,
4705
									  pid: 'use-isnan'});
4706
				});
4707
				it("Test use-isnan-3",function(callback) {
4708
					var rule = createTestRule('use-isnan');
4709
					var expected = {value: "isNaN(foo+23)",
4710
									start: 3, 
4711
									end: 19};
4712
					return getFixes({buffer: 'if((foo+23) === NaN){}', 
4713
									  rule: rule,
4714
									  expected: expected,
4715
									  callback: callback,
4716
									  pid: 'use-isnan'});
4717
				});
4718
				it("Test use-isnan-4",function(callback) {
4719
					var rule = createTestRule('use-isnan');
4720
					var expected = {value: "isNaN(foo+23)",
4721
									start: 3, 
4722
									end: 19};
4723
					return getFixes({buffer: 'if(NaN === (foo+23)){}', 
4724
									  rule: rule,
4725
									  expected: expected,
4726
									  callback: callback,
4727
									  pid: 'use-isnan'});
4728
				});
4729
				it("Test use-isnan-5",function(callback) {
4730
					var rule = createTestRule('use-isnan');
4731
					var expected = {value: "isNaN(45 === (foo+23))",
4732
									start: 3, 
4733
									end: 28};
4734
					return getFixes({buffer: 'if(NaN === (45 === (foo+23))){}', 
4735
									  rule: rule,
4736
									  expected: expected,
4737
									  callback: callback,
4738
									  pid: 'use-isnan'});
4739
				});
4740
			});
4741
			//NO-DUPLICATE-CASE
4742
			describe("no-duplicate-case", function() {
4743
				it("no-duplicate-case - rename 1", function(done) {
4744
					var rule = createTestRule("no-duplicate-case");
4745
					var expected = {
4746
						groups: [
4747
							{data: {}, positions: [{offset: 66, length: 1}]}
4748
						]
4749
					};
4750
					return getFixes({
4751
						buffer: "var a = 1;\n" +
4752
								"switch (a) {\n" +
4753
								"	case 1:\n" +
4754
								"		break;\n" +
4755
								"	case 2:\n" +
4756
								"		break;\n" +
4757
								"	case 1:\n" +
4758
								"		break;\n" +
4759
								"	default:\n" +
4760
								"		break;\n" +
4761
								"}",
4762
						rule: rule,
4763
						expected: expected,
4764
						callback: done
4765
					});
4766
				});
4767
			});
4768
			//NO-REDECLARE
4769
			describe("no-redeclare", function() {
4770
				it("no-redeclare 1", function(done) {
4771
					var rule = createTestRule("no-redeclare");
4772
					var expected = {
4773
						groups: [
4774
							{data: {}, positions: [{offset: 25, length: 1}, {offset: 32, length: 1}, {offset: 40, length: 1}, {offset: 62, length: 1}]}
4775
						]
4776
					};
4777
					return getFixes({
4778
						buffer: "var i = \"hello\";\n" +
4779
								"for(var i = 0; i < 10; i++) {\n" +
4780
								"	var foo = bar[i];\n" +
4781
								"}\n" +
4782
								"console.log(i);",
4783
						rule: rule,
4784
						expected: expected,
4785
						callback: done
4786
					});
4787
				});
4788
				it("no-redeclare 2", function(done) {
4789
					var rule = createTestRule("no-redeclare");
4790
					var expected = {
4791
						groups: [
4792
							{data: {}, positions: [{offset: 25, length: 1}, {offset: 32, length: 1}, {offset: 40, length: 1}, {offset: 62, length: 1}]}
4793
						]
4794
					};
4795
					return getFixes({
4796
						buffer: "var i = \"hello\";\n" +
4797
								"for(var i = 0; i < 10; i++)\n" +
4798
								"	console.log(bar[i]);\n" +
4799
								"console.log(i);",
4800
						rule: rule,
4801
						expected: expected,
4802
						callback: done
4803
					});
4804
				});
4805
				it("no-redeclare 3", function(done) {
4806
					var rule = createTestRule("no-redeclare");
4807
					var expected = {
4808
						groups: [
4809
							{data: {}, positions: [{offset: 56, length: 1}, {offset: 63, length: 1}, {offset: 71, length: 1}, {offset: 93, length: 1}]}
4810
						]
4811
					};
4812
					return getFixes({
4813
						buffer: "var i = \"hello\";\n" +
4814
								"function bar(j) {\n" +
4815
								"	return j;\n" +
4816
								"}\n" +
4817
								"for(var i = 0; i < 10; i++)\n" +
4818
								"	console.log(bar[i]);\n" +
4819
								"console.log(i);",
4820
						rule: rule,
4821
						expected: expected,
4822
						callback: done
4823
					});
4824
				});
4825
			});
4768
		});
4826
		});
4769
	};
4827
	};
4770
});
4828
});

Return to bug 495751