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'
Beispiel #3
0
 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
Beispiel #4
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)
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #7
0
def inst_point_spill():
    release = PointLineRelease(rel_time, pos)
    return Spill(release=release, amount=5000)
Beispiel #8
0
def sp():
    return Spill()