177 lines
4.9 KiB
JavaScript
177 lines
4.9 KiB
JavaScript
/* eslint-disable */
|
|
|
|
/**
|
|
* @fileoverview Tests for arrow-parens
|
|
* @author Jxck
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Requirements
|
|
//------------------------------------------------------------------------------
|
|
|
|
var rule = require("../rules/arrow-parens"),
|
|
RuleTester = require('eslint').RuleTester;
|
|
|
|
function ok(code, args){
|
|
return { code: code, options: args, parser: 'babel-eslint' }
|
|
}
|
|
|
|
function err(code, errors, args){
|
|
var e = ok(code, args)
|
|
e.errors = errors
|
|
return e
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Tests
|
|
//------------------------------------------------------------------------------
|
|
var ruleTester = new RuleTester();
|
|
|
|
var valid = [
|
|
{ code: "() => {}", ecmaFeatures: { arrowFunctions: true } },
|
|
{ code: "(a) => {}", ecmaFeatures: { arrowFunctions: true } },
|
|
{ code: "(a) => a", ecmaFeatures: { arrowFunctions: true } },
|
|
{ code: "(a) => {\n}", ecmaFeatures: { arrowFunctions: true } },
|
|
{ code: "a.then((foo) => {});", ecmaFeatures: { arrowFunctions: true } },
|
|
{ code: "a.then((foo) => { if (true) {}; });", ecmaFeatures: { arrowFunctions: true } },
|
|
|
|
// // as-needed
|
|
{ code: "() => {}", options: ["as-needed"], ecmaFeatures: { arrowFunctions: true } },
|
|
{ code: "a => {}", options: ["as-needed"], ecmaFeatures: { arrowFunctions: true } },
|
|
{ code: "a => a", options: ["as-needed"], ecmaFeatures: { arrowFunctions: true } },
|
|
{ code: "([a, b]) => {}", options: ["as-needed"], ecmaFeatures: { arrowFunctions: true, destructuring: true } },
|
|
{ code: "({ a, b }) => {}", options: ["as-needed"], ecmaFeatures: { arrowFunctions: true, destructuring: true } },
|
|
{ code: "(a = 10) => {}", options: ["as-needed"], ecmaFeatures: { arrowFunctions: true, destructuring: true, defaultParams: true } },
|
|
{ code: "(...a) => a[0]", options: ["as-needed"], ecmaFeatures: { arrowFunctions: true, restParams: true } },
|
|
{ code: "(a, b) => {}", options: ["as-needed"], ecmaFeatures: { arrowFunctions: true } },
|
|
|
|
// async
|
|
ok("async () => {}"),
|
|
ok("async (a) => {}"),
|
|
ok("async (a) => a"),
|
|
ok("async (a) => {\n}"),
|
|
ok("a.then(async (foo) => {});"),
|
|
ok("a.then((foo) => { if (true) {}; })"),
|
|
|
|
ok("async () => {}", ["as-needed"]),
|
|
ok("async a => {}", ["as-needed"]),
|
|
ok("async a => a", ["as-needed"]),
|
|
ok("async ([a, b]) => {}", ["as-needed"]),
|
|
ok("async ({ a, b }) => {}", ["as-needed"]),
|
|
ok("async (a = 10) => {}", ["as-needed"]),
|
|
ok("async (...a) => a[0]", ["as-needed"]),
|
|
ok("async (a, b) => {}", ["as-needed"]),
|
|
|
|
];
|
|
|
|
var message = message;
|
|
var asNeededMessage = asNeededMessage;
|
|
var type = type;
|
|
|
|
var invalid = [
|
|
{
|
|
code: "a => {}",
|
|
ecmaFeatures: { arrowFunctions: true },
|
|
errors: [{
|
|
line: 1,
|
|
column: 1,
|
|
message: message,
|
|
type: type
|
|
}]
|
|
},
|
|
{
|
|
code: "a => a",
|
|
ecmaFeatures: { arrowFunctions: true },
|
|
errors: [{
|
|
line: 1,
|
|
column: 1,
|
|
message: message,
|
|
type: type
|
|
}]
|
|
},
|
|
{
|
|
code: "a => {\n}",
|
|
ecmaFeatures: { arrowFunctions: true },
|
|
errors: [{
|
|
line: 1,
|
|
column: 1,
|
|
message: message,
|
|
type: type
|
|
}]
|
|
},
|
|
{
|
|
code: "a.then(foo => {});",
|
|
ecmaFeatures: { arrowFunctions: true },
|
|
errors: [{
|
|
line: 1,
|
|
column: 8,
|
|
message: message,
|
|
type: type
|
|
}]
|
|
},
|
|
{
|
|
code: "a.then(foo => a);",
|
|
ecmaFeatures: { arrowFunctions: true },
|
|
errors: [{
|
|
line: 1,
|
|
column: 8,
|
|
message: message,
|
|
type: type
|
|
}]
|
|
},
|
|
{
|
|
code: "a(foo => { if (true) {}; });",
|
|
ecmaFeatures: { arrowFunctions: true },
|
|
errors: [{
|
|
line: 1,
|
|
column: 3,
|
|
message: message,
|
|
type: type
|
|
}]
|
|
},
|
|
|
|
// as-needed
|
|
{
|
|
code: "(a) => a",
|
|
options: ["as-needed"],
|
|
ecmaFeatures: { arrowFunctions: true },
|
|
errors: [{
|
|
line: 1,
|
|
column: 1,
|
|
message: asNeededMessage,
|
|
type: type
|
|
}]
|
|
},
|
|
{
|
|
code: "(b) => b",
|
|
options: ["as-needed"],
|
|
ecmaFeatures: { arrowFunctions: true },
|
|
errors: [{
|
|
line: 1,
|
|
column: 1,
|
|
message: asNeededMessage,
|
|
type: type
|
|
}]
|
|
},
|
|
|
|
// async
|
|
err('async a => {}', [
|
|
{ message: 'Expected parentheses around arrow function argument.' },
|
|
]),
|
|
|
|
err('async a => a', [
|
|
{ message: 'Expected parentheses around arrow function argument.' },
|
|
]),
|
|
|
|
err('async (a) => a', [
|
|
{ message: 'Unexpected parentheses around single function argument' },
|
|
],
|
|
["as-needed"])
|
|
];
|
|
|
|
ruleTester.run("arrow-parens", rule, {
|
|
valid: valid,
|
|
invalid: invalid
|
|
}); |