#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Testing setting dynamic range for Eiger. 
If the detector is not Eiger the tests are skipped
"""
import pytest
import config_test
from fixtures import detector, eiger, jungfrau, eigertest, jungfrautest
from sls_detector.errors import DetectorValueError


@eigertest
def test_set_dynamic_range_and_make_acq(eiger):
    eiger.exposure_time = 0.5
    eiger.n_frames = 2
    for dr in [4, 8, 16, 32]:
        eiger.dynamic_range = dr
        assert eiger.dynamic_range == dr
        eiger.acq()
        assert eiger.frames_caught == 2


@eigertest
def test_set_dynamic_range_raises(eiger):
    with pytest.raises(DetectorValueError):
        eiger.dynamic_range = 1
    with pytest.raises(DetectorValueError):
        eiger.dynamic_range = 75
    with pytest.raises(DetectorValueError):
        eiger.dynamic_range = -3
    with pytest.raises(DetectorValueError):
        eiger.dynamic_range = 12

@eigertest
def test_set_dynamic_range_reduces_speed(eiger):
    eiger.readout_clock = 'Full Speed'
    eiger.dynamic_range = 32
    assert eiger.dynamic_range == 32
    assert eiger.readout_clock == 'Quarter Speed'

    eiger.dynamic_range = 16
    assert eiger.dynamic_range == 16
    assert eiger.readout_clock == 'Half Speed'