def test_calcSaskOilBaseRoyaltyCalcRate(self): econ_string_data = """ CharMonth,ProdMonth,HOP,SOP,NOP,H4T_C,H4T_D,H4T_K,H4T_X,H3T_K,H3T_X,HNEW_K,HNEW_X,SW4T_C,SW4T_D,SW4T_K,SW4T_X,SW3T_K,SW3T_X,SWNEW_K,SWNEW_X,O4T_C,O4T_D,O4T_K,O4T_X,O3T_K,O3T_X,ONEW_K,ONEW_X,OOLD_K,OOLD_X Sept.,201509,162,210,276,0.0841,2.1,20.81,1561,20.46,472,26.48,611,0.1045,2.61,25.85,1939,31.57,729,38.54,890,0.1209,3.02,29.91,2243,36.08,833,40.79,941,52.61,1214 """ # All this work so we don't need to read from the database. It's a way better test. econ_oil_data = DataStructure() th = TestHelper() royalty_calc = DataStructure() th.load_object_csv_style(econ_oil_data, econ_string_data) pr = ProcessRoyalties() self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate(royalty_calc, econ_oil_data, "Fourth Tier Oil", "Heavy", 24, 0), 0 ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate(royalty_calc, econ_oil_data, "Fourth Tier Oil", "Heavy", 100, 0), 0.0631, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate( royalty_calc, econ_oil_data, "Fourth Tier Oil", "Southwest", 100, 0 ), 0.0784, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate(royalty_calc, econ_oil_data, "Fourth Tier Oil", "Other", 130, 0), 0.12697, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate(royalty_calc, econ_oil_data, "Fourth Tier Oil", "Heavy", 140, 0), 0.0966, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate( royalty_calc, econ_oil_data, "Fourth Tier Oil", "Southwest", 136.3, 0 ), 0.11624028, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate(royalty_calc, econ_oil_data, "Fourth Tier Oil", "Other", 150, 0), 0.14956667, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate(royalty_calc, econ_oil_data, "Fourth Tier Oil", "Other", 0, 0), 0 ) self.assertRaises( AppError, pr.calc_sask_oil_prov_crown_royalty_rate, royalty_calc, econ_oil_data, "Fourth Tier Oil", "BadString", 120, 0, ) self.assertRaises( AppError, pr.calc_sask_oil_prov_crown_royalty_rate, royalty_calc, econ_oil_data, "Fourth Tier Oil", "BadString", 140, 0, ) self.assertRaises( AppError, pr.calc_sask_oil_prov_crown_royalty_rate, royalty_calc, econ_oil_data, "Bad String", "Heavy", 120, 0, ) self.assertRaises( AppError, pr.calc_sask_oil_prov_crown_royalty_rate, royalty_calc, econ_oil_data, "Bad String", "Southwest", 120, 0, ) self.assertRaises( AppError, pr.calc_sask_oil_prov_crown_royalty_rate, royalty_calc, econ_oil_data, "Bad String", "Other", 120, 0, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate( royalty_calc, econ_oil_data, "Third Tier Oil", "Heavy", 100, 0.0075 ), 0.1499, ) self.assertAlmostEqual( pr.calc_sask_oil_prov_crown_royalty_rate(royalty_calc, econ_oil_data, "New Oil", "Heavy", 100, 0.0075), 0.19620000, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate(royalty_calc, econ_oil_data, "New Oil", "Heavy", 0, 0), 0 ) self.assertRaises( AppError, pr.calc_sask_oil_prov_crown_royalty_rate, royalty_calc, econ_oil_data, "Third Tier Oil", "Bad String", 120, 0, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate( royalty_calc, econ_oil_data, "Third Tier Oil", "Southwest", 120, 0 ), 0.25495000, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate(royalty_calc, econ_oil_data, "New Oil", "Southwest", 130, 0.0075), 0.30943846, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate(royalty_calc, econ_oil_data, "New Oil", "Southwest", 0, 0), 0 ) self.assertRaises( AppError, pr.calc_sask_oil_prov_crown_royalty_rate, royalty_calc, econ_oil_data, "New Oil", "Bad String", 120, 0, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate( royalty_calc, econ_oil_data, "Third Tier Oil", "Other", 120, 0.0225 ), 0.26888333, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate(royalty_calc, econ_oil_data, "New Oil", "Other", 110, 0), 0.32235455, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate(royalty_calc, econ_oil_data, "Old Oil", "Other", 100, 0.0075), 0.39720000, ) self.assertEqual( pr.calc_sask_oil_prov_crown_royalty_rate(royalty_calc, econ_oil_data, "Old Oil", "Other", 0, 0), 0 ) self.assertRaises( AppError, pr.calc_sask_oil_prov_crown_royalty_rate, royalty_calc, econ_oil_data, "Old Oil", "Bad String", 120, 0, ) self.assertRaises( AppError, pr.calc_sask_oil_prov_crown_royalty_rate, royalty_calc, econ_oil_data, "Old Oil", "Heavy", 120, 0 ) self.assertRaises( AppError, pr.calc_sask_oil_prov_crown_royalty_rate, royalty_calc, econ_oil_data, "Old Oil", "Southwest", 120, 0, ) self.assertRaises( AppError, pr.calc_sask_oil_prov_crown_royalty_rate, royalty_calc, econ_oil_data, None, None, 120, 0 ) return