#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Tests for network related functions of the detector
"""
import pytest
import config_test
from fixtures import eiger, eigertest, detector


# def test_last_client(detector):
#     import socket
#     # We probably should check for multiple ip's
#     myip = socket.gethostbyname_ex(socket.gethostname())[-1][0]
#     assert detector.last_client_ip == myip

def test_get_hostname(detector):
    for detector_host, config_host in zip(detector.hostname, config_test.known_hostnames):
        assert detector_host == config_host

def test_hostname_has_same_length_as_n_modules(detector):
    assert len(detector.hostname) == detector.n_modules


# # def test_get_receiver_hostname(detector):
# #     """Assume that the receiver are on the local computer"""
# #     import socket
# #     host = socket.gethostname().split('.')[0]
# #     assert detector.rx_hostname == host

# def test_set_receiver_hostname(detector):
#     import socket
#     host = socket.gethostname().split('.')[0]
#     phony_host = 'madeup'
#     detector.rx_hostname = phony_host
#     assert detector.rx_hostname == phony_host
#     detector.rx_hostname = host
#     assert detector.rx_hostname == host

@eigertest
def test_set_rx_zmqport_single_value(eiger):
    eiger.rx_zmqport = 35000
    assert eiger.rx_zmqport == [35000, 35001, 35002, 35003]

@eigertest
def test_set_rx_zmqport_list(eiger):
    eiger.rx_zmqport = [37000, 38000]
    assert eiger.rx_zmqport == [37000, 37001, 38000, 38001]

@eigertest
def test_set_rx_updport(eiger):
    ports = [60010,60011,60012,60013]
    eiger.rx_udpport = ports
    assert eiger.rx_udpport == ports
    eiger.acq()
    assert eiger.frames_caught == 1

@eigertest
def test_rx_tcpport(eiger):
    ports = eiger.rx_tcpport
    eiger.rx_tcpport = [2000,2001]
    assert eiger.rx_tcpport == [2000,2001]
    eiger.rx_tcpport = ports
    assert eiger.rx_tcpport == ports
    eiger.acq()
    assert eiger.frames_caught == 1

# @eigertest
# @pytest.mark.new
# def test_enable_disable_tengiga(eiger):
#     """
#     This test does not check for dat on the 10Gbit link, only the set and get functions
#     """
#     eiger.tengiga = True
#     assert eiger.tengiga == True
#     eiger.tengiga = False
#     assert eiger.tengiga == False



#TODO! Add test for Jungfrau