Ejemplo n.º 1
0
class ElfTest(unittest.TestCase):

    def setUp(self):
        self.elf1 = Elf(1)
        self.elf2 = Elf(2)

        # soln_file = os.path.join(os.getcwd(), 'test.csv')
        # self.wcsv = csv.writer(open(soln_file, "wb"))

    def test_num_of_working_minutes_left(self):

        self.assertEquals(self.elf1.num_of_working_minutes_left(), 600)

        self.elf1.set_next_available_time(600)

        self.assertEquals(self.elf1.num_of_working_minutes_left(), 600-60)

        self.elf1.set_next_available_time(540 + 595)

        self.assertEquals(self.elf1.num_of_working_minutes_left(), 5)

        self.elf1.set_next_available_time(540 + 605)

        self.assertEquals(self.elf1.num_of_working_minutes_left(), 0)

    def test_get_productivity(self):

        self.assertEquals(self.elf1.get_productivity(), 1.0)

        self.elf1.set_productivity(2.0)

        self.assertEquals(self.elf1.get_productivity(), 2.0)

    def test_wait_till_next_day(self):

        self.assertEquals(self.elf1.get_next_available_time(), 540)

        self.elf1.set_next_available_time(700)

        self.assertEquals(self.elf1.get_next_available_time(), 700)

        self.elf1.wait_till_next_day()

        self.assertEquals(self.elf1.get_next_available_time(), 1440+(9*60))

        self.elf1.wait_till_next_day()

        self.assertEquals(self.elf1.get_next_available_time(), (2*1440)+(9*60))
Ejemplo n.º 2
0
                toy = mytoypool.get_next_longest_toy_for_elf(elf)

                if toy is not None:
                    # Etape 4 : Faire le jouet
                    elf.make_toy(toy, wcsv)
                else:
                    # On avance d'une minute
                    t = elf.get_next_available_time()
                    next_t = hrs.next_sanctioned_minute(t)
                    elf.set_next_available_time(next_t)

            # Etape 2, Cas 2 : La productivité est inférieure au seuil
            else:

                # Etape 2.2 : Calculer le nombre de minutes restantes avant la fin de la journée
                minutes_left = elf.num_of_working_minutes_left()

                # Etape 3.2 : Avec la productivité, calculer le nombre de minutes max pouvant être consacrées à un jouet
                productivity = elf.get_productivity()
                toy_max_minutes = int(minutes_left*productivity)

                # Ca de rejet
                if toy_max_minutes <= 1:
                    # On remet ça à demain
                    elf.wait_till_next_day()
                    continue


                # Etape 4.2 : Selectionner un jouet disposant d'un nombre de minutes inférieur à toy_max_minutes
                toy_expected_duration = random.randint(1, toy_max_minutes-1)
                toy_expected_duration = toy_max_minutes - 1