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