Ejemplo n.º 1
0
    def test_replace(self):
        # Ensure we can replace a child component.
        c0 = Component()
        c1 = Component()
        c2 = Component()

        c0.add('c', c1)
        self.assertEqual(id(c0.c), id(c1))

        c0.replace('c', c2)
        self.assertEqual(id(c0.c), id(c2))
Ejemplo n.º 2
0
    def test_save_bad_child(self):
        logging.debug('')
        logging.debug('test_save_bad_child')

        # Create orphan component.
        orphan = Component()
        code = 'self.model.save_to_egg(self.model.name, next_egg(),' \
               ' py_dir=PY_DIR, child_objs=[orphan])'
        assert_raises(self, code, globals(), locals(), RuntimeError,
                      'Entry point object has no parent!')

        # Create non-orphan component that is not part of model.
        badboy = orphan.add('badboy', Component())
        code = 'self.model.save_to_egg(self.model.name, next_egg(),' \
               ' py_dir=PY_DIR, child_objs=[badboy])'
        assert_raises(self, code, globals(), locals(), RuntimeError,
                      'Egg_TestModel: badboy is not a child of Egg_TestModel.')
Ejemplo n.º 3
0
 def test_run(self):
     comp = Component()
     try:
         comp.run()
     except NotImplementedError as err:
         self.assertEqual(str(err), ".execute")
     else:
         self.fail('expected NotImplementedError')
Ejemplo n.º 4
0
    def setUp(self):
        """this setup function will be called before each test in this class"""
        self.hobj = Component()
        self.hobj.add('arr1', Array(array([98.9]), iotype='in', units='ft'))
        self.hobj.add('arr2', Array(array([13.2]), iotype='out', units='inch'))
        self.hobj.add('arr3', Array(iotype='in', units='kg', desc='stuff'))

        self.hobj.arr1 = [1.0, 2.0, 3.0]
        self.hobj.arr2 = [[1., 2.], [3., 4.]]
        self.hobj.arr3 = [1.1]
Ejemplo n.º 5
0
    def test_driver(self):
        # Ensure we can't add a Driver to a component that is not an Assembly.
        comp = Component()

        try:
            comp.add('driver', Driver())
        except Exception as err:
            self.assertEqual(str(err),
                             "A Driver may only be added to an Assembly")
            pass
Ejemplo n.º 6
0
    def test_bad_new_directory(self):
        logging.debug('')
        logging.debug('test_bad_new_directory')

        comp = Component()
        comp.directory = '/illegal'
        try:
            comp.run()
        except ValueError, exc:
            msg = ": Illegal path '/illegal', not a descendant of"
            self.assertEqual(str(exc)[:len(msg)], msg)
Ejemplo n.º 7
0
    def test_illegal_directory(self):
        logging.debug('')
        logging.debug('test_bad_directory')

        try:
            # Set an illegal execution directory, verify error.
            comp = Component(directory='/illegal')
            comp.cpath_updated()
        except ValueError, exc:
            msg = ": Illegal path '/illegal', not a descendant of"
            self.assertEqual(str(exc)[:len(msg)], msg)
Ejemplo n.º 8
0
    def load_master(self):

        f = open(self.master_input_file,'r')
        loaded = json.load(f)
        
        self.add('vtrees_in',Component())

        for name, comp in loaded.iteritems():
            decoded = self.decode_json(comp)
            print 'loading', name
            vt = self.load_vartree(decoded)
            self.vtrees_in.add(name, vt)
Ejemplo n.º 9
0
    def test_mimic(self):
        # Ensure we can mimic a driver.
        top = Assembly()
        top.add('c1', Component())
        top.add('c2', Component())
        top.driver.workflow.add(('c1', 'c2'))
        top.driver.printvars = ['c1.force_execute', 'c2.force_execute']

        recorder1 = FakeRecorder()
        recorder2 = FakeRecorder()
        top.driver.recorders = [recorder1, recorder2]

        workflow_id = id(top.driver.workflow)
        new_driver = Driver()
        new_id = id(new_driver)
        self.assertNotEqual(new_id, id(top.driver))

        top.replace('driver', new_driver)
        self.assertEqual(new_id, id(top.driver))
        self.assertEqual(workflow_id, id(top.driver.workflow))
        self.assertEqual(top.driver.printvars,
                         ['c1.force_execute', 'c2.force_execute'])
        self.assertEqual(top.driver.recorders, [recorder1, recorder2])
