import unittest
from unittest.mock import Mock

from uncloud.hack.mac import MAC
from uncloud import UncloudException

class TestMacLocal(unittest.TestCase):
    def setUp(self):
        self.config = Mock()
        self.config.arguments = {"no_db":True}
        self.mac = MAC(self.config)
        self.mac.create()

    def testMacInt(self):
        self.assertEqual(self.mac.__int__(), int("0x420000000001",0), "wrong first MAC index")

    def testMacRepr(self):
        self.assertEqual(self.mac.__repr__(), '420000000001', "wrong first MAC index")

    def testMacStr(self):
        self.assertEqual(self.mac.__str__(), '42:00:00:00:00:01', "wrong first MAC index")

    def testValidationRaise(self):
        with self.assertRaises(UncloudException):
            self.mac.validate_mac("2")

    def testValidation(self):
        self.assertTrue(self.mac.validate_mac("42:00:00:00:00:01"), "Validation of a given MAC not working properly")

    def testNextMAC(self):
        self.mac.create()
        self.assertEqual(self.mac.__repr__(), '420000000001', "wrong second MAC index")
        self.assertEqual(self.mac.__int__(), int("0x420000000001",0), "wrong second MAC index")
        self.assertEqual(self.mac.__str__(), '42:00:00:00:00:01', "wrong second MAC index")

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