def test_adapt_getitem_converts_correctly(self): """ Does getitem convert units correctly? """ context = None old_log = Log((1,2,3),units=meters) getitem_units = {'depth':feet} adapter = UnitConversionAdapter(getitem_units=getitem_units) name, new_log = adapter.adapt_getitem(context, 'depth', old_log) # Did the values get converted correctly? self.assert_(all(new_log==old_log.as_units(feet))) # Are the units assigned correctly? self.assert_(new_log.units==feet) return
def context_factory(self): """ Return the type of context we are testing. """ data_context=DataContext() context = AdaptedDataContext(context=data_context) name = self.key_name() getitem_units = {name:meters/second} adapter = UnitConversionAdapter(getitem_units=getitem_units) context.push_adapter(adapter) return context
def test_get_set_converts_correctly(self): """ Does get/set with different units convert correctly? """ context = None meter_log = Log((1,2,3),units=meters) setitem_units = {'depth':inch} getitem_units = {'depth':feet} adapter = UnitConversionAdapter(getitem_units=getitem_units, setitem_units=setitem_units) name, inch_log = adapter.adapt_setitem(context, 'depth', meter_log) self.assert_(all(inch_log==meter_log.as_units(inch))) name, feet_log = adapter.adapt_getitem(context, 'depth', inch_log) # Did the values get converted correctly? self.assert_(all(feet_log==meter_log.as_units(feet))) # Are the units assigned correctly? self.assert_(feet_log.units==feet) return
def test_getitem_converts_correctly(self): """ Does getitem convert units correctly? """ getitem_units = {'depth':feet} adapter = UnitConversionAdapter(getitem_units=getitem_units) old_log = Log((1,2,3),units=meters) self.context['depth'] = old_log self.context.push_adapter(adapter) new_log = self.context['depth'] # Did the values get converted correctly? self.assert_(all(new_log==old_log.as_units(feet))) # Are the units assigned correctly? self.assert_(new_log.units==feet) return
def setUp(self): unittest.TestCase.setUp(self) # Put unit adapters on either side of a masking adapter to see if they # cooperate. Store meters in the raw context, push fathoms through the # mask, and expose feet to the outside world. self.units = units = { 'in':meters, 'mid':fathom, 'out':feet } # Set up data for the contexts depth = Log(linspace(0.0, 100.0, 11), units=units['in']) lith = array(['sand']*len(depth), dtype=object) # Create the contexts self.context = AdaptedDataContext(context=DataContext()) self.raw_context = self.context.context # Add data (before creating the adapters) self.context.update(depth=depth, lith=lith) # (This simplifies creating UnitConversionAdapters) def always(value): class C(dict): def get(self, key, default=None): return value def __repr__(self): return '{*:%r}' % value return C() # Layer multiple adapters self.mask = (15.0 < depth) & (depth < 55.0) self.convert_out = lambda x: convert(x, units['in'], units['out']) self.convert_in = lambda x: convert(x, units['out'], units['in']) #self.context.push_adapter( # UnitConversionAdapter(setitem_units=always(units['in']), # getitem_units=always(units['mid']))) self.context.push_adapter(MaskingAdapter(mask=self.mask)) self.context.push_adapter( # UnitConversionAdapter(setitem_units=always(units['mid']), UnitConversionAdapter(setitem_units=always(units['in']), getitem_units=always(units['out'])))
def test_setitem_converts_correctly(self): """ Does setitem convert units correctly? """ old_log = Log((1,2,3),units=meters) getitem_units = {'depth':feet} adapter = UnitConversionAdapter(getitem_units=getitem_units) self.context.push_adapter(adapter) # pass the log into the conversion adapter as meters self.context['depth'] = old_log # Now retreive the log from the underlying context. new_log = self.context['depth'] # Did the values get converted correctly? self.assert_(all(new_log==old_log.as_units(feet))) # Are the units assigned correctly? self.assert_(new_log.units==feet) return