Exemple #1
0
def test_dive_setter_metadata():
    dive = divelog.Dive()
    dive.metadata = {'a': 1}
    assert 'a' in dive.metadata
    assert dive.metadata['a'] == 1
    with pytest.raises(ValueError):
        dive.metadata = ()
Exemple #2
0
def test_dive_setter_errors():
    dive = divelog.Dive()
    with pytest.raises(ValueError):
        dive.sequence_number = 'A'
    assert dive.sequence_number == 0
    with pytest.raises(ValueError):
        dive.air_temperature = 'cold'
    assert dive.air_temperature == 0.0
    with pytest.raises(ValueError):
        dive.min_water_temperature = 'cold'
    assert dive.min_water_temperature == 0.0
    with pytest.raises(ValueError):
        dive.max_depth = 'deep'
    assert dive.max_depth == 0.0
    with pytest.raises(ValueError):
        dive.O2_mode = 'unknown'
    assert dive.O2_mode == ''
    time = dive.leave_surface_time
    with pytest.raises(ValueError):
        dive.leave_surface_time = 20160420
    assert dive.leave_surface_time == time
    with pytest.raises(ValueError):
        dive.leave_surface_time = '20160499'
    assert dive.leave_surface_time == time
    with pytest.raises(ValueError):
        dive.leave_surface_time = {'msg': 'this is not a date'}
    assert dive.leave_surface_time == time
Exemple #3
0
def test_dive_setter_interval():
    dive = divelog.Dive()
    for ri in ['C', 'V', 'Q1S', 'Q1M', 'Q1W', 'Q1L', 'D1f', 'D1m', 'D1b']:
        dive.recording_interval = ri
        assert dive.recording_interval == ri
    dive.recording_interval = 'C'
    for ri in ['Z', 'QS', 'QZM', 'Q1', 'Q1Z', 'Df', 'DZm', 'D1Z']:
        print('***' + ri)
        with pytest.raises(ValueError):
            dive.recording_interval = ri
        assert dive.recording_interval == 'C'
Exemple #4
0
def test_dive_slots():
    slots = ['metadata', 'sequence_number', 'recording_interval',
             'leave_surface_time', 'reach_surface_time',
             'air_temperature', 'min_water_temperature',
             'max_depth', 'pressure_drop', 'altitude',
             'number_of_tanks', 'tank_volume',
             'tank_start_pressure', 'O2_mode',
             'rebreather_diluent_gas', 'record']
    dive = divelog.Dive()
    for slot in slots:
        assert slot in dir(dive)
    for slot in dir(dive):
        if not slot[0:2] == '__':
            assert slot in slots
Exemple #5
0
def create_dive(add_record=True, sequence_number=0, records=10):
    dive = divelog.Dive()
    dive.sequence_number = sequence_number
    dive.recording_interval = 'Q1M'
    dive.leave_surface_time = datetime.datetime(2016, 3, 5+sequence_number,
                                                11, 0,
                                                tzinfo=datetime.timezone.utc)
    dive.reach_surface_time = datetime.datetime(2016, 3, 5+sequence_number,
                                                11, records,
                                                tzinfo=datetime.timezone.utc)
    dive.air_temperature = 29.0
    dive.min_water_temperature = 26.0
    dive.max_depth = (records / 2) * 10
    if add_record:
        dive.record = create_record(records)
    return dive
Exemple #6
0
def parse(file):
    """
    Parse this file object and return either a new top-level Log
    object, or None.
    """
    def copy_obj(src, tgt, ignore):
        for key in src:
            if not key == ignore:
                setattr(tgt, key, src[key])
    log = divelog.Log()
    jobj = json.load(file)
    copy_obj(jobj, log, 'dives')
    for jdive in jobj['dives']:
        dive = divelog.Dive()
        log.dives.append(dive)
        copy_obj(jdive, dive, 'record')
        for jdet in jdive['record']:
            detail = divelog.DiveDetail()
            dive.record.append(detail)
            copy_obj(jdet, detail, None)
    return log
Exemple #7
0
def test_log_setter_dives():
    log = divelog.Log()
    log.dives = [divelog.Dive()]
    assert len(log.dives) == 1
    with pytest.raises(ValueError):
        log.dives = {}
Exemple #8
0
def test_dive_setter_unknown():
    dive = divelog.Dive()
    assert ('location' not in dir(dive))
    with pytest.raises(AttributeError):
        dive.location = 'red'
    assert ('location' not in dir(dive))
Exemple #9
0
def test_dive_setter_dives():
    dive = divelog.Dive()
    dive.record = [divelog.DiveDetail()]
    assert len(dive.record) == 1
    with pytest.raises(ValueError):
        dive.record = {}