def testMatch(self): ad = Adata('age-chrome.json') self.assertTrue(ad.getDate(['20']) >= \ ad.getDate(['12']) >= \ ad.getDate(['10']) >= \ ad.getDate(['5']) >= \ ad.getDate(['1']))
def test0thDelta2(self): ad = Adata('age-msie.json') ad.releases = [] ad.releases.append(ReleaseItem(['1', '9', '0'], date(2000, 1, 1))) ad.releases.append(ReleaseItem(['2', '0', '0'], date(2000, 1, 2))) ad.loadDeltas() self.assertEqual(len(ad.deltas.viewkeys()), 1) self.assertTrue(ad.deltas.get(0)) for d in ad.deltas[0]: self.assertEqual(d['delta'].days, 1)
class BrpSafari(BrowserParser): def __init__(self): super(BrpSafari, self).__init__() self.ageData = AgeData('age-safari.json') def getParseOrder(self): return 5 def doesMatch(self, ua): return ua and 'safari' in ua def getBrowser(self): return 'safari' def getReleaseDate(self, ua): """ http://en.wikipedia.org/wiki/Safari_version_history """ #matches = re.compile('safari/[a-z0-9\.]*').search(ua) matches = re.compile('version/[a-z0-9\.]*').search(ua) if not matches: return None self.verfull = matches.group().split('/') self.vernums = self.verfull[1].split('.') return self.ageData.getDate(self.vernums)
class BrpMsie(BrowserParser): def __init__(self): super(BrpMsie, self).__init__() self.ageData = AgeData('age-msie.json') def getParseOrder(self): return 3 def doesMatch(self, ua): return ua and 'msie' in ua def getBrowser(self): return 'msie' def getReleaseDate(self, ua): """http://en.wikipedia.org/wiki/Timeline_of_web_browsers""" matches = re.compile('msie [a-z0-9\.]*').search(ua) if not matches: return None self.verfull = matches.group().split(' ') self.vernums = self.verfull[1].split('.') return self.ageData.getDate(self.vernums)
class BrpMsie(BrowserParser): def __init__(self): super(BrpMsie, self).__init__() self.ageData = AgeData("age-msie.json") def getParseOrder(self): return 3 def doesMatch(self, ua): return ua and "msie" in ua def getBrowser(self): return "msie" def getReleaseDate(self, ua): """http://en.wikipedia.org/wiki/Timeline_of_web_browsers""" matches = re.compile("msie [a-z0-9\.]*").search(ua) if not matches: return None self.verfull = matches.group().split(" ") self.vernums = self.verfull[1].split(".") return self.ageData.getDate(self.vernums)
class BrpFirefox(BrowserParser): def __init__(self): super(BrpFirefox, self).__init__() self.ageData = AgeData("age-firefox.json") def getParseOrder(self): return 2 def doesMatch(self, ua): return ua and "firefox" in ua def getBrowser(self): return "firefox" def getReleaseDate(self, ua): # https://wiki.mozilla.org/Releases/Old/2011 matches = re.compile("firefox/[a-z0-9\.]*").search(ua) if not matches: return None self.verfull = matches.group().split("/") self.vernums = self.verfull[1].split(".") return self.ageData.getDate(self.vernums)
class BrpOpera(BrowserParser): def __init__(self): super(BrpOpera, self).__init__() self.ageData = AgeData("age-opera.json") def getParseOrder(self): return 4 def doesMatch(self, ua): return ua and "opera" in ua def getBrowser(self): return "opera" def getReleaseDate(self, ua): """ http://www.opera.com/docs/history/#o1202 """ matches = re.compile("version/[a-z0-9\.]*").search(ua) if not matches: return None self.verfull = matches.group().split("/") self.vernums = self.verfull[1].split(".") return self.ageData.getDate(self.vernums)
class BrpFirefox(BrowserParser): def __init__(self): super(BrpFirefox, self).__init__() self.ageData = AgeData('age-firefox.json') def getParseOrder(self): return 2 def doesMatch(self, ua): return ua and 'firefox' in ua def getBrowser(self): return 'firefox' def getReleaseDate(self, ua): # https://wiki.mozilla.org/Releases/Old/2011 matches = re.compile('firefox/[a-z0-9\.]*').search(ua) if not matches: return None self.verfull = matches.group().split('/') self.vernums = self.verfull[1].split('.') return self.ageData.getDate(self.vernums)
class BrpChrome(BrowserParser): def __init__(self): super(BrpChrome, self).__init__() self.ageData = AgeData('age-chrome.json', propLimit=0) def getParseOrder(self): return 1 def doesMatch(self, ua): return ua and 'chrome' in ua def getBrowser(self): return 'chrome' def getReleaseDate(self, ua): # http://www.oldapps.com/google_chrome.php matches = re.compile('chrome/[a-z0-9\.]*').search(ua) if not matches: return None self.verfull = matches.group().split('/') self.vernums = self.verfull[1].split('.') return self.ageData.getDate(self.vernums)
class BrpWebkit(BrowserParser): def __init__(self): super(BrpWebkit, self).__init__() self.ageData = AgeData("age-webkit.json") def getParseOrder(self): return 6 def doesMatch(self, ua): return ua and "webkit" in ua def getBrowser(self): return "webkit" def getReleaseDate(self, ua): """ http://en.wikipedia.org/wiki/Safari_version_history """ matches = re.compile("safari/[a-z0-9\.]*").search(ua) if not matches: return None self.verfull = matches.group().split("/") self.vernums = self.verfull[1].split(".") return self.ageData.getDate(self.vernums)
class BrpWebkit(BrowserParser): def __init__(self): super(BrpWebkit, self).__init__() self.ageData = AgeData('age-webkit.json') def getParseOrder(self): return 6 def doesMatch(self, ua): return ua and 'webkit' in ua def getBrowser(self): return 'webkit' def getReleaseDate(self, ua): """ http://en.wikipedia.org/wiki/Safari_version_history """ matches = re.compile('safari/[a-z0-9\.]*').search(ua) if not matches: return None self.verfull = matches.group().split('/') self.vernums = self.verfull[1].split('.') return self.ageData.getDate(self.vernums)
class BrpOpera(BrowserParser): def __init__(self): super(BrpOpera, self).__init__() self.ageData = AgeData('age-opera.json') def getParseOrder(self): return 4 def doesMatch(self, ua): return ua and 'opera' in ua def getBrowser(self): return 'opera' def getReleaseDate(self, ua): """ http://www.opera.com/docs/history/#o1202 """ matches = re.compile('version/[a-z0-9\.]*').search(ua) if not matches: return None self.verfull = matches.group().split('/') self.vernums = self.verfull[1].split('.') return self.ageData.getDate(self.vernums)
class BrpChrome(BrowserParser): def __init__(self): super(BrpChrome, self).__init__() self.ageData = AgeData("age-chrome.json", propLimit=0) def getParseOrder(self): return 1 def doesMatch(self, ua): return ua and "chrome" in ua def getBrowser(self): return "chrome" def getReleaseDate(self, ua): # http://www.oldapps.com/google_chrome.php # http://googlechromereleases.blogspot.com/search/label/Stable%20updates matches = re.compile("chrome/[a-z0-9\.]*").search(ua) if not matches: return None self.verfull = matches.group().split("/") self.vernums = self.verfull[1].split(".") return self.ageData.getDate(self.vernums)
def __init__(self): super(BrpWebkit, self).__init__() self.ageData = AgeData("age-webkit.json")
def __init__(self): super(BrpSafari, self).__init__() self.ageData = AgeData("age-safari.json")
def __init__(self): super(BrpWebkit, self).__init__() self.ageData = AgeData('age-webkit.json')
def __init__(self): super(BrpOpera, self).__init__() self.ageData = AgeData("age-opera.json")
def __init__(self): super(BrpChrome, self).__init__() self.ageData = AgeData('age-chrome.json', propLimit=0)
def test0thDeltaWithSteps(self): ad = Adata('age-msie.json') # CREATE ad.releases = [] ad.releases.append(ReleaseItem(['0', '9', '0'], date(2000, 1, 1))) ad.releases.append(ReleaseItem(['1', '1', '0'], date(2000, 1, 3))) ad.releases.append(ReleaseItem(['1', '2', '0'], date(2000, 1, 4))) ad.releases.append(ReleaseItem(['2'], date(2000, 1, 5))) ad.releases.sort() ad.normalizeVersionLengths() ad.loadDeltas() # VALIDATE LOADING self.assertEqual(len(ad.deltas.viewkeys()), 2) self.assertTrue(ad.deltas.get(0)) self.assertTrue(ad.deltas.get(1)) for d in ad.deltas[0]: self.assertEqual(d['delta'].days, 2) self.assertEqual(ad.deltasAvg[0], timedelta(2)) # VALIDATE PROPAGATION self.assertEqual(ad.getDate([3,0,0]), date(2000,1,7)) print ad.getDate([3,0,0]) print ad.getDate([4,0,0]) print ad.getDate([3,5,0]) print ad.getDate([3,0,1]) print ad.getDate([3,0,0,1]) print ad.getDate([2,5,0,1])
def __init__(self): super(BrpSafari, self).__init__() self.ageData = AgeData('age-safari.json')
def __init__(self): super(BrpFirefox, self).__init__() self.ageData = AgeData('age-firefox.json')
def __init__(self): super(BrpChrome, self).__init__() self.ageData = AgeData("age-chrome.json", propLimit=0)
def test0thDeltaWithSteps(self): ad = Adata('age-msie.json') # CREATE ad.releases = [] ad.releases.append(ReleaseItem(['0', '9', '0'], date(2000, 1, 1))) ad.releases.append(ReleaseItem(['1', '1', '0'], date(2000, 1, 3))) ad.releases.append(ReleaseItem(['1', '2', '0'], date(2000, 1, 4))) ad.releases.append(ReleaseItem(['2'], date(2000, 1, 5))) ad.releases.sort() ad.normalizeVersionLengths() ad.loadDeltas() # VALIDATE LOADING self.assertEqual(len(ad.deltas.viewkeys()), 2) self.assertTrue(ad.deltas.get(0)) self.assertTrue(ad.deltas.get(1)) for d in ad.deltas[0]: self.assertEqual(d['delta'].days, 2) self.assertEqual(ad.deltasAvg[0], timedelta(2)) # VALIDATE PROPAGATION self.assertEqual(ad.getDate([3, 0, 0]), date(2000, 1, 7)) print ad.getDate([3, 0, 0]) print ad.getDate([4, 0, 0]) print ad.getDate([3, 5, 0]) print ad.getDate([3, 0, 1]) print ad.getDate([3, 0, 0, 1]) print ad.getDate([2, 5, 0, 1])
def __init__(self): super(BrpFirefox, self).__init__() self.ageData = AgeData("age-firefox.json")
def __init__(self): super(BrpOpera, self).__init__() self.ageData = AgeData('age-opera.json')
def __init__(self): super(BrpMsie, self).__init__() self.ageData = AgeData("age-msie.json")
def __init__(self): super(BrpMsie, self).__init__() self.ageData = AgeData('age-msie.json')