import unittest
from mozharness.mozilla.release import get_previous_version


class TestGetPreviousVersion(unittest.TestCase):
    def testESR(self):
        self.assertEquals(
            '31.5.3esr',
            get_previous_version('31.6.0esr',
                                 ['31.5.3esr', '31.5.2esr', '31.4.0esr']))

    def testReleaseBuild1(self):
        self.assertEquals(
            '36.0.4',
            get_previous_version('37.0', ['36.0.4', '36.0.1', '35.0.1']))

    def testReleaseBuild2(self):
        self.assertEquals(
            '36.0.4',
            get_previous_version('37.0',
                                 ['37.0', '36.0.4', '36.0.1', '35.0.1']))

    def testBetaMidCycle(self):
        self.assertEquals(
            '37.0b4',
            get_previous_version('37.0b5', ['37.0b4', '37.0b3']))

    def testBetaEarlyCycle(self):
        # 37.0 is the RC build
        self.assertEquals(
            '38.0b1',
            get_previous_version('38.0b2', ['38.0b1', '37.0']))

    def testBetaFirstInCycle(self):
        self.assertEquals(
            '37.0',
            get_previous_version('38.0b1', ['37.0', '37.0b7']))

    def testTwoDots(self):
        self.assertEquals(
            '37.1.0',
            get_previous_version('38.0b1', ['37.1.0', '36.0']))