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 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 one_simbol_url(self):
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit(".")
     self.assertEqual(tested_object.current_page, ".");
 def middle_url(self):
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit("eightsim")
     self.assertEqual(tested_object.current_page, "eightsim"); # 8
 def twenty_simbols_url(self):
     tested_object = BrowserHistory("www.something.some")
     tested_object.visit("orethantwentysimbols")
     self.assertEqual(tested_object.current_page, "orethantwentysimbols"); # 20
 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 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_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 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 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 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");