Exemplo n.º 1
0
class TestPhrases(unittest.TestCase):
    fbe = None

    def setUp(self):
        self.fbe = FunctionBodyExtractor()

    def test_get_simple_phrases(self):
        self.fbe.body = """
            $a = 'abc';
            // $b = '123';

            /*
            $c = 'DEF';
            */

            $d = new \stdClass;
        """

        self.fbe.phrases()
        self.assertEqual(["$a = 'abc';", "$d = new \stdClass;"],
                         self.fbe.phrases_list)

    @unittest.skip("extract blocks as phrases/stories")
    def test_get_if_statement_phrase(self):

        self.fbe.body = """
            static $statement = false;

            if (isset($content0)) {
                $a = 2;
                die(0);
            }

            if (isset($content1)) { // explain
                // if something then exit
                exit();
            }

            if (isset($content2) /* && $isDebug */) {
                die(2);
            }

            return '123';
"""
        self.fbe.phrases()

        expected = []
        expected.append("static $statement = false;")

        self.assertEqual(expected, self.fbe.phrases_list)
Exemplo n.º 2
0
class TestPhrases(unittest.TestCase):
    fbe = None

    def setUp(self):
        self.fbe = FunctionBodyExtractor()

    def test_get_simple_phrases(self):
        self.fbe.body = """
            $a = 'abc';
            // $b = '123';

            /*
            $c = 'DEF';
            */

            $d = new \stdClass;
        """

        self.fbe.phrases()
        self.assertEqual(["$a = 'abc';", "$d = new \stdClass;"], self.fbe.phrases_list)

    @unittest.skip("extract blocks as phrases/stories")
    def test_get_if_statement_phrase(self):

        self.fbe.body = """
            static $statement = false;

            if (isset($content0)) {
                $a = 2;
                die(0);
            }

            if (isset($content1)) { // explain
                // if something then exit
                exit();
            }

            if (isset($content2) /* && $isDebug */) {
                die(2);
            }

            return '123';
"""
        self.fbe.phrases()

        expected = []
        expected.append("static $statement = false;")

        self.assertEqual(expected, self.fbe.phrases_list)
Exemplo n.º 3
0
class TestAnaliseFlags(unittest.TestCase):
    fbe = None

    def setUp(self):
        self.fbe = FunctionBodyExtractor()

    def assert_flags(self, expect_in_single_quotes, expect_in_double_quotes, expect_in_single_comment, expect_in_multi_line_comment):
        self.assertEqual(expect_in_single_quotes, self.fbe.SQ)
        self.assertEqual(expect_in_double_quotes, self.fbe.DQ)
        self.assertEqual(expect_in_single_comment, self.fbe.SLC)
        self.assertEqual(expect_in_multi_line_comment, self.fbe.MLC)

    def set_content_and_run_assert(self, content, SQ, DQ, SLC, MLC):
        self.fbe.phrase_content = content
        self.fbe.analyse_flags()
        self.assert_flags(SQ, DQ, SLC, MLC)

    def test_when_string_opened_single_quotes_then_change_single_quote_to_true_if_all_other_flags_are_false(self):
        self.set_content_and_run_assert("$a = '", True, False, False, False)

    def test_when_string_opened_double_quotes_then_change_double_quote_to_true_if_all_other_flags_are_false(self):
        self.set_content_and_run_assert('$a = "', False, True, False, False)

    def test_when_string_opened_single_quotes_and_is_in_single_line_comment_then_dont_change_single_quote_flag(self):
        self.fbe.SLC = True
        self.set_content_and_run_assert('$a = "', False, False, True, False)

    def test_when_string_opened_single_quotes_and_is_in_multiline_comment_then_dont_change_single_quote_flag(self):
        self.fbe.MLC = True
        self.set_content_and_run_assert('$a = "', False, False, False, True)

    def test_when_not_in_quotes_and_is_start_of_single_line_comment_then_change_single_line_flag(self):
        self.set_content_and_run_assert('$a = 1; //', False, False, True, False)

    def test_when_in_quotes_and_is_start_of_single_line_comment_then_dont_change_single_line_flag(self):
        # single quotes
        self.fbe.SQ = True

        self.fbe.phrase_content = '$a = 1; //'
        self.fbe.analyse_flags()

        self.fbe.SQ = False # reset
        self.assert_flags(False, False, False, False)

        # double quotes
        self.fbe.DQ = True

        self.fbe.phrase_content = '$a = 1; //'
        self.fbe.analyse_flags()

        self.fbe.DQ = False # reset
        self.assert_flags(False, False, False, False)

    def test_when_not_in_quotes_and_is_start_of_multi_line_comment_then_change_multi_line_flag(self):
        self.set_content_and_run_assert('$a = 1; /*', False, False, False, True)

    def test_when_in_quotes_and_is_start_of_multi_line_comment_then_dont_change_multi_line_flag(self):
        # single quotes
        self.fbe.DQ = True
        self.set_content_and_run_assert('$a = 1; /*', False, True, False, False)
        self.fbe.DQ = False

        # double quotes
        self.fbe.SQ = True
        self.set_content_and_run_assert('$a = 1; /*', True, False, False, False)

    def test_when_in_single_line_comment_and_is_multi_line_comment_then_change_multi_line_flag(self):
        self.set_content_and_run_assert("$a = 1; //", False, False, True, False)

        self.fbe.phrase_content = """$a = 1; //
"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, False)

        self.fbe.phrase_content = """$a = 1; //
