From 07424327ac5384a8b23c67b127069d5d0a11d17b Mon Sep 17 00:00:00 2001 From: lukyanoffpashok Date: Thu, 9 Jul 2020 12:14:46 +0300 Subject: [PATCH] fix --- .../patterns/multiple_while/multiple_while.py | 6 ++-- .../multiple_while/MultipleWhile.java | 4 +-- .../multiple_while/test_multiple_while.py | 33 +++---------------- 3 files changed, 9 insertions(+), 34 deletions(-) diff --git a/aibolit/patterns/multiple_while/multiple_while.py b/aibolit/patterns/multiple_while/multiple_while.py index 87e74fcf..9da3a22f 100644 --- a/aibolit/patterns/multiple_while/multiple_while.py +++ b/aibolit/patterns/multiple_while/multiple_while.py @@ -8,13 +8,13 @@ class MultipleWhile: def __init__(self): pass - def get_number_of_sequential_while_statement_in_function(self, tree: AST, node: int) -> int: + def get_top_level_while_qty(self, tree: AST, node: int) -> int: list_while_nodes: List[int] = [] set_child_while_nodes: Set[int] = set() for child in tree.all_children_with_type(node, ASTNodeType.WHILE_STATEMENT): list_while_nodes.append(child) set_internal_while = set(tree.list_all_children_with_type(child, ASTNodeType.WHILE_STATEMENT)) - set_child_while_nodes = set.union(set_child_while_nodes, set_internal_while) + set_child_while_nodes |= set_internal_while return len(list_while_nodes) - len(set_child_while_nodes) def value(self, filename: str) -> List[int]: @@ -28,7 +28,7 @@ def value(self, filename: str) -> List[int]: tree = AST.build_from_javalang(build_ast(filename)) lines: List[int] = [] for node in tree.nodes_by_type(ASTNodeType.METHOD_DECLARATION): - if self.get_number_of_sequential_while_statement_in_function(tree, node) > 1: + if self.get_top_level_while_qty(tree, node) > 1: lines.append(tree.get_attr(node, 'source_code_line')) return lines diff --git a/test/patterns/multiple_while/MultipleWhile.java b/test/patterns/multiple_while/MultipleWhile.java index d9ef61fe..8211439a 100644 --- a/test/patterns/multiple_while/MultipleWhile.java +++ b/test/patterns/multiple_while/MultipleWhile.java @@ -1,9 +1,9 @@ class MultipleWhile { void bar() { while (true) { - x = 1; + // some code while (false) { - x = 1; + // some code } } // more code diff --git a/test/patterns/multiple_while/test_multiple_while.py b/test/patterns/multiple_while/test_multiple_while.py index ab1c06b4..48b718ca 100644 --- a/test/patterns/multiple_while/test_multiple_while.py +++ b/test/patterns/multiple_while/test_multiple_while.py @@ -20,7 +20,6 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -import os from unittest import TestCase from aibolit.patterns.multiple_while.multiple_while import MultipleWhile from pathlib import Path @@ -29,41 +28,17 @@ class TestMultipleWhile(TestCase): def test_simple(self): - lines = MultipleWhile().value( - Path( - Path( - os.path.realpath(__file__) - ).parent, 'Simple.java' - ) - ) + lines = MultipleWhile().value(Path(__file__).parent.absolute() / 'Simple.java') self.assertEqual(lines, [2]) def test_one_while(self): - lines = MultipleWhile().value( - Path( - Path( - os.path.realpath(__file__) - ).parent, 'OneWhile.java' - ) - ) + lines = MultipleWhile().value(Path(__file__).parent.absolute() / 'OneWhile.java') self.assertEqual(lines, []) def test_if_while(self): - lines = MultipleWhile().value( - Path( - Path( - os.path.realpath(__file__) - ).parent, 'IfWhile.java' - ) - ) + lines = MultipleWhile().value(Path(__file__).parent.absolute() / 'IfWhile.java') self.assertEqual(lines, [2]) def test_multiple_while(self): - lines = MultipleWhile().value( - Path( - Path( - os.path.realpath(__file__) - ).parent, 'MultipleWhile.java' - ) - ) + lines = MultipleWhile().value(Path(__file__).parent.absolute() / 'MultipleWhile.java') self.assertEqual(lines, [])