def test_sort_parts_by_dependencies(self) -> None: parts = [Parts('higher.h', ['lower.h']), Parts('lower.h', [])] self.assertTrue(SingleHeaderFile.depends_on(parts[0], parts[1])) self.assertFalse(SingleHeaderFile.depends_on(parts[1], parts[0])) parts = SingleHeaderFile.sort_parts_by_dependencies(parts) verify_all('sorted', parts)
def test_parse_complex_object(options, reporter): results = [] results.append(options._parse_to_tokens('method({"key": "value"})')) results.append(options._parse_to_tokens('attribute={"key": "value"}')) results.append(options._parse_to_tokens('attribute=("value1", "value2")')) results.append(options._parse_to_tokens('method("foo", {"key": "value"})')) verify_all('Parse complex Python object', results, reporter=reporter)
def test_validate_single_header_file_content(self) -> None: hs = ["A.h", "B.h"] hpps = ["C.hpp"] source_code_snippets = [ remove_indentation << ''' # Source code is fine: there should be no error message #include <iostream> #include "A.h" #include "B.h" ''', remove_indentation << ''' # A.h is incorrectly included #include <A.h> #include "B.h" ''', remove_indentation << ''' # B.h and C.hpp are incorrectly included: there should ve error messages for both #include <B.h> #include <C.hpp> ''', ] header = f"Testing validation of #include lines, with these header files: {str(hs)} and {str(hpps)}" def validate_includes(source: str) -> str: return f"""===============================\nSource snippet:\n{source}\n=>\nError message (if any):\n{CppGeneration.validate_single_header_file_content(hs, hpps, source)}""" verify_all(header, source_code_snippets, lambda source: validate_includes(source))
def test_index_of_separator(options, reporter): results = [] results.append(options._get_arument_index('method({"key": "value"})')) results.append(options._get_arument_index('attribute={"key": "value"}')) results.append(options._get_arument_index('method(foo={"key": "value"})')) results.append(options._get_arument_index('attribute=("value1", "value2")')) verify_all("Get argument index", results, reporter=reporter)
def test_get_options(self): options = 'add_argument("--proxy-server=66.97.38.58:80")' sel_options = self.options.create('chrome', options) self.results.append(sel_options.arguments) verify_all('Selenium options with string.', self.results, reporter=self.reporter)
def test_single_method(self): self._parse_result( self.creator._get_ff_profile('set_preference("key1", "arg1")') ) self._parse_result( self.creator._get_ff_profile( 'set_preference("key1", "arg1");set_preference("key1", "arg1")' ) ) self._parse_result( self.creator._get_ff_profile( 'set_preference("key1", "arg1") ; set_preference("key2", "arg2")' ) ) profile = self.creator._get_ff_profile("update_preferences()") self.results.append(isinstance(profile, webdriver.FirefoxProfile)) try: self.creator._get_ff_profile('wrong_name("key1", "arg1")') except AttributeError as error: self.results.append(error) try: self.creator._get_ff_profile('set_proxy("foo")') except Exception as error: self.results.append(str(error)) verify_all("Firefox profile parsing", self.results, reporter=self.reporter)
def test_parse_options_string(self): self.results.append(self.options._parse('method("arg1")')) self.results.append(self.options._parse('method("arg1", "arg2")')) self.results.append(self.options._parse('method(True)')) self.results.append(self.options._parse('method(1)')) self.results.append( self.options._parse('method("arg1", 2, None, False, "arg2")')) self.results.append( self.options._parse( 'method ( " arg1 " , 2 , None , False , " arg2 " )')) self.results.append(self.options._parse('attribute="arg1"')) self.results.append(self.options._parse('attribute = True')) self.results.append( self.options._parse('method("arg1");attribute=True')) self.results.append( self.options._parse( 'method("arg1") ; attribute=True ; method("arg2")')) self.results.append(self.options._parse('attribute')) self.results.append(self.options._parse('method()')) self.results.append( self.options._parse('method("--proxy 10.10.1.3:2345")')) self.results.append(self.options._parse('method(";arg1")')) self.results.append( self.options._parse('method ( "arg1" , 2 ,"arg2" )')) self.results.append(self.options._parse("method('arg1')")) verify_all('Selenium options string to dict', self.results, reporter=self.reporter)
def test_convert_key(self): results = [] results.append(self.element_keywords._convert_special_keys(["B"])) results.append(self.element_keywords._convert_special_keys(["AA", "CCC"])) results.append(self.element_keywords._convert_special_keys(["ALT", "B"])) results.append(self.element_keywords._convert_special_keys(["ALT", "CTRL"])) verify_all("To Selenium Special Keys", results, reporter=self.reporter)
def test_create_with_android(options, reporter): results = [] chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option('androidPackage', 'com.android.chrome') sel_options = options.create('android', chrome_options) results.append([sel_options.arguments, sel_options.experimental_options]) verify_all('Selenium options with android', results, reporter=reporter)
def test_check_marker_error(self): examples = [ (), ( "ARGUMENTS", "arg1", "ARGUMENTS", "arg1", "JAVASCRIPT", "code1", "JAVASCRIPT", "code2", ), ("JAVASCRIPT", "code1", "JAVASCRIPT", "code2"), ("JAVASCRIPT", "code1", "ARGUMENTS", "arg1", "ARGUMENTS", "arg1"), ( "code1", "JAVASCRIPT", "code1", "ARGUMENTS", "arg1", ), ("ARGUMENTS", "arg1", "ARGUMENTS", "arg1", "JAVASCRIPT", "code1"), ("aRGUMENtS", "arg1", "arg2", "JAVASCRIPT", "code1", "code2"), ] examples = examples + self.code_examples all_results = [] for code in examples: all_results.append(self.js_marker_error(code)) verify_all("error", all_results, reporter=self.reporter)
def test_options_create(options, reporter): results = [] options_str = 'add_argument("--disable-dev-shm-usage")' sel_options = options.create('chrome', options_str) results.append(sel_options.arguments) options_str = '%s;add_argument("--headless")' % options_str sel_options = options.create('chrome', options_str) results.append(sel_options.arguments) options_str = '%s;add_argument("--proxy-server=66.97.38.58:80")' % options_str sel_options = options.create('chrome', options_str) results.append(sel_options.arguments) options_str = '%s;binary_location("too", "many", "args")' % options_str try: options.create('chrome', options_str) except Exception as error: results.append(error.__str__()[:7]) chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--disable-dev-shm-usage') sel_options = options.create('chrome', chrome_options) results.append(sel_options.arguments) sel_options = options.create('chrome', None) results.append(sel_options) sel_options = options.create('chrome', 'None') results.append(sel_options) verify_all('Selenium options', results, reporter=reporter)
def test_parse_options_string(options, reporter): results = [] results.append(options._parse('method("arg1")')) results.append(options._parse('method("arg1", "arg2")')) results.append(options._parse('method(True)')) results.append(options._parse('method(1)')) results.append(options._parse('method("arg1", 2, None, False, "arg2")')) results.append( options._parse('method ( " arg1 " , 2 , None , False , " arg2 " )')) results.append(options._parse('attribute="arg1"')) results.append(options._parse(' attribute = True ')) results.append(options._parse('method("arg1");attribute=True')) results.append( options._parse('method("arg1") ; attribute=True ; method("arg2")')) results.append(options._parse('attribute')) results.append(options._parse('method()')) results.append(options._parse('method(None)')) results.append(options._parse('method("--proxy 10.10.1.3:2345")')) results.append(options._parse('method(";arg1")')) results.append(options._parse('method ( "arg1" , 2 ,"arg2" )')) results.append(options._parse("method('arg1')")) results.append( options._parse( 'add_argument("-profile"); add_argument("C:\\\\path\\to\\\\profile")' )) results.append( options._parse( r'add_argument("-profile"); add_argument("C:\\path\\to\\profile")') ) results.append(options._parse('attribute=None')) results.append( options._parse( 'method("foo", {"key": False});attribute=True;method("bar", {"key": None})' )) verify_all('Selenium options string to dict', results, reporter=reporter)
def test_parse_keys_aliases(self): results = [] results.append(self.element_keywords._parse_aliases("CTRL")) results.append(self.element_keywords._parse_aliases("ESC")) results.append(self.element_keywords._parse_aliases("CONTROL")) results.append(self.element_keywords._parse_aliases("BB")) results.append(self.element_keywords._parse_aliases("END")) verify_all("Alias testing", results, reporter=self.reporter)
def test_split_options(self): self.results.append(self.options._split('method("arg1");method("arg2")')) self.results.append(self.options._split('method("arg1")')) self.results.append(self.options._split('attribute=True')) self.results.append(self.options._split('attribute="semi;colons;middle";other_attribute=True')) self.results.append(self.options._split('method("arg1;");method(";arg2;")')) self.results.append(self.options._split(' method ( " arg1 ") ; method ( " arg2 " ) ')) verify_all('Selenium options string splitting', self.results, reporter=self.reporter)
def test_convert_key(self): results = [] results.append(self.element_keywords._convert_special_keys(['B'])) results.append(self.element_keywords._convert_special_keys(['AA', 'CCC'])) results.append(self.element_keywords._convert_special_keys(['ALT', 'B'])) results.append(self.element_keywords._convert_special_keys(['ALT', 'CTRL'])) results = self.result_formatter(results) verify_all('To Selenium Special Keys', results, reporter=self.reporter)
def test_parse_arguemnts(options, reporter): results = [] results.append(options._parse_arguments(("arg1",), True)) results.append(options._parse_arguments("arg1", False)) results.append(options._parse_arguments({"key": "value"}, False)) results.append(options._parse_arguments(["value1", "value2"], False)) results.append(options._parse_arguments(("foo", {"key": "value"}), False)) verify_all("Parse arguments from complex object", results, reporter=reporter)
def test_parse_options_string_errors(self): self.results.append(self.error_formatter(self.options._parse, 'method("arg1)', True)) self.results.append(self.error_formatter(self.options._parse, 'method(arg1")', True)) self.results.append(self.error_formatter(self.options._parse, 'method(arg1)', True)) self.results.append(self.error_formatter(self.options._parse, 'attribute=arg1', True)) self.results.append(self.error_formatter(self.options._parse, 'attribute=webdriver', True)) self.results.append(self.error_formatter(self.options._parse, 'method(argument="value")', True)) self.results.append(self.error_formatter(self.options._parse, 'method({"key": "value"})', True)) verify_all('Selenium options string errors', self.results, reporter=self.reporter)
def test_parse_options_string_errors(options, reporter): results = [] results.append(error_formatter(options._parse, 'method("arg1)', True)) results.append(error_formatter(options._parse, 'method(arg1")', True)) results.append(error_formatter(options._parse, "method(arg1)", True)) results.append(error_formatter(options._parse, "attribute=arg1", True)) results.append(error_formatter(options._parse, "attribute=webdriver", True)) results.append(error_formatter(options._parse, 'method(argument="value")', True)) verify_all("Selenium options string errors", results, reporter=reporter)
def test_parse_keys_aliases(self): results = [] results.append(self.element_keywords._parse_aliases('CTRL')) results.append(self.element_keywords._parse_aliases('ESC')) results.append(self.element_keywords._parse_aliases('CONTROL')) results.append(self.element_keywords._parse_aliases('BB')) results.append(self.element_keywords._parse_aliases('END')) results = self.result_formatter(results) verify_all('Alias testing', results, reporter=self.reporter)
def test_string(reporter): results = [] results.append(escape_xpath_value("tidii")) results.append(escape_xpath_value('"tidii"')) results.append(escape_xpath_value("'tidii'")) results.append(escape_xpath_value("\"'tidii'")) results.append(escape_xpath_value("\"'tidii'\"")) results.append(escape_xpath_value('"\'t"id"ii\'"')) results.append(escape_xpath_value("\"'tidii'\"")) results.append(escape_xpath_value("\"'ti'd'ii'\"")) verify_all("Escape xpath value", results, reporter=reporter)
def test_split_options(options, reporter): results = [] results.append(options._split('method("arg1");method("arg2")')) results.append(options._split('method("arg1")')) results.append(options._split("attribute=True")) results.append( options._split('attribute="semi;colons;middle";other_attribute=True') ) results.append(options._split('method("arg1;");method(";arg2;")')) results.append(options._split(' method ( " arg1 ") ; method ( " arg2 " ) ')) verify_all("Selenium options string splitting", results, reporter=reporter)
def test_separate_key(self): results = [] results.append(self.element_keywords._separate_key("BB")) results.append(self.element_keywords._separate_key("ALT+B")) results.append(self.element_keywords._separate_key("A+B+C")) results.append(self.element_keywords._separate_key("A++")) results.append(self.element_keywords._separate_key("A+++")) results.append(self.element_keywords._separate_key("A+++C")) results.append(self.element_keywords._separate_key("+")) results.append(self.element_keywords._separate_key("++")) results.append(self.element_keywords._separate_key("+++")) verify_all("Separate key", results, reporter=self.reporter)
def test_normal_file_path(reporter): results = [] results.append(_format_path("/foo/file.log", 1)) results.append(_format_path("/foo/file-{index}.log", 1)) results.append(_format_path("/foo/file-{index}.log", "0001")) results.append(_format_path("/foo/file-{foo}.log", 1)) results.append(_format_path("/{foo}/file-{index}.log", 1)) results.append(_format_path("/foo/file-{index:03}.log", 1)) results.append(_format_path("/foo/{index}-file-{index}.log", "1234")) results.append(_format_path("/foo/file-{in dex}.log", "1234")) results.append(_format_path("/foo/file-{in@dex}.log", "1234")) verify_all("Different file paths.", results, reporter=reporter)
def test_normal_file_path(reporter): results = [] results.append(_format_path('/foo/file.log', 1)) results.append(_format_path('/foo/file-{index}.log', 1)) results.append(_format_path('/foo/file-{index}.log', '0001')) results.append(_format_path('/foo/file-{foo}.log', 1)) results.append(_format_path('/{foo}/file-{index}.log', 1)) results.append(_format_path('/foo/file-{index:03}.log', 1)) results.append(_format_path('/foo/{index}-file-{index}.log', '1234')) results.append(_format_path('/foo/file-{in dex}.log', '1234')) results.append(_format_path('/foo/file-{in@dex}.log', '1234')) verify_all('Different file paths.', results, reporter=reporter)
def test_separate_key(self): results = [] results.append(self.element_keywords._separate_key('BB')) results.append(self.element_keywords._separate_key('ALT+B')) results.append(self.element_keywords._separate_key('A+B+C')) results.append(self.element_keywords._separate_key('A++')) results.append(self.element_keywords._separate_key('A+++')) results.append(self.element_keywords._separate_key('A+++C')) results.append(self.element_keywords._separate_key('+')) results.append(self.element_keywords._separate_key('++')) results.append(self.element_keywords._separate_key('+++')) results = self.result_formatter(results) verify_all('Separate key', results, reporter=self.reporter)
def test_importer(self): self.results.append(self.options._import_options('firefox')) self.results.append(self.options._import_options('headless_firefox')) self.results.append(self.options._import_options('chrome')) self.results.append(self.options._import_options('headless_chrome')) self.results.append(self.options._import_options('ie')) self.results.append(self.options._import_options('opera')) self.results.append(self.options._import_options('edge')) self.results.append(self.error_formatter(self.options._import_options, 'phantomjs')) self.results.append(self.error_formatter(self.options._import_options, 'safari')) self.results.append(self.error_formatter(self.options._import_options, 'htmlunit')) self.results.append(self.error_formatter(self.options._import_options, 'htmlunit_with_js')) self.results.append(self.options._import_options('android')) self.results.append(self.error_formatter(self.options._import_options, 'iphone')) verify_all('Selenium options import', self.results, reporter=self.reporter)
def test_importer(options, reporter): results = [] results.append(options._import_options("firefox")) results.append(options._import_options("headless_firefox")) results.append(options._import_options("chrome")) results.append(options._import_options("headless_chrome")) results.append(options._import_options("ie")) results.append(options._import_options("opera")) results.append(options._import_options("edge")) results.append(error_formatter(options._import_options, "safari")) results.append(error_formatter(options._import_options, "htmlunit")) results.append(error_formatter(options._import_options, "htmlunit_with_js")) results.append(error_formatter(options._import_options, "iphone")) verify_all("Selenium options import", results, reporter=reporter)
def test_parse_keys(self): results = [] results.append(self.element_keywords._parse_keys("A", "B", "C")) results.append(self.element_keywords._parse_keys("AAA", "CONTROL", "C")) results.append(self.element_keywords._parse_keys("AAA", "CONTROL+B", "C")) results.append(self.element_keywords._parse_keys("CONTROL+A", "ALT+B")) results.append(self.element_keywords._parse_keys("CONTROL+ALT+b")) results.append(self.element_keywords._parse_keys("Press CTRL+C to")) results.append(self.element_keywords._parse_keys("Press CTRL++C to")) results.append(self.element_keywords._parse_keys("END+E+N+D")) results.append(self.element_keywords._parse_keys("AALTO")) results.append(self.element_keywords._parse_keys("alt")) results.append(self.element_keywords._parse_keys("IS ALT HERE")) results.append(self.element_keywords._parse_keys("IS", "ALT", "HERE")) verify_all("index", results, reporter=self.reporter)
def test_parse_keys(self): results = [] results.append(self.element_keywords._parse_keys('A', 'B', 'C')) results.append(self.element_keywords._parse_keys('AAA', 'CONTROL', 'C')) results.append(self.element_keywords._parse_keys('AAA', 'CONTROL+B', 'C')) results.append(self.element_keywords._parse_keys('CONTROL+A', 'ALT+B')) results.append(self.element_keywords._parse_keys('CONTROL+ALT+b')) results.append(self.element_keywords._parse_keys('Press CTRL+C to')) results.append(self.element_keywords._parse_keys('Press CTRL++C to')) results.append(self.element_keywords._parse_keys('END+E+N+D')) results.append(self.element_keywords._parse_keys('AALTO')) results.append(self.element_keywords._parse_keys('alt')) results.append(self.element_keywords._parse_keys('IS ALT HERE')) results.append(self.element_keywords._parse_keys('IS', 'ALT', 'HERE')) results = self.result_formatter(results) verify_all('index', results, reporter=self.reporter)
def test_check_marker_error(self): examples = [ (), ('ARGUMENTS', 'arg1', 'ARGUMENTS', 'arg1', 'JAVASCRIPT', 'code1', 'JAVASCRIPT', 'code2'), ('JAVASCRIPT', 'code1', 'JAVASCRIPT', 'code2'), ('JAVASCRIPT', 'code1', 'ARGUMENTS', 'arg1', 'ARGUMENTS', 'arg1'), ('code1', 'JAVASCRIPT', 'code1' 'ARGUMENTS', 'arg1',), ('ARGUMENTS', 'arg1', 'ARGUMENTS', 'arg1', 'JAVASCRIPT', 'code1'), ('aRGUMENtS', 'arg1', 'arg2', 'JAVASCRIPT', 'code1', 'code2'), ] examples = examples + self.code_examples all_results = [] for code in examples: all_results.append(self.js_marker_error(code)) verify_all('error', all_results, reporter=self.reporter)
def test_check_marker_error(self): examples = [ (), ('ARGUMENTS', 'arg1', 'ARGUMENTS', 'arg1', 'JAVASCRIPT', 'code1', 'JAVASCRIPT', 'code2'), ('JAVASCRIPT', 'code1', 'JAVASCRIPT', 'code2'), ('JAVASCRIPT', 'code1', 'ARGUMENTS', 'arg1', 'ARGUMENTS', 'arg1'), ('code1', 'JAVASCRIPT', 'code1' 'ARGUMENTS', 'arg1',), ('ARGUMENTS', 'arg1', 'ARGUMENTS', 'arg1', 'JAVASCRIPT', 'code1'), ('aRGUMENtS', 'arg1', 'arg2', 'JAVASCRIPT', 'code1', 'code2'), ] examples = examples + self.code_examples all_results = [] for code in examples: all_results.append(self.js_marker_error(code)) verify_all('error', all_results, reporter=self.reporter)
def test_indexing(self): all_results = [] for code in self.code_examples: all_results.append(self.js._get_marker_index(code)) verify_all('index', all_results, reporter=self.reporter)
def test_separate_code_and_args(self): all_results = [] for code in self.code_examples: all_results.append(self.js_reporter(code)) verify_all('code and args', all_results, reporter=self.reporter)