class TestNacelleSystemCostAdder(unittest.TestCase):

    def setUp(self):

        self.nacelle = NacelleSystemCostAdder()

        self.nacelle.bedplate_mass = 93090.6
        self.nacelle.machine_rating = 5000.0
        self.nacelle.crane = True
        self.nacelle.offshore = True
        self.nacelle.year = 2009
        self.nacelle.month = 12
        self.nacelle.lss_cost = 183363.66
        self.nacelle.bearings_cost = 56660.73
        self.nacelle.gearbox_cost = 648030.64
        self.nacelle.hss_cost = 15218.23
        self.nacelle.generator_cost = 435157.71
        self.nacelle.bedplate_cost = 138167.19
        self.nacelle.bedplateCost2002 = 105872.02
        self.nacelle.yaw_system_cost = 137698.39

    def test_functionality(self):
    
        self.nacelle.run()
        
        self.assertEqual(round(self.nacelle.cost,2), 2917983.91)

    def test_gradient(self):

        check_gradient_unit_test(self, self.nacelle, tol=1e-5)
    def setUp(self):

        self.nacelle = NacelleSystemCostAdder()

        self.nacelle.bedplate_mass = 93090.6
        self.nacelle.machine_rating = 5000.0
        self.nacelle.crane = True
        self.nacelle.offshore = True
        self.nacelle.year = 2009
        self.nacelle.month = 12
        self.nacelle.lss_cost = 183363.66
        self.nacelle.bearings_cost = 56660.73
        self.nacelle.gearbox_cost = 648030.64
        self.nacelle.hss_cost = 15218.23
        self.nacelle.generator_cost = 435157.71
        self.nacelle.bedplate_cost = 138167.19
        self.nacelle.bedplateCost2002 = 105872.02
        self.nacelle.yaw_system_cost = 137698.39
    def test1(self):

        nacelle = NacelleSystemCostAdder()

        nacelle.bedplate_mass = 93090.6
        nacelle.machine_rating = 5000.0
        nacelle.drivetrainDesign = 1
        nacelle.crane = True
        nacelle.offshore = True
        nacelle.year = 2009
        nacelle.month = 12
        nacelle.lss_cost = 10000.0
        nacelle.bearings_cost = 10000.0
        nacelle.gearbox_cost = 10000.0
        nacelle.hss_cost = 10000.0
        nacelle.bedplate_cost = 10000.0
        nacelle.bedplateCost2002 = 8000.0
        nacelle.yaw_system_cost = 10000.0

        check_gradient_unit_test(self, nacelle, tol=1e-5)
    def test1(self):

        nacelle = NacelleSystemCostAdder()

        nacelle.bedplate_mass = 93090.6
        nacelle.machine_rating = 5000.0
        nacelle.drivetrainDesign = 1
        nacelle.crane = True
        nacelle.offshore = True
        nacelle.year = 2009
        nacelle.month = 12
        nacelle.lss_cost = 10000.0
        nacelle.bearings_cost = 10000.0
        nacelle.gearbox_cost = 10000.0
        nacelle.hss_cost = 10000.0
        nacelle.bedplate_cost = 10000.0
        nacelle.bedplateCost2002 = 8000.0
        nacelle.yaw_system_cost = 10000.0

        check_gradient_unit_test(self, nacelle, tol=1e-5)