Source code for dataobj.dataconfig_test

# -*- coding: utf-8 -*-
# dataobj/dataconfig_test.py

from __future__ import absolute_import # PEP328
from functools import partial
from nose.tools import assert_raises
from dataobj.dataconfig import DataConfig

DataConfig.factory()

[docs]def assertDefaults(dc): assert dc.x0Low() == 0.0 assert dc.x0High() >= 1e200 assert dc.x1Low() == 0.0 assert dc.x1High() >= 1e200 assert dc.fMaskZero() == False assert dc.fMaskNeg() == False
[docs]def testSetter(): dc = DataConfig() assertDefaults(dc) dc.x0Low.setValue(-1.5) dc.x0High.setValue(12.) assert dc.x0Low() == 0 assert dc.x0High() == 12
[docs]def testLimits(): import numpy dc = DataConfig() assertDefaults(dc) dc.x0Low.setValue(-2.5) dc.x0High.setValue(1.234e2) dc.onUpdatedX0(numpy.array((0., 10.))) assert dc.x0Low() == 0. assert dc.x0High() == 10.
[docs]def testCallbacks(): class X0CallbackRun(Exception): pass class X1CallbackRun(Exception): pass class FMasksCallbackRun(Exception): pass def test(err, *args): raise err dc = DataConfig() assertDefaults(dc) dc.register("x0limits", partial(test, X0CallbackRun)) dc.register("x1limits", partial(test, X1CallbackRun)) dc.register("fMasks", partial(test, FMasksCallbackRun)) dc.x0Low.setValue(-2.5) # outside value range, not updated assert dc.x0Low() == 0. assert_raises(X0CallbackRun, dc.x0High.setValue, 2.5) assert dc.x0High() == 2.5 dc.x1Low.setValue(-1.5) # outside value range, not updated assert dc.x1Low() == 0. assert_raises(X1CallbackRun, dc.x1High.setValue, 1.5) assert dc.x1High() == 1.5 assert_raises(FMasksCallbackRun, dc.fMaskZero.setValue, True) assert dc.fMaskZero() assert_raises(FMasksCallbackRun, dc.fMaskNeg.setValue, True) assert dc.fMaskNeg()
[docs]def testSerialize(): def dummyFunc(*args): pass dc = DataConfig() assertDefaults(dc) dc.x0Low.setValueRange((1, 12)) dc.x0Low.setValue(.5) dc.x0High.setValue(1.234e2) assert dc.x0Low() == 1 assert dc.x0High() == 1.234e2 dc.register("x0limits", dummyFunc) dc.register("x1limits", dummyFunc) dc.register("fMasks", dummyFunc) import pickle data = pickle.dumps(dc) dc2 = pickle.loads(data) assert dc == dc2 for key in dc.__dict__: if "callback" in key: continue v0, v1 = getattr(dc, key), getattr(dc2, key) assert v0 == v1, \ "{key} does not match!".format(key = key) if v0 is None: # None is a singleton: always same id() continue assert id(v0) != id(v1), \ "Same value Ids for {key}!".format(key = key)
# vim: set ts=4 sts=4 sw=4 tw=0: