def test_spill_appearance_save_load(): sp = Spill() cm = Colormap(k1='v1') sa_attribs = {'foo': 'bar', 'baz': 'bin', 'colormap': cm} sp._appearance = SpillAppearance(**sa_attribs) json_, saveloc, refs = sp._appearance.save(None) assert json_['foo'] == 'bar' assert '.json' in json_['colormap']
def test_spill_appearance_serialization(): sp = Spill() cm = Colormap(k1='v1') sa_attribs = {'foo': 'bar', 'baz': 'bin', 'colormap': cm} sp._appearance = SpillAppearance(**sa_attribs) assert sp._appearance.foo == 'bar' assert sp._appearance.colormap.k1 == 'v1' ser = sp.serialize() assert ser['_appearance']['foo'] == 'bar' sp2 = Spill.deserialize(ser) assert sp == sp2 assert sp._appearance == sp2._appearance assert sp2._appearance.foo == 'bar' assert sp._appearance.colormap == sp2._appearance.colormap assert sp2._appearance.colormap.k1 == 'v1'
def test_num_per_timestep_release_elements(self): 'release elements in the context of a spill container' # todo: need a test for a line release where rate is given - to check # positions are being initialized correctly end_time = self.rel_time + timedelta(hours=1) release = PointLineRelease(self.rel_time, self.pos, num_elements=1000, end_release_time=end_time) sp = Spill(release=release) sc = SpillContainer() sc.spills += sp sc.prepare_for_model_run(array_types=sp.array_types) sp.prepare_for_model_run(900) for ix in range(5): model_time = self.rel_time + timedelta(seconds=900 * ix) to_rel = sp.release_elements(sc, model_time, 900) if model_time < sp.end_release_time: assert to_rel == 250 assert len(sc['spill_num']) == min((ix + 1) * 250, 1000) else: assert to_rel == 0
def test__init(self): sp = Spill() #assert default construction assert sp.substance and isinstance(sp.substance, NonWeatheringSubstance) assert sp.release and isinstance(sp.release, PointLineRelease)
def cont_point_spill_le_per_ts(): release = PointLineRelease(rel_time, pos, end_release_time=end_rel_time, num_per_timestep=200) return Spill(release=release, amount=5000)
def cont_point_line_spill(): release = PointLineRelease(rel_time, pos, end_position=end_release_pos, end_release_time=end_rel_time) return Spill(release=release, amount=5000)
def inst_point_spill(): release = PointLineRelease(rel_time, pos) return Spill(release=release, amount=5000)
def sp(): return Spill()