Exemplo n.º 1
0
class SaturdayAfternoonTest:
  def __init__(self, championship):
    self.championship = championship
    self.qualification = SessionSimulator()
    self.sessions32 = []
    self.sessions16 = []
    self.sessions8 = []
    self.sessions4 = []
    self.sessions2 = []
    self.finale = None
    self.dual = self.championship.dual
    self.fake1 = self.championship.fake1
    self.chrono = self.championship.chrono
    self.beacons = self.championship.beacons
    self.elitePilots = self.championship.elitePilots
    self.openPilots = self.championship.openPilots
    self.womanPilots = self.championship.womanPilots
    self.juniorPilots = self.championship.juniorPilots
    self.eliteCategory = self.championship.eliteCategory
    self.openCategory = self.championship.openCategory
    self.womanCategory = self.championship.womanCategory
    self.juniorCategory = self.championship.juniorCategory

  def createSessions(self):
    # Add sessions
    print("---- Create session of Saturday afternoon ----")
    s1 = datetime(2000, 1, 2, 14)
    e1 = datetime(2000, 1, 2, 15)
    event = self.championship.event
    location = self.dual
    chronos = [self.fake1, self.chrono]
    pilots = self.championship.allPilots
    self.qualification.create('Saturday pm qualification', s1, e1, 'tt', location, event, chronos, self.beacons, pilots)
    for i in range(1, 33):
      sessions32_i = SessionSimulator()
      name = "Sat pm dual 32th #" + str(i)
      h, m = divmod(i * 2, 60)
      eh, em = divmod(i * 2 + 2, 60)
      sessions32_i.create(name, datetime(2000, 1, 2, 16 + h, m), datetime(2000, 1, 1, 16 + eh, em), 'rc', location, event, chronos, self.beacons)
      self.sessions32.append(sessions32_i)
    for i in range(1, 17):
      name = 'Sat pm dual 16th #' + str(i)
      sessions16_i = SessionSimulator()
      sessions16_i.create(name, datetime(2000, 1, 2, 17, 20 + i * 2), datetime(2000, 1, 1, 17, 22 + i * 2), 'rc', location, event, chronos, self.beacons)
      self.sessions16.append(sessions16_i)
    for i in range(1, 9):
      name = 'Sat pm dual 8th #' + str(i)
      sessions8_i = SessionSimulator()
      sessions8_i.create(name, datetime(2000, 1, 2, 18, i * 2), datetime(2000, 1, 1, 18, i * 2 + 2), 'rc', location, event, chronos, self.beacons)
      self.sessions8.append(sessions8_i)
    for i in range(1, 5):
      name = 'Sat pm dual 4th #' + str(i)
      sessions4_i = SessionSimulator()
      sessions4_i.create(name, datetime(2000, 1, 2, 18, 30 + i * 2), datetime(2000, 1, 1, 15, 32 + i * 2 + 2), 'rc', location, event, chronos, self.beacons)
      self.sessions4.append(sessions4_i)
    for i in range(1, 3):
      name = 'Sat pm dual 2th #' + str(i)
      sessions2_i = SessionSimulator()
      sessions2_i.create(name, datetime(2000, 1, 2, 19, i * 2), datetime(2000, 1, 1, 19, i * 2 + 2), 'rc', location, event, chronos, self.beacons)
      self.sessions2.append(sessions2_i)
    self.finale = SessionSimulator()
    self.finale.create('Sat pm dual finale', datetime(2000, 1, 2, 19, 30), datetime(2000, 1, 1, 19, 32), 'rc', location, event, chronos, self.beacons)

  def test(self):
    bestLaps = self.qualify()
    qualifiedNext = self.runSessions(bestLaps, self.sessions32)
    qualifiedNext = self.runSessions(qualifiedNext, self.sessions16)
    qualifiedNext = self.runSessions(qualifiedNext, self.sessions8)
    qualifiedNext = self.runSessions(qualifiedNext, self.sessions4)
    qualifiedNext = self.runSessions(qualifiedNext, self.sessions2)
    self.runSessions(qualifiedNext, [self.finale])

  def runFinale(self, qualified):
    print("---- Dual Finale ----")

  def runSessions(self, qualified, sessions):
    results = []
    print("---- Dual " + str(len(sessions)) + "th finale ----")
    for i in range(0, len(sessions)):
      session = sessions[i]
      session.addPilot(qualified[2 * i]['pilot'])
      session.addPilot(qualified[2 * i + 1]['pilot'])
      session.startSession()
      session.simRace(1, 10, self.chrono['id'], 0)
      session.endSession()
      # We keep winner
      sessionResults = getResultsForSession(session.session['id'])
      results.append(sessionResults[0])
      print("---- Tests Results of " + session.session['name'] + "----")
      checkLaps(getLapsForSession(session.session['id']), 2, {1: 2}, {1: 2})
      checkBestLaps(getBestLapsForSession(session.session['id']), 2, {1: 2}, {1: 2})
      checkResults(sessionResults, 2, {1: 2}, {1: 2})
    return results

  def qualify(self):

    self.qualification.startSession()
    print("---- Test #1 ----")
    self.qualification.simTimeTrial(2, 19, 20, self.fake1['id'], self.chrono['id'])
    print("---- Test #2 ----")
    self.qualification.simTimeTrial(2, 19, 20, self.fake1['id'], self.chrono['id'], startShift=30)
    self.qualification.endSession()

    print("---- Tests Results (general) ----")
    bestLaps = getBestLapsForSession(self.qualification.session['id'])
    checkBestLaps(bestLaps, 80, {}, {})

    print("---- Tests Results (Elite) ----")
    bestLapsElite = getBestLapsForSession(self.qualification.session['id'], self.eliteCategory['id'])
    checkBestLaps(bestLapsElite, len(self.elitePilots), {}, {}, 'Elite', 120000, 140000)

    print("---- Tests Results (Open) ----")
    bestLapsOpen = getBestLapsForSession(self.qualification.session['id'], self.openCategory['id'])
    checkBestLaps(bestLapsOpen, len(self.openPilots), {}, {}, 'Open', 120000, 140000)

    print("---- Tests Results (Women) ----")
    bestLapsWomen = getBestLapsForSession(self.qualification.session['id'], self.womanCategory['id'])
    checkBestLaps(bestLapsWomen, len(self.womanPilots), {}, {}, 'Woman', 120000, 140000)

    print("---- Tests Results (Junior) ----")
    bestLapsJunior = getBestLapsForSession(self.qualification.session['id'], self.juniorCategory['id'])
    checkBestLaps(bestLapsJunior, len(self.juniorPilots), {}, {}, 'Junior', 120000, 140000)

    # Find the 64 participants
    qualified = bestLapsElite[0:24] + bestLapsOpen[0:16] + bestLapsWomen[0:16] + bestLapsJunior[0:8]
    return qualified
Exemplo n.º 2
0
class FridayMorningTest:
    def __init__(self, championship):
        self.championship = championship
        self.morningTest = SessionSimulator()
        self.morningChrono = SessionSimulator()
        self.boarderCross = self.championship.boarderCross
        self.fake1 = self.championship.fake1
        self.chrono = self.championship.chrono
        self.beacons = self.championship.beacons

    def createSessions(self):
        # Add sessions
        print("---- Create session of Friday morning ----")
        s1 = datetime(2000, 1, 1, 10)
        e1 = datetime(2000, 1, 1, 11)
        event = self.championship.event
        location = self.boarderCross
        chronos = [self.fake1, self.chrono]
        pilots = self.championship.allPilots
        self.morningTest.create('Friday am tests', s1, e1, 'tt', location,
                                event, chronos, self.beacons, pilots)
        s2 = datetime(2000, 1, 1, 11)
        e2 = datetime(2000, 1, 1, 12)
        self.morningChrono.create('Friday am Chrono', s2, e2, 'tt', location,
                                  event, chronos, self.beacons)

    def test(self):
        self.borderCrossQP()
        self.borderCrossChronos()

    def borderCrossQP(self):
        # descente dans le boarder cross
        # Border cross
        # deux runs d essais (controle transpondeurs)
        # deux runs chronos
        # le meilleur retenu

        print("---- Test #1 ----")
        self.morningTest.startSession()
        self.morningTest.simTimeTrial(2,
                                      19,
                                      20,
                                      self.fake1['id'],
                                      self.chrono['id'],
                                      doNotStart=1,
                                      doNotFinish=1)
        print("---- Test #2 ----")
        self.morningTest.simTimeTrial(2,
                                      19,
                                      20,
                                      self.fake1['id'],
                                      self.chrono['id'],
                                      doNotStart=2,
                                      doNotFinish=2,
                                      startShift=30)
        # We forget to stop that one
        self.morningTest.endSession()

        print("---- Tests Results ----")
        friMorningTestsLaps = getLapsForSession(self.morningTest.session['id'])
        checkLaps(friMorningTestsLaps, 160 - 6, {1: 78, 2: 76}, {1: 2})

        friMorningTestsLapsElite = getLapsForSession(
            self.morningTest.session['id'],
            self.championship.eliteCategory['id'])
        checkLaps(friMorningTestsLapsElite, 60 - 6, {
            1: 28,
            2: 26
        }, {1: 2}, self.championship.eliteCategory['name'])

        friMorningTestsBests = getBestLapsForSession(
            self.morningTest.session['id'])
        printLaps(friMorningTestsBests, True)
        checkBestLaps(friMorningTestsBests, 78, {}, {1: 2})
        #  ---- Determine startup ----

        friMorningTestsResults = getResultsForSession(
            self.morningTest.session['id'])
        # TODO Have chart with startup list
        # TODO Check if it should count points
        checkResults(friMorningTestsResults, 80, {}, {1: 4})

        beaconsStartOrder = []
        for i in reversed(range(30)):
            self.morningChrono.addPilot(friMorningTestsResults[i]['pilot'])
        for i in range(30, 80):
            self.morningChrono.addPilot(friMorningTestsResults[i]['pilot'])

    def borderCrossChronos(self):
        # Some do 1 test
        # Some dont test
        # Some start but dont finish
        # Some finish after expected time

        print("---- Chrono #1 ----")
        self.morningChrono.startSession()
        self.morningChrono.simTimeTrial(2,
                                        19,
                                        20,
                                        self.fake1['id'],
                                        self.chrono['id'],
                                        doNotStart=1,
                                        doNotFinish=1,
                                        startShift=10)

        print("---- Chrono #2 ----")
        self.morningChrono.simTimeTrial(2,
                                        19,
                                        20,
                                        self.fake1['id'],
                                        self.chrono['id'],
                                        doNotStart=2,
                                        doNotFinish=2,
                                        startShift=45)
        self.morningTest.endSession()

        print("---- Chrono Results ----")
        # ---- Results ----
        # ---- Checks - Asserts ----
        friMorningChronoLaps = getLapsForSession(
            self.morningChrono.session['id'])
        checkLaps(friMorningChronoLaps, 160 - 6, {1: 78, 2: 76}, {1: 2})

        friMorningChronoBests = getBestLapsForSession(
            self.morningChrono.session['id'])
        checkBestLaps(friMorningChronoBests, 78, {}, {1: 2})

        friMorningChronoResults = getResultsForSession(
            self.morningChrono.session['id'])
        checkResults(friMorningChronoResults, 80, {}, {1: 4})
Exemplo n.º 3
0
class SundayMorningTest:
    def __init__(self, championship):
        self.championship = championship
        self.fake1 = self.championship.fake1
        self.fake2 = self.championship.fake2
        self.chrono = self.championship.chrono
        self.beacons = self.championship.beacons
        self.allPilots = self.championship.allPilots
        self.elitePilots = self.championship.elitePilots
        self.openPilots = self.championship.openPilots
        self.womanPilots = self.championship.womanPilots
        self.juniorPilots = self.championship.juniorPilots
        self.valette = self.championship.valette
        self.sunDerby2Elite = SessionSimulator()
        self.sunDerby2Open = SessionSimulator()
        self.sunDerby2Woman = SessionSimulator()
        self.sunDerby2Junior = SessionSimulator()
        self.redRiver = self.championship.redRiver
        self.roubines = self.championship.roubines
        self.sunDoubleRedRiver = SessionSimulator()
        self.sunDoubleRoubines = SessionSimulator()

    def createSessions(self):
        # Add sessions
        print("---- Create session of Sunday morning ----")
        valette = self.valette
        event = self.championship.event
        beacons = self.beacons
        chronos = [self.fake1, self.chrono]
        self.sunDerby2Elite.create('Sun Derby 2 - Elite',
                                   datetime(2000, 1, 3, 10, 5),
                                   datetime(2000, 1, 3, 10, 10), 'rc', valette,
                                   event, chronos, beacons, self.elitePilots)
        self.sunDerby2Open.create('Sun Derby 2 - Open',
                                  datetime(2000, 1, 3, 10, 15),
                                  datetime(2000, 1, 3, 10, 20), 'rc', valette,
                                  event, chronos, beacons, self.openPilots)
        self.sunDerby2Woman.create('Sun Derby 2 - Woman',
                                   datetime(2000, 1, 3, 10, 25),
                                   datetime(2000, 1, 3, 10, 30), 'rc', valette,
                                   event, chronos, beacons, self.womanPilots)
        self.sunDerby2Junior.create('Sun Derby 2 - Junior',
                                    datetime(2000, 1, 3, 10, 35),
                                    datetime(2000, 1, 3, 10,
                                             40), 'rc', valette, event,
                                    chronos, beacons, self.juniorPilots)
        chronos2 = [self.fake2, self.chrono]
        redRiver = self.redRiver
        roubines = self.roubines
        allPilots = self.allPilots
        self.sunDoubleRedRiver.create('Sun Double - Red River',
                                      datetime(2000, 1, 3, 11, 0),
                                      datetime(2000, 1, 3, 13,
                                               00), 'tt', redRiver, event,
                                      chronos, beacons, allPilots)
        self.sunDoubleRoubines.create('Sun Double - Roubines',
                                      datetime(2000, 1, 3, 11, 0),
                                      datetime(2000, 1, 3, 13,
                                               00), 'tt', roubines, event,
                                      chronos2, beacons, allPilots)

    def test(self):
        self.testDerby()
        self.testDouble()

    def testDouble(self):
        print("---- Double of Sunday morning ----")
        print("-- First runs")
        self.sunDoubleRedRiver.startSession()
        self.sunDoubleRoubines.startSession()
        print(" Elite and Junior run in Red River")
        self.sunDoubleRedRiver.pilots = self.elitePilots + self.juniorPilots
        self.sunDoubleRedRiver.simTimeTrial(3, 59, 10, self.fake1['id'],
                                            self.chrono['id'])
        print(" Open and Women run in Roubines")
        self.sunDoubleRoubines.pilots = self.openPilots + self.womanPilots
        self.sunDoubleRoubines.simTimeTrial(3, 59, 10, self.fake2['id'],
                                            self.chrono['id'])
        print(" Open and Women run in Red River")
        self.sunDoubleRedRiver.pilots = self.openPilots + self.womanPilots
        self.sunDoubleRedRiver.simTimeTrial(3,
                                            59,
                                            10,
                                            self.fake1['id'],
                                            self.chrono['id'],
                                            startShift=20)
        print(" Elite and Junior run in Roubines")
        self.sunDoubleRoubines.pilots = self.elitePilots + self.juniorPilots
        self.sunDoubleRoubines.simTimeTrial(3,
                                            59,
                                            10,
                                            self.fake2['id'],
                                            self.chrono['id'],
                                            startShift=20)
        print("-- Second runs")
        print(" Elite improve in Red River")
        self.sunDoubleRedRiver.pilots = self.elitePilots
        self.sunDoubleRedRiver.simTimeTrial(2,
                                            59,
                                            10,
                                            self.fake1['id'],
                                            self.chrono['id'],
                                            startShift=45)
        print(" Open dont improve in Red River")
        self.sunDoubleRedRiver.pilots = self.openPilots
        self.sunDoubleRedRiver.simTimeTrial(4,
                                            59,
                                            10,
                                            self.fake1['id'],
                                            self.chrono['id'],
                                            startShift=60)
        print(" Women improve in Roubines")
        self.sunDoubleRoubines.pilots = self.womanPilots
        self.sunDoubleRoubines.simTimeTrial(2,
                                            59,
                                            10,
                                            self.fake2['id'],
                                            self.chrono['id'],
                                            startShift=45)
        print(" Junior dont improve in Roubines")
        self.sunDoubleRoubines.pilots = self.juniorPilots
        self.sunDoubleRoubines.simTimeTrial(4,
                                            59,
                                            10,
                                            self.fake2['id'],
                                            self.chrono['id'],
                                            startShift=60)
        self.sunDoubleRedRiver.endSession()
        self.sunDoubleRoubines.endSession()
        print("---- Tests Results (general) ----")
        bestLapsRedRiver = getBestLaps(self.redRiver['id'])
        bestLapsRoubines = getBestLaps(self.roubines['id'])
        checkBestLaps(bestLapsRedRiver, 80, {
            2: 30,
            1: 50
        }, {
            1: 30,
            2: 50
        }, None, 120000, 240000)
        checkBestLaps(bestLapsRoubines, 80, {
            2: 20,
            1: 60
        }, {
            1: 50,
            2: 30
        }, None, 120000, 240000)

    def testDerby(self):
        print("---- Derby of Sunday morning ----")
        self.sunDerby2Elite.startSession()
        self.sunDerby2Elite.simRace(3, 10, self.chrono['id'])
        self.sunDerby2Elite.endSession()
        print("---- Tests Results of " + self.sunDerby2Elite.session['name'] +
              "----")
        checkLaps(getLapsForSession(self.sunDerby2Elite.session['id']),
                  len(self.elitePilots), {1: len(self.elitePilots)},
                  {1: len(self.elitePilots)}, 'Elite', 180000, 190000)
        checkBestLaps(getBestLapsForSession(self.sunDerby2Elite.session['id']),
                      len(self.elitePilots), {1: len(self.elitePilots)},
                      {1: len(self.elitePilots)}, 'Elite', 180000, 190000)
        checkResults(getResultsForSession(self.sunDerby2Elite.session['id']),
                     len(self.elitePilots), {1: len(self.elitePilots)},
                     {1: len(self.elitePilots)}, 'Elite', 180000, 190000)

        self.sunDerby2Open.startSession()
        self.sunDerby2Open.simRace(3, 20, self.chrono['id'])
        # We forget to end that one
        #self.sunDerby2Open.endSession()
        print("---- Tests Results of " + self.sunDerby2Open.session['name'] +
              "----")
        checkLaps(getLapsForSession(self.sunDerby2Open.session['id']),
                  len(self.openPilots), {1: len(self.openPilots)},
                  {1: len(self.openPilots)}, 'Open', 180000, 200000)
        checkBestLaps(getBestLapsForSession(self.sunDerby2Open.session['id']),
                      len(self.openPilots), {1: len(self.openPilots)},
                      {1: len(self.openPilots)}, 'Open', 180000, 200000)
        checkResults(getResultsForSession(self.sunDerby2Open.session['id']),
                     len(self.openPilots), {1: len(self.openPilots)},
                     {1: len(self.openPilots)}, 'Open', 180000, 200000)

        self.sunDerby2Woman.startSession()
        self.sunDerby2Woman.simRace(3, 30, self.chrono['id'])
        self.sunDerby2Woman.endSession()
        checkLaps(getLapsForSession(self.sunDerby2Woman.session['id']),
                  len(self.womanPilots), {1: len(self.womanPilots)},
                  {1: len(self.womanPilots)}, 'Woman', 180000, 210000)
        checkBestLaps(getBestLapsForSession(self.sunDerby2Woman.session['id']),
                      len(self.womanPilots), {1: len(self.womanPilots)},
                      {1: len(self.womanPilots)}, 'Woman', 180000, 210000)
        checkResults(getResultsForSession(self.sunDerby2Woman.session['id']),
                     len(self.womanPilots), {1: len(self.womanPilots)},
                     {1: len(self.womanPilots)}, 'Woman', 180000, 210000)

        self.sunDerby2Junior.startSession()
        self.sunDerby2Junior.simRace(3, 40, self.chrono['id'])
        self.sunDerby2Junior.endSession()
        checkLaps(getLapsForSession(self.sunDerby2Junior.session['id']),
                  len(self.juniorPilots), {1: len(self.juniorPilots)},
                  {1: len(self.juniorPilots)}, 'Junior', 180000, 220000)
        checkBestLaps(
            getBestLapsForSession(self.sunDerby2Junior.session['id']),
            len(self.juniorPilots), {1: len(self.juniorPilots)},
            {1: len(self.juniorPilots)}, 'Junior', 180000, 220000)
        checkResults(getResultsForSession(self.sunDerby2Junior.session['id']),
                     len(self.juniorPilots), {1: len(self.juniorPilots)},
                     {1: len(self.juniorPilots)}, 'Junior', 180000, 220000)