Ejemplo n.º 10
0
    def test_remove(self):
        top = Assembly()

        g = top._depgraph.component_graph()
        comps = [name for name in g]
        self.assertEqual(comps, ['driver'])

        top.add('comp', Component())

        g = top._depgraph.component_graph()
        comps = [name for name in g]
        self.assertEqual(set(comps), set(['driver', 'comp']))

        top.remove('comp')

        g = top._depgraph.component_graph()
        comps = [name for name in g]
        self.assertEqual(comps, ['driver'])
Ejemplo n.º 11
0
    def test_basic(self):

        top = set_as_top(Assembly())
        box = top.add('box', Component())
        box.add('geo', VarTree(GeomData(13, 17, 3), iotype='in'))

        self.assertTrue(box.geo.points.shape == (13, 3))
        self.assertTrue(box.geo.facets.shape == (17, 3))
        self.assertTrue(issubclass(box.geo.facets.dtype.type, np.int))

        box.add('geo2', VarTree(GeomData(13, 17, 4), iotype='out'))
        self.assertTrue(box.geo2.facets.shape == (17, 4))

        try:
            box.geo = GeomData(3, 4, 5)
        except ValueError, err:
            msg = 'facet size must be either 3 or 4'
            self.assertEqual(str(err), msg)
Ejemplo n.º 12
0
 def configure(self):
     self.add('vtrees', Component())
     self.vtrees.add('wt', WindTurbineDescriptionVT())
     self.vtrees.wt.turbine_name = 'DTU 10MW RWT'
     self.vtrees.add('machine_type', VarSpeedVarPitch())
     self.vtrees.machine_type.ratedPower = 10.e7
     self.vtrees.machine_type.minOmega = 6.
     self.vtrees.machine_type.maxOmega = 9.6
     self.vtrees.machine_type.Vin = 4.
     self.vtrees.machine_type.Vout = 25.
     self.vtrees.machine_type.orientation = 'upwind'
     self.vtrees.machine_type.wind_class = 'IEC Class 1A'
     self.vtrees.add('rotor', RotorVT())
     self.vtrees.rotor.hub_height = 119.
     self.vtrees.rotor.diameter = 178.332
     self.vtrees.rotor.nb = 3
     self.vtrees.rotor.cone_angle = 2.5
     self.vtrees.rotor.tilt_angle = 5.
     self.vtrees.rotor.mass = 227962.
     self.vtrees.rotor.overhang = 7.1
     self.vtrees.add('blade', BladeVT())
     self.vtrees.blade.airfoils = [
         'cylinder', 'FFA-W3-480GF', 'FFA-W3-360GF', 'FFA-W3-301',
         'FFA-W3-241'
     ]
     self.vtrees.blade.length = 89.166
     self.vtrees.blade.max_chord = 6.203
     self.vtrees.blade.tip_chord = 1.23
     self.vtrees.blade.root_chord = 5.38
     self.vtrees.add('hub', HubVT())
     self.vtrees.hub.diameter = 5.6
     self.vtrees.add('nacelle', NacelleVT())
     self.vtrees.nacelle.mass = 446036.
     self.vtrees.add('tower', TowerVT())
     self.vtrees.tower.mass = 628442.
     self.vtrees.tower.height = 115.63
     self.vtrees.tower.bottom_diameter = 8.3
     self.vtrees.tower.top_diameter = 5.5
     self.vtrees.add('airfoil_data', AirfoilDataArrayVT())
     data = AirfoilDataVT()
     data.alpha = np.linspace(0, 20, 11)
     data.cl = 2. * np.pi * data.alpha * np.pi / 180.
     self.vtrees.airfoil_data.polars.append(data)
