def with_numbers_homepage(self): # Numbers
     self.assertEqual(BrowserHistory("somethingwith0").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwith1").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwith2").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwith3").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwith4").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwith5").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwith6").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwith7").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwith8").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwith9").homepage, "www.browser_fail_FAQ.com");
    def history_generation(self):
        tested_object = BrowserHistory(".");
        urls = list( permutations(['a', 'b', 'c', 'd', 'e', 'f', 'g']) ) #5040 variants
        for i in range(5000):
            perm_as_normal_string = ''.join(urls[i]);
            tested_object.visit(perm_as_normal_string);

        last_perm = ''.join(urls[i])
        pre_last_perm = ''.join(urls[i-1])
        first_perm = ''.join(urls[0])
        second_perm = ''.join(urls[1])
        ten_step_ago_perm = ''.join(urls[i-10])
        ten_step_from_start_perm = ''.join(urls[10])
        return tested_object, last_perm, pre_last_perm, first_perm, second_perm, ten_step_ago_perm, ten_step_from_start_perm;
 def middle_homepage(self):
     self.assertEqual(BrowserHistory("eightsim").homepage, "eightsim"); # 8
 def with_spaces_homepage(self):
     self.assertEqual(BrowserHistory("somethingwith ").homepage, "www.browser_fail_FAQ.com"); #space
     self.assertEqual(BrowserHistory("somethingwith  ").homepage, "www.browser_fail_FAQ.com"); #\t
 def normal_homepage(self):
     self.assertEqual(BrowserHistory("www.something.some").homepage, "www.something.some");
 def one_simbol_url(self):
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit(".")
     self.assertEqual(tested_object.current_page, ".");
 def twenty_simbols_url(self):
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit("orethantwentysimbols")
     self.assertEqual(tested_object.current_page, "orethantwentysimbols"); # 20
 def creation_test(self):
     tested_object = BrowserHistory("www.something.some")
     self.assertEqual(tested_object.homepage, "www.something.some")
     self.assertEqual(tested_object.current_page, "www.something.some")
 def with_special_simbols_url(self): # Special simbols
     tested_object = BrowserHistory("www.something.some")
     #math
     tested_object.visit("somethingwith-")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith+")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith*")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith/")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith%")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith=")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     #punctuation
     tested_object.visit("somethingwith!")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith?")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith,")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith;")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith:")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     #breack
     tested_object.visit("somethingwith(")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith)")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith[")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith]")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith{")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith}")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith>")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith<")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     #other
     tested_object.visit("somethingwith`")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith~")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith'")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith\"")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith_")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith@")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith#")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith$")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith^")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith&")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith|")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
 def with_numbers_url(self): # Numbers
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit("somethingwith0")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith1")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith2")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith3")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith4")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith5")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith6")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith7")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith8")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwith9")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
 def no_string_type_url(self):
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit(2)
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
 def normal_url(self):
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit("www.anything.some")
     self.assertEqual(tested_object.current_page, "www.anything.some");
 def with_unsupported_lang_homepage(self):
     self.assertEqual(BrowserHistory("שדגי").homepage, "www.browser_fail_FAQ.com"); #space
     self.assertEqual(BrowserHistory("Текст").homepage, "www.browser_fail_FAQ.com"); #\t
 def one_simbol_homepage(self):
     self.assertEqual(BrowserHistory(".").homepage, ".");
 def with_big_case_url(self):
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit("somethingwithA")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithB")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithC")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithD")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithE")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithF")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithG")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithH")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithI")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithJ")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithK")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithL")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithM")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithN")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithO")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithP")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithR")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithS")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithT")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithQ")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithU")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithV")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithW")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithX")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithY")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("somethingwithZ")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
 def void_url(self):
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit("")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com"); # 0
 def with_spaces_url(self):
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit("somethingwith ")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com"); #space
     tested_object.visit("somethingwith  ")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com"); #\t
 def morethantwentysimbols_url(self):
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit("morethantwentysimbols")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com"); # 21
 def with_unsupported_lang_url(self):
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit("שדגי")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
     tested_object.visit("Текст")
     self.assertEqual(tested_object.current_page, "www.browser_fail_FAQ.com");
 def middle_url(self):
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit("eightsim")
     self.assertEqual(tested_object.current_page, "eightsim"); # 8
 def void_homepage(self):
     self.assertEqual(BrowserHistory("").homepage, "www.browser_fail_FAQ.com"); # 0
 def scenary_test(self):
     tested_object = BrowserHistory("github.com");
     self.assertEqual(tested_object.current_page, "github.com");
     tested_object.visit("google.com");
     self.assertEqual(tested_object.current_page, "google.com");
     tested_object.visit("facebook.com");
     self.assertEqual(tested_object.current_page, "facebook.com");
     tested_object.visit("youtube.com");
     self.assertEqual(tested_object.current_page, "youtube.com");
     self.assertEqual(tested_object.back(1), "facebook.com");
     self.assertEqual(tested_object.back(1), "google.com");
     self.assertEqual(tested_object.forward(1), "facebook.com");
     tested_object.visit("linkedin.com");
     self.assertEqual(tested_object.current_page, "linkedin.com");
     self.assertEqual(tested_object.forward(2), "linkedin.com");
     self.assertEqual(tested_object.back(2), "facebook.com");
     self.assertEqual(tested_object.back(7), "github.com");
 def morethantwentysimbols_homepage(self):
     self.assertEqual(BrowserHistory("morethantwentysimbols").homepage, "www.browser_fail_FAQ.com"); # 21
 def no_string_type_homepage(self):
     self.assertEqual(BrowserHistory(2).homepage, "www.browser_fail_FAQ.com");
 def twenty_simbols_homepage(self):
     self.assertEqual(BrowserHistory("orethantwentysimbols").homepage, "orethantwentysimbols"); # 20
    def with_special_simbols_homepage(self): # Special simbols
        #math
        self.assertEqual(BrowserHistory("somethingwith-").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith+").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith*").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith/").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith%").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith=").homepage, "www.browser_fail_FAQ.com");

        #punctuation
        self.assertEqual(BrowserHistory("somethingwith!").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith?").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith,").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith;").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith:").homepage, "www.browser_fail_FAQ.com");

        #breack
        self.assertEqual(BrowserHistory("somethingwith(").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith)").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith[").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith]").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith{").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith}").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith<").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith>").homepage, "www.browser_fail_FAQ.com");

        #other
        self.assertEqual(BrowserHistory("somethingwith`").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith~").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith'").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith\"").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith_").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith@").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith#").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith$").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith^").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith&").homepage, "www.browser_fail_FAQ.com");
        self.assertEqual(BrowserHistory("somethingwith|").homepage, "www.browser_fail_FAQ.com");
 def with_big_case_homepage(self):
     self.assertEqual(BrowserHistory("somethingwithA").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithB").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithC").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithD").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithE").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithF").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithG").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithH").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithI").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithJ").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithK").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithL").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithM").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithN").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithO").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithP").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithR").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithS").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithT").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithQ").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithU").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithV").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithW").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithX").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithY").homepage, "www.browser_fail_FAQ.com");
     self.assertEqual(BrowserHistory("somethingwithZ").homepage, "www.browser_fail_FAQ.com");