Changeset 6401 for qesdi


Ignore:
Timestamp:
25/01/10 16:20:05 (10 years ago)
Author:
pnorton
Message:

Fixed a few bugs and the tests so that they now pass again. Also added the sio_co2 ini file.

Location:
qesdi/graphplotter/trunk
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • qesdi/graphplotter/trunk/graphplotter/lib/data_reader.py

    r6319 r6401  
    5050        axisNames = None 
    5151        try: 
    52             var = fin(variable) 
     52 
     53            var = fin(variable)             
    5354            axisNames = var.getAxisIds() 
    5455        finally: 
     
    6364        try: 
    6465            var = fin(variable) 
    65              
     66                         
    6667            if axis in self.axisLookup: 
    6768                axisVar = fin(self.axisLookup[axis]) 
  • qesdi/graphplotter/trunk/graphplotter/lib/plot_builder.py

    r6331 r6401  
    4242        commonItems = self._getCommonItems(selections) 
    4343         
    44         self._setPlotTitle(plt, commonItems)     
    45          
    46         log.debug("commonItems = %s" % (commonItems,)) 
     44        self._setPlotTitle(plt, commonItems) 
    4745         
    4846        for sel in selections: 
    49             xdata, ydata = reader.getData(self.params['variable'],  
    50                                           self.params['axis'], sel) 
    51          
    5247             
     48            xdata, ydata = reader.getData(self.params['variable'], self.params['axis'], sel) 
     49             
     50            # specifying the kwargs for the plt.draw command, this is so that 
     51            # no label argument will be set if lineName is None or '', this should  
     52            # trigger the default label from linplot 
    5353            kwargs ={} 
    5454             
    5555            lineName = self._getLineName(sel, commonItems) 
    5656             
    57             if lineName != '': 
     57            if lineName not in [None, '']: 
    5858                kwargs['label'] = lineName                 
    5959             
    6060            plt.draw(xdata, ydata, **kwargs) 
    6161             
    62             log.debug("xdata = %s, ydata = %s" % (xdata, ydata,)) 
     62#            log.debug("xdata = %s, ydata = %s" % (xdata, ydata,)) 
    6363         
    6464        return plt.getImage() 
     
    6767         
    6868        selections = [] 
    69         i = 0 
    70         selFound = True 
    7169         
    72         while(selFound): 
     70        # try the increasing prefixes until one of them returns None instead of 
     71        # a selection 
     72        for i in range(1000): 
    7373         
    7474            prefix = 's_%02i_' % (i,) 
     
    7676            sel = self._getSelection(prefix) 
    7777             
    78             selFound = sel is not None 
    79             if selFound: 
     78            if sel is None: 
     79                break 
     80            else: 
    8081                selections.append(sel) 
    81             i += 1 
     82             
     83            # to warn about infinite loops 
     84            if i > 900:   
     85                raise Exception("Too many selections found.") 
    8286         
    8387        return selections 
     
    8589    def _getSelection(self, prefix): 
    8690        sel = {} 
    87          
     91 
    8892        for k, v in self.params.items(): 
    8993            if k.find(prefix) == 0: 
  • qesdi/graphplotter/trunk/graphplotter/tests/unit/test_data_reader.py

    r6313 r6401  
    3535        # set the code so that getAxis returns some data 
    3636        mockVariable.getAxis.return_value = [1,2,3,4,5] 
     37         
     38        mockVariable.id = self.variable 
    3739         
    3840        return mockVariable 
  • qesdi/graphplotter/trunk/graphplotter/tests/unit/test_df_config_reader.py

    r6313 r6401  
    4646            return self.config_data[section].keys() 
    4747         
     48        def has_section(section): 
     49            return section in self.config_data.keys() 
    4850         
    49         reader.cp.has_section.return_value = True 
     51        reader.cp.has_section.side_effect = has_section 
     52         
    5053        reader.cp.has_option.return_value = True 
    5154        reader.cp.get.side_effect = conf_get 
     
    5760        assert config['path'] == self.config_data['DataFile']['path'] 
    5861        assert config['axisLookup'] == self.config_data['AxisLookups'] 
     62         
     63        #check no data variables have been found 
     64        assert 'DataVariables' not in config 
    5965         
    6066        pprint(config) 
     
    8692        assert mockListDir.call_args == ((self.newConfig['df_config_dir'],),{})  
    8793         
     94     
     95    @patch('os.path.exists') 
     96    def test_003_readsDataVariables(self, mockOsPath): 
    8897         
     98        #bypass the test to make sure the config file exists 
     99        mockOsPath.return_value = True 
     100         
     101         
     102        reader = DFConfigReader() 
     103        reader.cp = Mock(spec=ConfigParser.SafeConfigParser) 
     104         
     105        self.config_data = { 
     106            'DataFile':{'path':'/path/to/data/file.nc'}, 
     107            'AxisLookups':{'param1':'one', 'param2':'two',}, 
     108            'DataVariables':dict(a=1, b=2, c=3) 
     109            } 
     110         
     111        def conf_get(section,option): 
     112            return self.config_data[section][option]  
     113         
     114        def conf_opts(section): 
     115            return self.config_data[section].keys() 
     116         
     117        def has_section(section): 
     118            return section in self.config_data.keys() 
     119         
     120        reader.cp.has_section.side_effect = has_section 
     121        reader.cp.has_option.return_value = True 
     122        reader.cp.get.side_effect = conf_get 
     123        reader.cp.options.side_effect = conf_opts 
     124         
     125        config = reader.getConfig('co2') 
     126         
     127        assert config['dataVariables'] == self.config_data['DataVariables'] 
     128         
     129        pprint(config) 
    89130     
  • qesdi/graphplotter/trunk/graphplotter/tests/unit/test_plot_builder.py

    r6313 r6401  
    99from mock import Mock, patch 
    1010 
     11import logging 
     12log = logging.getLogger(__name__) 
     13 
    1114class TestPlotBuilder(object): 
    1215     
     
    1518                  'variable':'data', 
    1619                  'axis':'time', 
    17                   'sel_scenario':'B1', 
    18                   'sel_model':'isam', 
    19                   'sel_sensitivity':'High'} 
     20                  's_00_scenario':'B1', 
     21                  's_00_model':'isam', 
     22                  's_01_model':'isam', 
     23                  's_02_sensitivity':'High'} 
    2024         
    2125        self.config = {'path':'path/to/data.nc', 
     
    4852         
    4953        # set the return value to be used as input in linplot 
    50         mockDataReader().getData.return_value = ('xdata', 'ydata') 
     54        mockDataReader.return_value.getData.return_value = ('xdata', 'ydata') 
    5155         
    5256        #set the return value to a string instead of a PIL image 
     
    6064        assert img == 'returned image' 
    6165                 
    62         expectedSelection = {'scenario':'B1', 
    63                              'model':'isam', 
    64                              'sensitivity':'High'} 
     66        expectedSelections = [ {'scenario':'B1',  'model':'isam'}, 
     67                              {'model':'isam'}, 
     68                             {'sensitivity':'High'} ] 
    6569         
    66         expectedArgs =  (self.params['variable'], self.params['axis'], 
    67                         expectedSelection, self.config['axisLookup']) 
     70        expectedArgsList = [] 
     71        for d in expectedSelections: 
     72            expectedArgsList.append(  ((self.params['variable'],  
     73                                       self.params['axis'], 
     74                                       d,), {}) ) 
     75         
     76        assert mockDataReader.call_count == 1 
     77        assert mockDataReader.call_args == ((self.config['path'], self.config['axisLookup']), {}) 
     78 
     79        mockReader = mockDataReader.return_value 
     80         
     81        assert mockReader.getData.call_count == len(expectedSelections), \ 
     82               "getData call count (=%s) isn't as expected (=%s)" % (mockReader.getData.call_count, len(expectedSelections)) 
     83         
     84        assert mockReader.getData.call_args_list == expectedArgsList 
    6885         
    6986         
    70         assert mockDataReader.called 
    71         assert mockDataReader.call_args[0] == (self.config['path'],) 
    72          
    73         assert mockDataReader().getData.called 
    74         assert mockDataReader().getData.call_args[0] == expectedArgs 
    75          
Note: See TracChangeset for help on using the changeset viewer.