/"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, False)

        self.fbe.phrase_content = """$a = 1; //
/*"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, True)

        self.fbe.phrase_content = """$a = 1; //
/*a"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, True)

        self.fbe.phrase_content = """$a = 1; //
/*a*"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, True)

        self.fbe.phrase_content = """$a = 1; //
/*a*/"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, False)

    def test_when_latest_char_is_end_of_line_then_reset_single_comment_flag(self):
        self.fbe.SLC = True
        self.fbe.phrase_content = """$a = 1;
"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, False)

        self.fbe.SLC = True
        self.fbe.phrase_content = """$a = 1;\n"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, False)
Exemplo n.º 4
0
    def test_when_input_is_string_and_offset_is_greater_than_string_length_then_return_None(self):
        fbe = FunctionBodyExtractor()

        response = fbe.get_char('ABCDEF', 10)
        self.assertEqual(None, response)
Exemplo n.º 5
0
    def test_when_input_is_string_and_offset_is_positive_then_get_char(self):
        fbe = FunctionBodyExtractor()

        response = fbe.get_char('ABCDEF', 2)
        self.assertEqual('C', response)
Exemplo n.º 6
0
    def test_when_input_is_string_and_offset_is_zero_then_get_first_char(self):
        fbe = FunctionBodyExtractor()

        response = fbe.get_char('abcdef', 0)
        self.assertEqual('a', response)
Exemplo n.º 7
0
    def test_when_input_is_None_then_return_None(self):
        fbe = FunctionBodyExtractor()

        response = fbe.get_char(None, -1)
        self.assertEqual(None, response)
Exemplo n.º 8
0
    def test_when_last_char_is_space_then_return_the_empty_space_char(self):
        fbe = FunctionBodyExtractor()

        response = fbe.get_char('content123 ', -1)
        self.assertEqual(' ', response)
Exemplo n.º 9
0
 def setUp(self):
     self.fbe = FunctionBodyExtractor()
