def test_0_to_5_dated(self):
        calc = Calc(
            date=datetime.date(2020, 1, 23),
            items=[
                Item(is_left_win=False, date=datetime.date(2016, 1, 6)),
                Item(is_left_win=False, date=datetime.date(2017, 1, 4)),
                Item(is_left_win=False, date=datetime.date(2018, 1, 7)),
                Item(is_left_win=False, date=datetime.date(2019, 1, 5)),
                Item(is_left_win=False, date=datetime.date(2020, 1, 9)),
            ],
            time_discount=self.time_discount,
        )
        direct = calc.direct(small_size_adjust=False)
        print("0-5 dated direct", direct)
        self.assertTrue(0.0 < direct < 0.4, "direct: {}".format(direct))

        direct_adj = calc.direct(small_size_adjust=True)
        print("0-5 dated direct_adj", direct_adj)
        self.assertTrue(0.0 < direct < 0.4, "direct: {}".format(direct_adj))
    def test_1_to_0(self):
        calc = Calc(
            date=None,
            items=[Item(is_left_win=True, date=None)],
            time_discount=self.time_discount,
        )
        direct = calc.direct(small_size_adjust=False)
        self.assertTrue(direct == 1.0, "direct: {}".format(direct))

        direct_adj = calc.direct(small_size_adjust=True)
        print("1-0 direct_adj", direct_adj)
        self.assertTrue(0.75 < direct_adj <= 0.8,
                        "direct: {}".format(direct_adj))
    def test_1_to_0_dated(self):
        calc = Calc(
            date=datetime.date(2020, 1, 23),
            items=[Item(is_left_win=True, date=datetime.date(2020, 1, 6))],
            time_discount=self.time_discount,
        )
        direct = calc.direct(small_size_adjust=False)
        print("1-0 dated direct", direct)
        self.assertTrue(0.97 < direct < 1.0, "direct: {}".format(direct))

        direct_adj = calc.direct(small_size_adjust=True)
        print("1-0 dated direct_adj", direct_adj)
        self.assertTrue(0.75 < direct_adj <= 0.8,
                        "direct_adj: {}".format(direct_adj))
 def test_3_to_4_dated_asc(self):
     calc = Calc(
         date=datetime.date(2020, 1, 23),
         items=[
             Item(is_left_win=True, date=datetime.date(2015, 1, 9)),
             Item(is_left_win=True, date=datetime.date(2016, 1, 6)),
             Item(is_left_win=True, date=datetime.date(2017, 1, 4)),
             Item(is_left_win=False, date=datetime.date(2018, 1, 7)),
             Item(is_left_win=False, date=datetime.date(2019, 1, 5)),
             Item(is_left_win=False, date=datetime.date(2020, 1, 1)),
             Item(is_left_win=False, date=datetime.date(2020, 1, 9)),
         ],
         time_discount=self.time_discount,
     )
     direct = calc.direct()
     print("3-4 dated asc direct", direct)
     self.assertTrue(0.35 < direct < 0.5, "direct: {}".format(direct))
 def test_10old_to_3now_dated(self):
     calc = Calc(
         date=datetime.date(2020, 1, 23),
         items=[
             Item(is_left_win=True, date=datetime.date(2010, 1, 6)),
             Item(is_left_win=True, date=datetime.date(2010, 1, 4)),
             Item(is_left_win=True, date=datetime.date(2010, 1, 7)),
             Item(is_left_win=True, date=datetime.date(2010, 1, 5)),
             Item(is_left_win=True, date=datetime.date(2010, 1, 9)),
             Item(is_left_win=True, date=datetime.date(2010, 1, 6)),
             Item(is_left_win=True, date=datetime.date(2010, 1, 4)),
             Item(is_left_win=True, date=datetime.date(2010, 1, 7)),
             Item(is_left_win=True, date=datetime.date(2010, 1, 5)),
             Item(is_left_win=True, date=datetime.date(2010, 1, 1)),
             Item(is_left_win=False, date=datetime.date(2020, 1, 9)),
             Item(is_left_win=False, date=datetime.date(2020, 1, 9)),
             Item(is_left_win=False, date=datetime.date(2020, 1, 9)),
         ],
         time_discount=self.time_discount,
     )
     direct = calc.direct()
     print("10old-3now direct", direct)
     self.assertTrue(0.6 < direct < 1.0, "direct: {}".format(direct))
 def test_10_to_1_dated(self):
     calc = Calc(
         date=datetime.date(2020, 1, 23),
         items=[
             Item(is_left_win=True, date=datetime.date(2011, 1, 6)),
             Item(is_left_win=True, date=datetime.date(2012, 1, 4)),
             Item(is_left_win=True, date=datetime.date(2013, 1, 7)),
             Item(is_left_win=True, date=datetime.date(2014, 1, 5)),
             Item(is_left_win=True, date=datetime.date(2015, 1, 9)),
             Item(is_left_win=True, date=datetime.date(2016, 1, 6)),
             Item(is_left_win=True, date=datetime.date(2017, 1, 4)),
             Item(is_left_win=True, date=datetime.date(2018, 1, 7)),
             Item(is_left_win=True, date=datetime.date(2019, 1, 5)),
             Item(is_left_win=True, date=datetime.date(2020, 1, 1)),
             Item(is_left_win=False, date=datetime.date(2020, 1, 9)),
         ],
         time_discount=self.time_discount,
     )
     direct = calc.direct(small_size_adjust=False)
     print("10-1 dated direct", direct)
     self.assertTrue(0.88 < direct < 1.0, "direct: {}".format(direct))