#!/usr/bin/env python
import mozdevice
import logging
import unittest
from sut import MockAgent


class TestGetIP(unittest.TestCase):
    """ class to test IP methods """

    commands = [('exec ifconfig eth0', 'eth0: ip 192.168.0.1 '
                 'mask 255.255.255.0 flags [up broadcast running multicast]\n'
                 'return code [0]'),
                ('exec ifconfig wlan0', 'wlan0: ip 10.1.39.126\n'
                 'mask 255.255.0.0 flags [up broadcast running multicast]\n'
                 'return code [0]'),
                ('exec ifconfig fake0', '##AGENT-WARNING## [ifconfig] '
                 'command with arg(s) = [fake0] is currently not implemented.')
                ]

    def test_getIP_eth0(self):
        m = MockAgent(self, commands=[self.commands[0]])
        d = mozdevice.DroidSUT("127.0.0.1", port=m.port, logLevel=logging.DEBUG)
        self.assertEqual('192.168.0.1', d.getIP(interfaces=['eth0']))

    def test_getIP_wlan0(self):
        m = MockAgent(self, commands=[self.commands[1]])
        d = mozdevice.DroidSUT("127.0.0.1", port=m.port, logLevel=logging.DEBUG)
        self.assertEqual('10.1.39.126', d.getIP(interfaces=['wlan0']))

    def test_getIP_error(self):
        m = MockAgent(self, commands=[self.commands[2]])
        d = mozdevice.DroidSUT("127.0.0.1", port=m.port, logLevel=logging.DEBUG)
        self.assertRaises(mozdevice.DMError, d.getIP, interfaces=['fake0'])

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