#############################################################################
# Copyright (c) 2002-2021 MBARI
# Monterey Bay Aquarium Research Institute, all rights reserved.
#############################################################################
import unittest
import time
import lcm

from LCM.DataRequest import LcmDataReq

lc = lcm.LCM()

var = "Depth_Keller.enableBroadcast"
universal_var = "depth"


class LcmDataReqTestCase(unittest.TestCase):


    def test_subscribe_request(self):

        req = LcmDataReq(lc, name=var)

        self.assertIsNotNone(req.subscription)


    def test_request_infer_chnl_name(self):

        req = LcmDataReq(lc, name=var)

        self.assertEqual(req.channel, "Depth_Keller")


    def test_request_infer_chnl_universal(self):

        req = LcmDataReq(lc, name=universal_var)

        self.assertEqual(req.channel, "Universal")


    def test_need_request(self):

        req = LcmDataReq(lc, name=var)

        req.rx_time = time.time()
        for _ in range(3):
            time.sleep(0.2)
            self.assertTrue(req.needs_request(rx_data_timeout=0.1))


if __name__ == '__main__':
    unittest.main()
