Exemple #1
0
    def setUp(self):
        self.bs_date = samwat(2073, 7, 28)
        self.ad_date = date(2016, 11, 13)

        self.bs_today = samwat.today()
        self.ad_today = date.today()

        if sys.version_info < (3, 0):
            # in python version less than 3 assertRaisesRegex is assertRaisesRegexp
            self.assertRaisesRegex = self.assertRaisesRegexp
Exemple #2
0
    def test_from_iso(self):
        self.assertEqual(samwat.from_iso("2073-07-28"), samwat(2073, 7, 28))

        invalid_datestrs = [
            "207307,28",
            "rubbish",
        ]

        for datestr in invalid_datestrs:
            with self.subTest(datestr=datestr):
                with self.assertRaisesRegex(ValueError,
                                            "Invalid datestr provided."):
                    samwat.from_iso(datestr)
Exemple #3
0
    def test__sub__(self):
        ten_days_early_bs = samwat(2073, 7, 18)

        # test that we can subtract datetime.timedelta
        self.assertEqual(self.bs_date - timedelta(days=10), ten_days_early_bs)

        # test that we can subtract bikram.samwat
        self.assertEqual(self.bs_date - ten_days_early_bs, timedelta(days=10))

        # test that we can also subtract datetime.date
        self.assertEqual(self.bs_date - date(2016, 11, 3), timedelta(days=10))

        # test that exception is raised while trying to subtract something other than
        # datetime.timedelta, datetime.date and bikram.samwat
        _msg = ('Subtraction only supported for datetime.timedelta, '
                'datetime.date and bikram.samwat types, not')
        with self.assertRaisesRegex(TypeError, _msg):
            self.bs_date - 10
Exemple #4
0
def calculate(vehicle_registration_type, vehicle, cubic_centimeter_capacity,
              valid_upto):

    dates = list((valid_upto.split('-')))

    small_vehicle = ['CAR', 'JEEP', 'VAN', 'MICRO-BUS']
    power_vehicle = [
        'DOZER', 'EXCAVATOR', 'LOADER', 'ROLLER', 'TIPPER', 'CRANE',
        'MINI-TIPPER', 'TRACTOR', 'POWER-TILLER', 'MINI-TRUCK', 'MINI-BUS',
        'BUS', 'TRUCK'
    ]
    vehicle = vehicle.upper()
    tax = int()

    if (int(dates[2]) == 2076):
        year = '_' + '2075'

    else:
        year = '_' + dates[2]

    if vehicle_registration_type == 'private':
        database_link = sqlite3.connect('private.db')

    elif vehicle_registration_type == 'public':
        database_link = sqlite3.connect('public.db')

    if vehicle == 'MOTORCYCLE':
        cursor = database_link.execute('SELECT CC_BEG, CC_END, ' + year +
                                       ' FROM MOTORCYCLE')

        for row in cursor:
            if cubic_centimeter_capacity >= row[
                    0] and cubic_centimeter_capacity <= row[1]:
                tax = row[2]

    elif vehicle in small_vehicle:
        cursor = database_link.execute('SELECT CC_BEG, CC_END, ' + year +
                                       ' FROM SMALL_VEH')

        for row in cursor:
            if (row[0] <= cubic_centimeter_capacity
                    and row[1] >= cubic_centimeter_capacity):
                tax = row[2]

    elif vehicle in power_vehicle:
        cursor = database_link.execute('SELECT TYPE, ' + year +
                                       ' FROM POWER_VEH')

        for row in cursor:
            if row[0] == vehicle:
                tax = row[1]

    temp = valid_upto
    valid_upto = samwat(int(dates[2]), int(dates[1]), int(dates[0]))
    current_date = samwat.from_ad(date.today())

    validity = valid_upto + timedelta(days=365)
    validity = validity.as_tuple()
    validity = str(validity[2]) + '-' + str(validity[1]) + '-' + str(
        validity[0])

    number_of_days_left = current_date - valid_upto
    number_of_days_left = number_of_days_left.days

    if number_of_days_left <= 0:
        return 0, temp

    penalty_free_date = valid_upto.as_tuple()

    if (penalty_free_date[1] + 3 > 12):
        penalty_free_date = samwat(penalty_free_date[0] + 1, 1, 1)
        penalty_free_date = penalty_free_date - timedelta(days=1)

    else:
        penalty_free_date = samwat(penalty_free_date[0],
                                   penalty_free_date[1] + 3,
                                   penalty_free_date[2])

    if (penalty_free_date >= current_date):
        return tax, validity

    days_exceeded = current_date - penalty_free_date
    days_exceeded = days_exceeded.days

    if days_exceeded <= 30:
        tax = tax + (0.05 * tax)

    elif days_exceeded <= 45:
        tax = tax + (0.1 * tax)

    else:
        current_date = current_date.as_tuple()

        if current_date[0] == int(dates[2]):
            tax = tax + (0.2 * tax)

        else:
            tax = tax + (0.32 * tax)

    return tax, validity
Exemple #5
0
 def test__iadd__(self):
     some_bs_date = samwat(2052, 6, 1)
     some_bs_date += timedelta(days=5)
     self.assertEqual(some_bs_date, samwat(2052, 6, 6))
     self.assertEqual(some_bs_date.ad, date(1995, 9, 22))
Exemple #6
0
 def test_replace(self):
     self.assertEqual(self.bs_date.replace(2025, 11, 4),
                      samwat(2025, 11, 4))
     self.assertEqual(self.bs_date.replace(2026, 8, 4), samwat(2026, 8, 4))
Exemple #7
0
 def test_convert_bs_to_ad(self):
     self.assertEqual(convert_bs_to_ad(samwat(2072, 7, 5)),
                      date(2015, 10, 22))
     self.assertEqual(convert_bs_to_ad(samwat(2071, 6, 14)),
                      date(2014, 9, 30))
Exemple #8
0
 def test__lt__(self):
     self.assertTrue(samwat(2073, 3, 4) < samwat(2073, 3, 5))
     self.assertTrue(samwat(2073, 7, 27) < date(2016, 11, 13))
     with self.assertRaisesRegex(TypeError, 'Cannot compare bikram.samwat'):
         self.bs_date < 10
Exemple #9
0
 def test__eq__(self):
     self.assertTrue(samwat(2073, 3, 4) == samwat(2073, 3, 4))
     self.assertTrue(samwat(2073, 7, 27) == date(2016, 11, 12))
     with self.assertRaisesRegex(TypeError, 'Cannot compare bikram.samwat'):
         self.bs_date == 10
Exemple #10
0
 def test__isub__(self):
     some_bs_date = samwat(2052, 6, 6)
     some_bs_date -= timedelta(days=5)
     self.assertEqual(some_bs_date, samwat(2052, 6, 1))
     self.assertEqual(some_bs_date.ad, date(1995, 9, 17))
Exemple #11
0
 def setUp(self):
     self.bs_date = samwat(2076, 1, 4)