Skip to content

Commit

Permalink
Add Halstead test for JavaScript grammar
Browse files Browse the repository at this point in the history
  • Loading branch information
Luni-4 committed Mar 23, 2021
1 parent 4c17538 commit 5f3d087
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 5 deletions.
10 changes: 5 additions & 5 deletions src/getter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -196,11 +196,11 @@ impl Getter for JavascriptCode {
| PERCENT | STARSTAR | PIPE | AMP | LTLT | TILDE | LT | LTEQ | EQEQ | BANGEQ | GTEQ
| GT | PLUSEQ | BANG | BANGEQEQ | EQEQEQ | DASHEQ | STAREQ | SLASHEQ | PERCENTEQ
| STARSTAREQ | GTGTEQ | GTGTGTEQ | LTLTEQ | AMPEQ | CARET | CARETEQ | PIPEEQ
| Yield | LBRACK | LBRACE | Await | QMARK | QMARKQMARK | New | Let | Var | Const => {
HalsteadType::Operator
}
Identifier | Identifier2 | String | Number | True | False | Null | Void | This
| Super | Undefined | Set | Get | Typeof | Instanceof => HalsteadType::Operand,
| Yield | LBRACK | LBRACE | Await | QMARK | QMARKQMARK | New | Let | Var | Const
| Function | Function2 | SEMI => HalsteadType::Operator,
Identifier | Identifier2 | MemberExpression | PropertyIdentifier | String | Number
| True | False | Null | Void | This | Super | Undefined | Set | Get | Typeof
| Instanceof => HalsteadType::Operand,
_ => HalsteadType::Unknown,
}
}
Expand Down
21 changes: 21 additions & 0 deletions src/metrics/halstead.rs
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,27 @@ mod tests {
);
}

#[test]
fn javascript_operators_and_operands() {
check_metrics!(
"function main() {
var a, b, c, avg;
a = 5; b = 5; c = 5;
avg = (a + b + c) / 3;
console.log(\"{}\", avg);
}",
"foo.js",
JavascriptParser,
halstead,
[
(u_operators, 10, usize), // function, (), {}, var, =, +, /, ,, ., ;
(operators, 24, usize),
(u_operands, 11, usize), // main, a, b, c, avg, 3, 5, console.log, console, log, "{}"
(operands, 21, usize)
]
);
}

#[test]
fn python_wrong_operators() {
check_metrics!(
Expand Down

0 comments on commit 5f3d087

Please sign in to comment.