Exemplo n.º 10
0
class TestAnaliseFlags(unittest.TestCase):
    fbe = None

    def setUp(self):
        self.fbe = FunctionBodyExtractor()

    def assert_flags(self, expect_in_single_quotes, expect_in_double_quotes,
                     expect_in_single_comment, expect_in_multi_line_comment):
        self.assertEqual(expect_in_single_quotes, self.fbe.SQ)
        self.assertEqual(expect_in_double_quotes, self.fbe.DQ)
        self.assertEqual(expect_in_single_comment, self.fbe.SLC)
        self.assertEqual(expect_in_multi_line_comment, self.fbe.MLC)

    def set_content_and_run_assert(self, content, SQ, DQ, SLC, MLC):
        self.fbe.phrase_content = content
        self.fbe.analyse_flags()
        self.assert_flags(SQ, DQ, SLC, MLC)

    def test_when_string_opened_single_quotes_then_change_single_quote_to_true_if_all_other_flags_are_false(
            self):
        self.set_content_and_run_assert("$a = '", True, False, False, False)

    def test_when_string_opened_double_quotes_then_change_double_quote_to_true_if_all_other_flags_are_false(
            self):
        self.set_content_and_run_assert('$a = "', False, True, False, False)

    def test_when_string_opened_single_quotes_and_is_in_single_line_comment_then_dont_change_single_quote_flag(
            self):
        self.fbe.SLC = True
        self.set_content_and_run_assert('$a = "', False, False, True, False)

    def test_when_string_opened_single_quotes_and_is_in_multiline_comment_then_dont_change_single_quote_flag(
            self):
        self.fbe.MLC = True
        self.set_content_and_run_assert('$a = "', False, False, False, True)

    def test_when_not_in_quotes_and_is_start_of_single_line_comment_then_change_single_line_flag(
            self):
        self.set_content_and_run_assert('$a = 1; //', False, False, True,
                                        False)

    def test_when_in_quotes_and_is_start_of_single_line_comment_then_dont_change_single_line_flag(
            self):
        # single quotes
        self.fbe.SQ = True

        self.fbe.phrase_content = '$a = 1; //'
        self.fbe.analyse_flags()

        self.fbe.SQ = False  # reset
        self.assert_flags(False, False, False, False)

        # double quotes
        self.fbe.DQ = True

        self.fbe.phrase_content = '$a = 1; //'
        self.fbe.analyse_flags()

        self.fbe.DQ = False  # reset
        self.assert_flags(False, False, False, False)

    def test_when_not_in_quotes_and_is_start_of_multi_line_comment_then_change_multi_line_flag(
            self):
        self.set_content_and_run_assert('$a = 1; /*', False, False, False,
                                        True)

    def test_when_in_quotes_and_is_start_of_multi_line_comment_then_dont_change_multi_line_flag(
            self):
        # single quotes
        self.fbe.DQ = True
        self.set_content_and_run_assert('$a = 1; /*', False, True, False,
                                        False)
        self.fbe.DQ = False

        # double quotes
        self.fbe.SQ = True
        self.set_content_and_run_assert('$a = 1; /*', True, False, False,
                                        False)

    def test_when_in_single_line_comment_and_is_multi_line_comment_then_change_multi_line_flag(
            self):
        self.set_content_and_run_assert("$a = 1; //", False, False, True,
                                        False)

        self.fbe.phrase_content = """$a = 1; //
"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, False)

        self.fbe.phrase_content = """$a = 1; //
/"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, False)

        self.fbe.phrase_content = """$a = 1; //
/*"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, True)

        self.fbe.phrase_content = """$a = 1; //
/*a"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, True)

        self.fbe.phrase_content = """$a = 1; //
/*a*"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, True)

        self.fbe.phrase_content = """$a = 1; //
/*a*/"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, False)

    def test_when_latest_char_is_end_of_line_then_reset_single_comment_flag(
            self):
        self.fbe.SLC = True
        self.fbe.phrase_content = """$a = 1;
"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, False)

        self.fbe.SLC = True
        self.fbe.phrase_content = """$a = 1;\n"""
        self.fbe.analyse_flags()
        self.assert_flags(False, False, False, False)
Exemplo n.º 11
0
    def test_when_input_is_string_and_offset_is_greater_than_string_length_then_return_None(
            self):
        fbe = FunctionBodyExtractor()

        response = fbe.get_char('ABCDEF', 10)
        self.assertEqual(None, response)
Exemplo n.º 12
0
    def test_when_input_is_string_and_offset_is_positive_then_get_char(self):
        fbe = FunctionBodyExtractor()

        response = fbe.get_char('ABCDEF', 2)
        self.assertEqual('C', response)
Exemplo n.º 13
0
    def test_when_input_is_string_and_offset_is_zero_then_get_first_char(self):
        fbe = FunctionBodyExtractor()

        response = fbe.get_char('abcdef', 0)
        self.assertEqual('a', response)
Exemplo n.º 14
0
    def test_when_input_is_None_then_return_None(self):
        fbe = FunctionBodyExtractor()

        response = fbe.get_char(None, -1)
        self.assertEqual(None, response)
Exemplo n.º 15
0
 def setUp(self):
     self.fbe = FunctionBodyExtractor()
Exemplo n.º 16
0
    def getFunctionBody(self, functionSignature, functionBody):
        functionBodyExtractor = FunctionBodyExtractor()
        functionBodyExtractor.signature = functionSignature
        functionBodyExtractor.body = functionBody

        return functionBodyExtractor.extract()
Exemplo n.º 17
0
    def test_when_last_char_is_space_then_return_the_empty_space_char(self):
        fbe = FunctionBodyExtractor()

        response = fbe.get_char('content123 ', -1)
        self.assertEqual(' ', response)