def METHOD_NAME(self):
    """read an iarchive with a material in it"""
    materials = IObject( IArchive( 'material.abc' ).getTop() , 'materials' )
    matObj = IMaterial( materials, "material1" )
    mat = matObj.getSchema()
    self.assertTrue(materials.valid())
    self.assertTrue(matObj.valid())
    self.assertTrue(mat.valid())
    self.assertTrue(materials)
    self.assertTrue(matObj)
    self.assertTrue(mat)
    targetNames = mat.getTargetNames()
    self.assertEqual(len( targetNames ), 2)
    self.assertTrue( ( targetNames[0] == 'arnold' and targetNames[1] == 'prman' ) or
            ( targetNames[1] == 'arnold' and targetNames[0] == 'prman' ) )
    for targetName in targetNames:
        shaderTypeNames = mat.getShaderTypesForTarget( targetName )
        if targetName == 'prman' :
            self.assertEqual(len( shaderTypeNames ), 2)
            self.assertTrue( ( shaderTypeNames[0] == 'surface' and
                   shaderTypeNames[1] == 'displacement' ) or
                 ( shaderTypeNames[1] == 'surface' and
                   shaderTypeNames[0] == 'displacement' ) )
        else :
            self.assertEqual(targetName, 'arnold')
            self.assertTrue(len( shaderTypeNames ) == 1 and shaderTypeNames[0])
        for shaderTypeName in shaderTypeNames:
            shaderName = mat.getShader( targetName, shaderTypeName )
            if targetName == 'prman' and shaderTypeName == 'surface':
                self.assertEqual(shaderName, 'paintedplastic')
            elif targetName == 'prman' and shaderTypeName == 'displacement':
                self.assertEqual(shaderName, 'knobby')
            elif targetName == 'arnold' and shaderTypeName == 'surface':
                self.assertEqual(shaderName, 'paintedplastic')
            params = mat.getShaderParameters( targetName, shaderTypeName )
            if params.valid():
                self.assertEqual(targetName, 'prman')
                self.assertEqual(shaderTypeName, 'surface')
                for i in range(0, params.getNumProperties()):
                    propHeader = params.getPropertyHeader( i )
                    if propHeader.isScalar():
                        if IStringProperty.matches( propHeader ):
                            prop = IStringProperty( params,
                                                propHeader.getName() )
                            self.assertEqual(propHeader.getName(), 'texname')
                            self.assertEqual(prop.getValue(), 'taco' )
                        elif IFloatProperty.matches( propHeader ):
                            prop = IFloatProperty( params,
                                               propHeader.getName() )
                            self.assertEqual( propHeader.getName(), 'Kd')
                            self.assertEqual( prop.getValue(), 0.5 )