Ejemplo n.º 13
0
    def test_override(self):
        code = """\
class BadComponent(Component):
    run = Float(iotype='in')
"""
        assert_raises(self, code, globals(), locals(), NameError,
                      "BadComponent overrides attribute 'run' of Component",
                      use_exec=True)

        code = "Component.add_class_trait('run', Float(iotype='in'))"
        assert_raises(self, code, globals(), locals(), NameError,
                      "Would override attribute 'run' of Component")

        comp = Component()
        comp.add_trait('x', Float(iotype='in'))

        code = "comp.add_trait('run', Float(iotype='in'))"
        assert_raises(self, code, globals(), locals(), NameError,
                      "Would override attribute 'run' of Component")
    def test_file_in_place_of_directory(self):
        logging.debug('')
        logging.debug('test_file_in_place_of_directory')

        # Create a plain file.
        directory = 'plain_file'
        if os.path.exists(directory):
            os.remove(directory)
        out = open(directory, 'w')
        out.write('Hello world!\n')
        out.close()
        try:
            # Set execution directory to plain file.
            comp = Component(directory=directory)
            comp.tree_rooted()
        except ValueError, exc:
            path = os.path.join(os.getcwd(), directory)
            self.assertEqual(
                str(exc),
                ": Execution directory path '%s' is not a directory." % path)
Ejemplo n.º 15
0
    def test_protected_directory(self):
        if sys.platform == 'win32':
            raise SkipTest("Windows box has permission problems with this test")
        
        logging.debug('')
        logging.debug('test_protected_directory')

        # Create a protected directory.
        directory = 'protected'
        if os.path.exists(directory):
            os.rmdir(directory)
        os.mkdir(directory)
        os.chmod(directory, 0)
        exe_dir = os.path.join(directory, 'xyzzy')
        try:
            # Attempt auto-creation of execution directory in protected area.
            comp = Component(directory=exe_dir)
            comp.cpath_updated()
        except OSError, exc:
            msg = ": Can't create execution directory"
            self.assertEqual(str(exc)[:len(msg)], msg)
Ejemplo n.º 16
0
 def test_get_entry_group(self):
     self.assertEqual(_get_entry_group(Component()), 'openmdao.component')
Ejemplo n.º 17
0
         
 def test_checks(self):
     # Tests out the validity checks.
     
     # Test 1, add a driver to its own workflow
     try:
         self.model.driver.workflow.add('driver', check=True)
     except AttributeError, err:
         msg = 'You cannot add a driver to its own workflow'
         self.assertEqual(str(err), msg)
     else:
         self.fail('Expected AttributeError')
         
     # Test 2, add a comp that is out of scope.
     self.model.add('sub', Assembly())
     self.model.sub.add('comp', Component())
     try:
         self.model.driver.workflow.add('sub.comp', check=True)
     except AttributeError, err:
         msg = "Component 'sub.comp' is not in the scope of the top assembly."
         self.assertEqual(str(err), msg)
     else:
         self.fail('Expected AttributeError')
         
     # Test 3, add a comp that does not exist
     try:
         self.model.driver.workflow.add('stuff', check=True)
     except AttributeError, err:
         msg = "Component 'stuff' does not exist in the top assembly."
         self.assertEqual(str(err), msg)
     else:
Ejemplo n.º 18
0
 def setUp(self):
     self.geomcomp = GeomComponent()
     self.tdir = tempfile.mkdtemp()
     comp = Component()
     self.base_inputs = set(comp.list_inputs())
     self.base_outputs = set(comp.list_outputs())
Ejemplo n.º 19
0
 def test_wrong_interface(self):
     try:
         self.sc.iterator = Component('dummy')
     except TypeError, exc:
         self.assertEqual(
             str(exc), ": iterator must provide interface 'ICaseIterator'")