#!/router/bin/python

from platform_cmd_link import *
import functional_general_test
from nose.tools import assert_equal
from nose.tools import assert_not_equal


class CCommandLink_Test(functional_general_test.CGeneralFunctional_Test):

    def setUp(self):
        self.cache = CCommandCache()
        self.cache.add('IF', "ip nbar protocol-discovery", 'GigabitEthernet0/0/1')
        self.cache.add('IF', "ip nbar protocol-discovery", 'GigabitEthernet0/0/2')
        self.cache.add('conf', "arp 1.1.1.1 0000.0001.0000 arpa")
        self.cache.add('conf', "arp 1.1.2.1 0000.0002.0000 arpa")
        self.cache.add('exec', "show ip nbar protocol-discovery stats packet-count")
        self.com_link = CCommandLink()

    def test_transmit(self):
        # test here future implemntatin of platform physical link
        pass

    def test_run_cached_command (self):
        self.com_link.run_command([self.cache])

        assert_equal (self.com_link.get_history(), 
            ["configure terminal", "interface GigabitEthernet0/0/1", "ip nbar protocol-discovery", "interface GigabitEthernet0/0/2", "ip nbar protocol-discovery", "exit", "arp 1.1.1.1 0000.0001.0000 arpa", "arp 1.1.2.1 0000.0002.0000 arpa", "exit", "show ip nbar protocol-discovery stats packet-count"]
            )

        self.com_link.clear_history()
        self.com_link.run_single_command(self.cache)
        assert_equal (self.com_link.get_history(), 
            ["configure terminal", "interface GigabitEthernet0/0/1", "ip nbar protocol-discovery", "interface GigabitEthernet0/0/2", "ip nbar protocol-discovery", "exit", "arp 1.1.1.1 0000.0001.0000 arpa", "arp 1.1.2.1 0000.0002.0000 arpa", "exit", "show ip nbar protocol-discovery stats packet-count"]
            )

    def test_run_single_command(self):
        self.com_link.run_single_command("show ip nbar protocol-discovery stats packet-count")
        assert_equal (self.com_link.get_history(), 
            ["show ip nbar protocol-discovery stats packet-count"]
            )

    def test_run_mixed_commands (self):
        self.com_link.run_single_command("show ip nbar protocol-discovery stats packet-count")
        self.com_link.run_command([self.cache])
        self.com_link.run_command(["show ip interface brief"])

        assert_equal (self.com_link.get_history(), 
            ["show ip nbar protocol-discovery stats packet-count",
             "configure terminal", "interface GigabitEthernet0/0/1", "ip nbar protocol-discovery", "interface GigabitEthernet0/0/2", "ip nbar protocol-discovery", "exit", "arp 1.1.1.1 0000.0001.0000 arpa", "arp 1.1.2.1 0000.0002.0000 arpa", "exit", "show ip nbar protocol-discovery stats packet-count",
             "show ip interface brief"]
            )

    def test_clear_history (self):
        self.com_link.run_command(["show ip interface brief"])
        self.com_link.clear_history()
        assert_equal (self.com_link.get_history(), [])

    def tearDown(self):
        self.cache.clear_cache()