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

from LCM.DataRequester import LcmDataRequester

lc = lcm.LCM()

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


class TestLcmDataRequester(unittest.TestCase):

    def test_add_request(self):

        data_req = LcmDataRequester(lc)

        self.assertTrue(data_req.add_request(var))


    def test_add_request_universal(self):

        data_req = LcmDataRequester(lc)

        self.assertTrue(data_req.add_request(universal_var))


    def test_add_duplicate_request(self):

        data_req = LcmDataRequester(lc)
        data_req.add_request(var)

        self.assertFalse(data_req.add_request(var))


    def test_remove_request(self):

        data_req = LcmDataRequester(lc)
        data_req.add_request(var)

        data_req.remove_request(var)

        self.assertTrue(len(data_req.req_list) == 0)


    def test_request_pub(self):

        data_req = LcmDataRequester(lc)
        data_req.add_request(var)

        for _ in range(3):
            time.sleep(0.2)
            data_req.request(0.1)


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