def init_game(self): screen_size = self.video_driver.getScreenSize() self.brick_width = abs(screen_size.X / 11) self.brick_height = abs(screen_size.X / 32) self.paddle_width = 60 self.paddle_height = 12 self.max_paddle_x = screen_size.X - self.paddle_width self.max_ball_x = screen_size.X - BALL_DIAMETER self.max_ball_y = screen_size.Y - BALL_DIAMETER # Paddle X,Y coordinate self.paddle_x = (screen_size.X - self.paddle_width) / 2 self.paddle_y = screen_size.Y - self.paddle_height - 10 # ball X,Y coordinate self.ball_x = self.paddle_x self.ball_y = self.paddle_y - BALL_DIAMETER self.lives = 3 self.score = 0 self.state = STATE_BALL_IN_PADDLE self.paddle = recti(self.paddle_x, self.paddle_y, self.paddle_x + self.paddle_width, self.paddle_y + self.paddle_height) self.ball = recti(self.ball_x, self.ball_y, self.ball_x + BALL_DIAMETER, self.ball_y + BALL_DIAMETER) self.ball_vel = self.ball_vel_default #~ self.ball3d.setPosition(vector3df(self.ball_x, self.ball_y, 0)) # cellular texture generator self.cell_paddle = Cellular(self.video_driver, self.paddle_width, self.paddle_height, 128) self.cell_brick = Cellular(self.video_driver, self.brick_width, self.brick_height, 128) if not self.texture_paddle: self.texture_paddle = self.cell_paddle.get_texture() else: self.texture_paddle = self.cell_paddle.get_new_texture(cellSize = 8, density = 4.0, rand_range_count = 25) if not self.texture_brick: self.texture_brick = self.cell_brick.get_texture() else: self.texture_brick = self.cell_brick.get_new_texture(mFact = .5, lPower = .5) self.create_bricks()
def test_get_status_by_id_connect(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value =\ "Connection status: 'connected'" subprocess.call.return_value = True res = self.cellular.get_status_by_id(0) self.assertEqual(res, 1)
def test_get_status_by_id_search_fail(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value =\ "xxxx" subprocess.call.return_value = None res = self.cellular.get_status_by_id(0) self.assertEqual(res, 2)
def test_get_status_by_id_with_no_cid(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: self.cellular.cid = "1234" subprocess.check_output.return_value = True subprocess.call.return_value = True res = self.cellular.get_status_by_id(0) self.assertEqual(res, 2)
def setUp(self, set_pincode_by_id): sh.echo("1234, 1234", _out="/run/shm/cellular.tmp") try: os.unlink(dirpath + "/../data/cellular.json") except Exception: pass set_pincode_by_id.return_value = True self.cellular = Cellular(connection=Mockup())
def test_set_offline_by_id_with_no_cid(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value = True self.cellular.cid = "" self.cellular.pdh = "" res = self.cellular.set_offline_by_id(0) self.assertEqual(res, True)
class TestCellularPinCodeById(unittest.TestCase): def setUp(self): self.cellular = Cellular(connection=Mockup()) def tearDown(self): self.cellular = None def test_set_pincode_by_id(self): self.cellular.model.db = [{ 'pinCode': '0000', 'id': 0, 'atPort': '/dev/ttyS0', 'modemPort': '/dev/ttyS0' }] with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value = True res = self.cellular.set_pincode_by_id(0, '0000') self.assertTrue(res) def test_set_pincode_by_id_empty(self): self.cellular.model.db = [{ 'pinCode': '', 'id': 0, 'atPort': '/dev/ttyS0', 'modemPort': '/dev/ttyS0' }] with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value = True res = self.cellular.set_pincode_by_id(0, '') self.assertTrue(res) def test_put_cases(self): test_msg = { "id": 12345, "method": "put", "param": { "id": 1 }, "resource": "/network/cellulars" } def test_pincode_with_invalid_data(code=400, data=None): self.assertEqual(400, code) self.assertEqual(data, {"message": "PIN invalid."}) test_msg["data"] = {"pinCode": "000000"} message = Message(test_msg) self.cellular.\ put_root_by_id(message, response=test_pincode_with_invalid_data, test=True)
class TestCellularPinCodeById(unittest.TestCase): def setUp(self): self.cellular = Cellular(connection=Mockup()) def tearDown(self): self.cellular = None def test_set_pincode_by_id(self): self.cellular.model.db = [{'pinCode': '0000', 'id': 0, 'atPort': '/dev/ttyS0', 'modemPort': '/dev/ttyS0'}] with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value = True res = self.cellular.set_pincode_by_id(0, '0000') self.assertTrue(res) def test_set_pincode_by_id_empty(self): self.cellular.model.db = [{'pinCode': '', 'id': 0, 'atPort': '/dev/ttyS0', 'modemPort': '/dev/ttyS0'}] with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value = True res = self.cellular.set_pincode_by_id(0, '') self.assertTrue(res) def test_put_cases(self): test_msg = { "id": 12345, "method": "put", "param": {"id": 1}, "resource": "/network/cellulars" } def test_pincode_with_invalid_data(code=400, data=None): self.assertEqual(400, code) self.assertEqual(data, {"message": "PIN invalid."}) test_msg["data"] = {"pinCode": "000000"} message = Message(test_msg) self.cellular.\ put_root_by_id(message, response=test_pincode_with_invalid_data, test=True)
def init_game(self): screen_size = self.video_driver.getScreenSize() self.brick_width = abs(screen_size.X / 11) self.brick_height = abs(screen_size.X / 32) self.paddle_width = 60 self.paddle_height = 12 self.max_paddle_x = screen_size.X - self.paddle_width self.max_ball_x = screen_size.X - BALL_DIAMETER self.max_ball_y = screen_size.Y - BALL_DIAMETER # Paddle X,Y coordinate self.paddle_x = (screen_size.X - self.paddle_width) / 2 self.paddle_y = screen_size.Y - self.paddle_height - 10 # ball X,Y coordinate self.ball_x = self.paddle_x self.ball_y = self.paddle_y - BALL_DIAMETER self.lives = 3 self.score = 0 self.state = STATE_BALL_IN_PADDLE self.paddle = recti(self.paddle_x, self.paddle_y, self.paddle_x + self.paddle_width, self.paddle_y + self.paddle_height) self.ball = recti(self.ball_x, self.ball_y, self.ball_x + BALL_DIAMETER, self.ball_y + BALL_DIAMETER) self.ball_vel = self.ball_vel_default #~ self.ball3d.setPosition(vector3df(self.ball_x, self.ball_y, 0)) # cellular texture generator self.cell_paddle = Cellular(self.video_driver, self.paddle_width, self.paddle_height, 128) self.cell_brick = Cellular(self.video_driver, self.brick_width, self.brick_height, 128) if not self.texture_paddle: self.texture_paddle = self.cell_paddle.get_texture() else: self.texture_paddle = self.cell_paddle.get_new_texture( cellSize=8, density=4.0, rand_range_count=25) if not self.texture_brick: self.texture_brick = self.cell_brick.get_texture() else: self.texture_brick = self.cell_brick.get_new_texture(mFact=.5, lPower=.5) self.create_bricks()
def testCountAliveNeighbours(self): cellular = Cellular((3, 3)).initialize(100) self.assertEqual(cellular.countLiveNeighbours((0, 0)), 3) self.assertEqual(cellular.countLiveNeighbours((1, 0)), 5) self.assertEqual(cellular.countLiveNeighbours((2, 0)), 3) self.assertEqual(cellular.countLiveNeighbours((0, 1)), 5) self.assertEqual(cellular.countLiveNeighbours((1, 1)), 8) self.assertEqual(cellular.countLiveNeighbours((2, 1)), 5) self.assertEqual(cellular.countLiveNeighbours((0, 2)), 3) self.assertEqual(cellular.countLiveNeighbours((1, 2)), 5) self.assertEqual(cellular.countLiveNeighbours((2, 2)), 3)
def test_set_online_by_id(self): self.cellular = Cellular(connection=Mockup()) self.cellular.model.db = [{ 'enable': 1, 'name': 'wwan1', 'modemPort': '/dev/ttyS0', 'id': 0, 'atPort': '/dev/ttyS0', 'enableAuth': 1, 'apn': 'internet', 'authType': 'PAP', 'username': '******', 'password': '******' }] self.cellular.check_dhclient = Mock() with patch("cellular.subprocess") as subprocess: subprocess.check_output.\ return_value = "\ Packet data handle: '123'\ CID: '23'" self.cellular.cid = "1234" res = self.cellular.set_online_by_id(0) self.assertEqual(res, True)
def test_set_online_by_id(self): self.cellular = Cellular(connection=Mockup()) self.cellular.model.db = [{'enable': 1, 'name': 'wwan1', 'modemPort': '/dev/ttyS0', 'id': 0, 'atPort': '/dev/ttyS0', 'enableAuth': 1, 'apn': 'internet', 'authType': 'PAP', 'username': '******', 'password': '******'}] self.cellular.check_dhclient = Mock() with patch("cellular.subprocess") as subprocess: subprocess.check_output.\ return_value = "\ Packet data handle: '123'\ CID: '23'" self.cellular.cid = "1234" res = self.cellular.set_online_by_id(0) self.assertEqual(res, True)
def test_get_status_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.side_effect = Exception res = self.cellular.get_status_by_id(0) self.assertEqual(res, 2)
def test_set_offline_by_id(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.call.return_value = True res = self.cellular.set_offline_by_id('1') self.assertEqual(res, 'success')
def test_search_dns(self): self.cellular = Cellular(connection=Mockup()) res = self.cellular.search_dns(self.filetext) self.assertEqual(res, '8.8.8.58,20.20.20.20,40.40.4.1')
def test_get_cops_by_id_fail(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.modemcmd") as modemcmd: modemcmd.return_value = "" res = self.cellular.get_cops_by_id(0) self.assertEqual(res, "Unknown Operator")
def test_get_signal_by_id_fail(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value = "" res = self.cellular.get_signal_by_id(0) self.assertEqual(res, 99)
def setUp(self): self.cellular = Cellular(connection=Mockup())
def test_get_cops_by_id(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.modemcmd") as modemcmd: modemcmd.return_value = "+COPS: 0,0,\"Chunghwa Telecom\",2\r\nOK" res = self.cellular.get_cops_by_id(0) self.assertEqual(res, "Chunghwa Telecom")
def testInitializeAllAlive(self): cellular = Cellular((3, 3)).initialize(100) self.assertEqual(len([alive for alive in cellular]), 9)
def testInitializeAllDead(self): cellular = Cellular((3, 3)).initialize(0) self.assertEqual(len([alive for alive in cellular]), 0)
def dig(self): self._space = Cellular(self._size).initialize(45).update( 5, 3, 5).areas().biggestArea() if not self._space: self._space = set() return self
def test_get_cops_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.modemcmd") as modemcmd: modemcmd.side_effect = Exception res = self.cellular.get_cops_by_id(0) self.assertEqual(res, "Unknown Operator")
class TestCellular(unittest.TestCase): filetext = "\ lease {\n\ interface \"eth0\"\n\ fixed-address 192.168.10.26\n\ option subnet-mask 255.255.0.0\n\ option routers 192.168.31.115\n\ option dhcp-lease-time 5566\n\ option dhcp-message-type 5\n\ option domain-name-server 8.8.8.58 20.20.20.20 40.40.4.1\n\ option dhcp-server-identifier 192.168.31.115\n\ option domain-name \"MXcloud115\"\n\ renew 3 2014/10/29 12:52:19\n\ rebind 3 2014/10/29 13:37:52\n\ expire 3 2014/10/29 13:49:28\n\ }\n\ " filetext_fail = " " @patch("cellular.Cellular.set_pincode_by_id") def setUp(self, set_pincode_by_id): sh.echo("1234, 1234", _out="/run/shm/cellular.tmp") try: os.unlink(dirpath + "/../data/cellular.json") except Exception: pass set_pincode_by_id.return_value = True self.cellular = Cellular(connection=Mockup()) def tearDown(self): self.cellular = None @patch("cellular.subprocess") def put_simple_test_cases(self, subprocess): subprocess.check_output.return_value = True subprocess.call.return_value = True test_msg = { "id": 12345, "method": "put", "param": { "id": "1" }, "resource": "/network/cellulars" } # case 1: no data attribute def test_put_with_no_data(code=200, data=None): self.assertEqual(400, code) self.assertEqual(data, {"message": "Invalid Input."}) message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_put_with_no_data, test=True) # case 2: data dict is empty or no enable exist def test_put_with_random_data(code=200, data=None): self.assertEqual(400, code) self.assertEqual(data, {"message": "No such resources."}) test_msg["data"] = dict() message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_put_with_random_data, test=True) # case 3: data not found def test_put_with_unknown_data(code=200, data=None): self.assertEqual(400, code) self.assertEqual(data, {"message": "No such resources."}) test_msg["data"] = {"path": "abcde"} message = Message(test_msg) self.cellular.id = 1 self.cellular.put_root_by_id(message, response=test_put_with_unknown_data, test=True) def put_complicate_test_cases(self): test_msg = { "id": 1, "method": "put", "param": { "id": "1" }, "resource": "/network/cellulars/1" } # case 1: data valid. test do not check message coming back def test_multi_input_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset( data, { "id": 1, "apn": "internet", "username": "******", "enable": 0, "name": "wwan1", "ip": "", "gateway": "", "dns": "", "dialNumber": "9999", "password": "", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"username": "******", "dialNumber": "9999"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_multi_input_with_valid_data, test=True) def test_get_root(code=200, data=None): self.assertEqual(200, code) self.cellular.get_root_by_id(message, response=test_get_root, test=True) def test_enable_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset( data, { "id": 1, "apn": "internet", "username": "******", "enable": 1, "name": "wwan1", "ip": "", "gateway": "", "dns": "", "dialNumber": "9999", "password": "", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"enable": 1} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_enable_with_valid_data, test=True) def test_apn_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset( data, { "id": 1, "apn": "hinet", "username": "******", "enable": 1, "name": "wwan1", "ip": "", "gateway": "", "dns": "", "dialNumber": "9999", "password": "", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"apn": "hinet"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_apn_with_valid_data, test=True) def test_username_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset( data, { "id": 1, "apn": "hinet", "username": "******", "enable": 1, "name": "wwan1", "ip": "", "gateway": "", "dns": "", "dialNumber": "9999", "password": "", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"username": "******"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_username_with_valid_data, test=True) def test_name_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset( data, { "id": 1, "apn": "hinet", "username": "******", "enable": 1, "name": "root", "ip": "", "gateway": "", "dns": "", "dialNumber": "9999", "password": "", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"name": "root"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_name_with_valid_data, test=True) def test_dialNumber_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset( data, { "id": 1, "apn": "hinet", "username": "******", "enable": 1, "name": "root", "ip": "", "gateway": "", "dns": "", "dialNumber": "*88#", "password": "", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"dialNumber": "*88#"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_dialNumber_valid_data, test=True) def test_password_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset( data, { "id": 1, "apn": "hinet", "username": "******", "enable": 1, "name": "root", "ip": "", "gateway": "", "dns": "", "dialNumber": "*88#", "password": "******", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"password": "******"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_password_with_valid_data, test=True) def test_enableAuth_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset( data, { "id": 1, "apn": "hinet", "username": "******", "enable": 1, "name": "root", "ip": "", "gateway": "", "dns": "", "dialNumber": "*88#", "password": "******", "pinCode": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 1, "status": 0, "authType": "BOTH", "delay": 40 }) test_msg["data"] = { "enableAuth": 1, "authType": "BOTH", "username": "******", "password": "******" } message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_enableAuth_with_valid_data, test=True) def test_enableAuth_with_no_username(code=200, data=None): self.assertEqual(400, code) self.assertEqual(data, {"message": "require field is empty."}) test_msg["data"] = {"enableAuth": 1, "username": ""} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_enableAuth_with_no_username, test=True) def test_authType_with_invalid_data(code=200, data=None): self.assertEqual(400, code) self.assertEqual(data, {"message": "Data invalid."}) test_msg["data"] = {"authType": "SSS"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_authType_with_invalid_data, test=True) def test_authType_with_valid_data(code=200, data=None): self.assertEqual(200, code) test_msg["data"] = {"authType": "PAP"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_authType_with_valid_data, test=True) def get_complicate_test_cases(self): test_msg = { "id": 1, "method": "get", "param": { "id": "1" }, "resource": "/network/cellulars" } def test_get_with_correct_id(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset( data, { "id": 0, "apn": "hinet", "username": "******", "enable": 1, "name": "root", "ip": "", "gateway": "", "dns": "", "dialNumber": "*88#", "password": "******", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "delay": 40 }) message = Message(test_msg) self.cellular.get_root_by_id(message, response=test_get_with_correct_id, test=True) def test_pincode_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset( data, { "id": 0, "apn": "hinet", "username": "******", "enable": 1, "name": "root", "ip": "", "gateway": "", "dns": "", "dialNumber": "*88#", "password": "******", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "delay": 40 }) test_msg["data"] = {"id": "0", "pinCode": "0000"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_pincode_with_valid_data, test=True) def get_test_cases(self): test_msg = {"id": 1, "method": "get", "resource": "/network/cellulars"} # case 1: data def test_get_root(code=200, data=None): self.assertEqual(200, code) message = Message(test_msg) self.cellular.get_root(message, response=test_get_root, test=True) def test_get_signal_by_id(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value = "-80" res = self.cellular.get_signal_by_id(0) self.assertEqual(res, -80) def test_get_signal_by_id_fail(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value = "" res = self.cellular.get_signal_by_id(0) self.assertEqual(res, 99) def test_get_signal_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.side_effect = Exception res = self.cellular.get_signal_by_id(0) self.assertEqual(res, 0) def test_get_cops_by_id(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.modemcmd") as modemcmd: modemcmd.return_value = "+COPS: 0,0,\"Chunghwa Telecom\",2\r\nOK" res = self.cellular.get_cops_by_id(0) self.assertEqual(res, "Chunghwa Telecom") def test_get_cops_by_id_fail(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.modemcmd") as modemcmd: modemcmd.return_value = "" res = self.cellular.get_cops_by_id(0) self.assertEqual(res, "Unknown Operator") def test_get_cops_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.modemcmd") as modemcmd: modemcmd.side_effect = Exception res = self.cellular.get_cops_by_id(0) self.assertEqual(res, "Unknown Operator") def test_get_status_by_id_disconnect(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value =\ "Connection status: 'disconnected'" subprocess.call.return_value = True res = self.cellular.get_status_by_id(0) self.assertEqual(res, 0) def test_get_status_by_id_connect(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value =\ "Connection status: 'connected'" subprocess.call.return_value = True res = self.cellular.get_status_by_id(0) self.assertEqual(res, 1) def test_get_status_by_id_search_fail(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value =\ "xxxx" subprocess.call.return_value = None res = self.cellular.get_status_by_id(0) self.assertEqual(res, 2) def test_get_status_by_id_with_no_cid(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: self.cellular.cid = "1234" subprocess.check_output.return_value = True subprocess.call.return_value = True res = self.cellular.get_status_by_id(0) self.assertEqual(res, 2) def test_get_status_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.side_effect = Exception res = self.cellular.get_status_by_id(0) self.assertEqual(res, 2) def test_set_online_by_id(self): self.cellular = Cellular(connection=Mockup()) self.cellular.model.db = [{ 'enable': 1, 'name': 'wwan1', 'modemPort': '/dev/ttyS0', 'id': 0, 'atPort': '/dev/ttyS0', 'enableAuth': 1, 'apn': 'internet', 'authType': 'PAP', 'username': '******', 'password': '******' }] self.cellular.check_dhclient = Mock() with patch("cellular.subprocess") as subprocess: subprocess.check_output.\ return_value = "\ Packet data handle: '123'\ CID: '23'" self.cellular.cid = "1234" res = self.cellular.set_online_by_id(0) self.assertEqual(res, True) def test_set_online_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.side_effect = Exception res = self.cellular.set_online_by_id(0) self.assertFalse(res) def test_set_offline_by_id_with_no_cid(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value = True self.cellular.cid = "" self.cellular.pdh = "" res = self.cellular.set_offline_by_id(0) self.assertEqual(res, True) def test_set_offline_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.side_effect = Exception res = self.cellular.set_offline_by_id(0) self.assertFalse(res) def test_search_name(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_name() self.assertEqual(res, 'eth0') def test_search_name_fail(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext_fail res = self.cellular.search_name() self.assertEqual(res, 'N/A') def test_search_router(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_router() self.assertEqual(res, '192.168.31.115') def test_search_router_fail(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext_fail res = self.cellular.search_router() self.assertEqual(res, 'N/A') def test_search_dns(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_dns() self.assertEqual(res, ["8.8.8.58", "20.20.20.20", "40.40.4.1"]) def test_search_dns_fail(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext_fail res = self.cellular.search_dns() self.assertEqual(res, 'N/A') def test_search_ip(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_ip() self.assertEqual(res, '192.168.10.26') def test_search_ip_fail(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext_fail res = self.cellular.search_ip() self.assertEqual(res, 'N/A') def test_search_subnet(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_subnet() self.assertEqual(res, '255.255.0.0') def test_search_subnet_fail(self): self.cellular = Cellular(connection=Mockup()) res = self.cellular.search_subnet() self.assertEqual(res, 'N/A') def test_reconnect_if_disconnected(self): self.cellular.model.db = [{ 'enable': 1, 'modemPort': '/dev/ttyS0', 'atPort': '/dev/ttyS0', 'id': 0, 'apn': 'internet' }] self.cellular.get_signal_by_id = Mock(return_value=99) self.cellular.set_signal_led = Mock() self.cellular.is_target_device_appear = Mock(return_value=False) self.cellular.get_status_by_id = Mock(return_value=0) self.cellular.get_cops_by_id = Mock(return_value="unknown") self.cellular.publish.event = Mock() self.cellular.reconnect_if_disconnected() self.assertEqual(self.cellular.model.db[0]['signal'], 99) def test_reconnect_if_disconnected_operator_fail(self): self.cellular.model.db = [{ 'enable': 1, 'name': "wwan1", 'modemPort': '/dev/ttyS0', 'atPort': '/dev/ttyS0', 'id': 0, 'apn': 'internet' }] self.cellular.get_signal_by_id = Mock(return_value=99) self.cellular.set_signal_led = Mock() self.cellular.is_target_device_appear = Mock(return_value=True) self.cellular.get_status_by_id = Mock(return_value=2) self.cellular.get_cops_by_id = Mock(return_value="unknown") self.cellular.publish.event = Mock() self.cellular.reconnect_if_disconnected() self.assertEqual(self.cellular.model.db[0]['signal'], 99) def test_reconnect_if_disconnected_current_offline_setting_offline(self): self.cellular.model.db = [{ 'enable': 1, 'name': 'wwan1', 'modemPort': '/dev/ttyS0', 'atPort': '/dev/ttyS0', 'enable': 0, 'id': 0, 'apn': 'internet' }] self.cellular.get_signal_by_id = Mock(return_value=99) self.cellular.set_signal_led = Mock() self.cellular.is_target_device_appear = Mock(return_value=True) self.cellular.get_status_by_id = Mock(return_value=0) self.cellular.get_cops_by_id = Mock(return_value="unknown") self.cellular.publish.event = Mock() self.cellular.reconnect_if_disconnected() self.assertEqual(self.cellular.model.db[0]['signal'], 99) def test_reconnect_if_disconnected_when_disconnect_and_enable_true(self): self.cellular.model.db = [{ 'enable': 1, 'name': "wwan1", 'modemPort': '/dev/ttyS0', 'atPort': '/dev/ttyS0', 'id': 0, 'apn': 'internet' }] self.cellular.is_target_device_appear = Mock(return_value=True) self.cellular.get_signal_by_id = Mock(return_value=78) self.cellular.set_signal_led = Mock() self.cellular.get_status_by_id = Mock(return_value=0) self.cellular.get_cops_by_id = Mock(return_value="unknown") self.cellular.is_leases_file_appear = Mock(return_value=self.filetext) self.cellular.set_offline_by_id = Mock() self.cellular.set_online_by_id = Mock() self.cellular.publish.event = Mock() self.cellular.reconnect_if_disconnected() self.assertEqual(self.cellular.model.db[0]['signal'], 78) def test_reconnect_if_disconnected_when_connect_and_enable_false(self): self.cellular.model.db = [{ 'enable': 0, 'name': 'wwan1', 'atPort': '/dev/ttyS0', 'modemPort': '/dev/ttyS0', 'id': 0 }] self.cellular.is_target_device_appear = Mock(return_value=True) self.cellular.get_signal_by_id = Mock(return_value=78) self.cellular.set_signal_led = Mock() self.cellular.get_status_by_id = Mock(return_value=1) self.cellular.get_cops_by_id = Mock(return_value="unknown") self.cellular.is_leases_file_appear = Mock(return_value=self.filetext) self.cellular.publish.event = Mock() self.cellular.reconnect_if_disconnected() self.assertEqual(self.cellular.model.db[0]['signal'], 78) def test_reconnect_if_disconnected_when_disconnect_and_enable_false(self): self.cellular.model.db = [{ 'enable': 1, 'name': "wwan1", 'atPort': '/dev/ttyS0', 'modemPort': '/dev/ttyS0', 'id': 0 }] self.cellular.is_target_device_appear = Mock(return_value=True) self.cellular.get_signal_by_id = Mock(return_value=78) self.cellular.set_signal_led = Mock() self.cellular.get_status_by_id = Mock(return_value=1) self.cellular.get_cops_by_id = Mock(return_value="unknown") self.cellular.is_leases_file_appear = Mock(return_value=self.filetext) self.cellular.publish.event = Mock() self.cellular.reconnect_if_disconnected() self.assertEqual(self.cellular.model.db[0]['signal'], 78) def test_is_target_device_appear(self): res = self.cellular.is_target_device_appear('data/cellular.json') self.assertEqual(res, True) def test_is_target_device_appear_false(self): res = self.cellular.is_target_device_appear('/dev/asdfasdf') self.assertEqual(res, False) def test_init(self): with patch("cellular.ModelInitiator") as model: model.return_value.db.__getitem__.return_value = 1 self.cellular.set_pincode_by_id = Mock(return_value=True) self.cellular.init()
def test_get_status_by_id(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.call.return_value = True res = self.cellular.get_status_by_id('1') self.assertEqual(res, 'disconnected')
def test_search_name(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_name() self.assertEqual(res, 'eth0')
def test_search_dns_fail(self): self.cellular = Cellular(connection=Mockup()) res = self.cellular.search_dns(self.filetext_fail) self.assertEqual(res, 'N/A')
def test_search_ip(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_ip() self.assertEqual(res, '192.168.10.26')
class TestCellular(unittest.TestCase): filetext = "\ lease {\n\ interface \"eth0\"\n\ fixed-address 192.168.10.26\n\ option subnet-mask 255.255.0.0\n\ option routers 192.168.31.115\n\ option dhcp-lease-time 5566\n\ option dhcp-message-type 5\n\ option domain-name-server 8.8.8.58 20.20.20.20 40.40.4.1\n\ option dhcp-server-identifier 192.168.31.115\n\ option domain-name \"MXcloud115\"\n\ renew 3 2014/10/29 12:52:19\n\ rebind 3 2014/10/29 13:37:52\n\ expire 3 2014/10/29 13:49:28\n\ }\n\ " filetext_fail = " " @patch("cellular.Cellular.set_pincode_by_id") def setUp(self, set_pincode_by_id): sh.echo("1234, 1234", _out="/run/shm/cellular.tmp") try: os.unlink(dirpath + "/../data/cellular.json") except Exception: pass set_pincode_by_id.return_value = True self.cellular = Cellular(connection=Mockup()) def tearDown(self): self.cellular = None @patch("cellular.subprocess") def put_simple_test_cases(self, subprocess): subprocess.check_output.return_value = True subprocess.call.return_value = True test_msg = { "id": 12345, "method": "put", "param": {"id": "1"}, "resource": "/network/cellulars" } # case 1: no data attribute def test_put_with_no_data(code=200, data=None): self.assertEqual(400, code) self.assertEqual(data, {"message": "Invalid Input."}) message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_put_with_no_data, test=True) # case 2: data dict is empty or no enable exist def test_put_with_random_data(code=200, data=None): self.assertEqual(400, code) self.assertEqual(data, {"message": "No such resources."}) test_msg["data"] = dict() message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_put_with_random_data, test=True) # case 3: data not found def test_put_with_unknown_data(code=200, data=None): self.assertEqual(400, code) self.assertEqual(data, {"message": "No such resources."}) test_msg["data"] = {"path": "abcde"} message = Message(test_msg) self.cellular.id = 1 self.cellular.put_root_by_id(message, response=test_put_with_unknown_data, test=True) def put_complicate_test_cases(self): test_msg = { "id": 1, "method": "put", "param": {"id": "1"}, "resource": "/network/cellulars/1" } # case 1: data valid. test do not check message coming back def test_multi_input_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset(data, {"id": 1, "apn": "internet", "username": "******", "enable": 0, "name": "wwan1", "ip": "", "gateway": "", "dns": "", "dialNumber": "9999", "password": "", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"username": "******", "dialNumber": "9999"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_multi_input_with_valid_data, test=True) def test_get_root(code=200, data=None): self.assertEqual(200, code) self.cellular.get_root_by_id(message, response=test_get_root, test=True) def test_enable_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset(data, {"id": 1, "apn": "internet", "username": "******", "enable": 1, "name": "wwan1", "ip": "", "gateway": "", "dns": "", "dialNumber": "9999", "password": "", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"enable": 1} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_enable_with_valid_data, test=True) def test_apn_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset(data, {"id": 1, "apn": "hinet", "username": "******", "enable": 1, "name": "wwan1", "ip": "", "gateway": "", "dns": "", "dialNumber": "9999", "password": "", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"apn": "hinet"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_apn_with_valid_data, test=True) def test_username_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset(data, {"id": 1, "apn": "hinet", "username": "******", "enable": 1, "name": "wwan1", "ip": "", "gateway": "", "dns": "", "dialNumber": "9999", "password": "", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"username": "******"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_username_with_valid_data, test=True) def test_name_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset(data, {"id": 1, "apn": "hinet", "username": "******", "enable": 1, "name": "root", "ip": "", "gateway": "", "dns": "", "dialNumber": "9999", "password": "", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"name": "root"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_name_with_valid_data, test=True) def test_dialNumber_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset(data, {"id": 1, "apn": "hinet", "username": "******", "enable": 1, "name": "root", "ip": "", "gateway": "", "dns": "", "dialNumber": "*88#", "password": "", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"dialNumber": "*88#"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_dialNumber_valid_data, test=True) def test_password_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset(data, {"id": 1, "apn": "hinet", "username": "******", "enable": 1, "name": "root", "ip": "", "gateway": "", "dns": "", "dialNumber": "*88#", "password": "******", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "authType": "PAP", "delay": 40 }) test_msg["data"] = {"password": "******"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_password_with_valid_data, test=True) def test_enableAuth_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset(data, {"id": 1, "apn": "hinet", "username": "******", "enable": 1, "name": "root", "ip": "", "gateway": "", "dns": "", "dialNumber": "*88#", "password": "******", "pinCode": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 1, "status": 0, "authType": "BOTH", "delay": 40 }) test_msg["data"] = {"enableAuth": 1, "authType": "BOTH", "username": "******", "password": "******"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_enableAuth_with_valid_data, test=True) def test_enableAuth_with_no_username(code=200, data=None): self.assertEqual(400, code) self.assertEqual(data, {"message": "require field is empty."}) test_msg["data"] = {"enableAuth": 1, "username": ""} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_enableAuth_with_no_username, test=True) def test_authType_with_invalid_data(code=200, data=None): self.assertEqual(400, code) self.assertEqual(data, {"message": "Data invalid."}) test_msg["data"] = {"authType": "SSS"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_authType_with_invalid_data, test=True) def test_authType_with_valid_data(code=200, data=None): self.assertEqual(200, code) test_msg["data"] = {"authType": "PAP"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_authType_with_valid_data, test=True) def get_complicate_test_cases(self): test_msg = { "id": 1, "method": "get", "param": {"id": "1"}, "resource": "/network/cellulars" } def test_get_with_correct_id(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset(data, {"id": 0, "apn": "hinet", "username": "******", "enable": 1, "name": "root", "ip": "", "gateway": "", "dns": "", "dialNumber": "*88#", "password": "******", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "delay": 40 }) message = Message(test_msg) self.cellular.get_root_by_id(message, response=test_get_with_correct_id, test=True) def test_pincode_with_valid_data(code=200, data=None): self.assertEqual(200, code) self.assertDictContainsSubset(data, {"id": 0, "apn": "hinet", "username": "******", "enable": 1, "name": "root", "ip": "", "gateway": "", "dns": "", "dialNumber": "*88#", "password": "******", "pinCode": "", "authType": "", "modemPort": "/dev/cdc-wdm1", "atPort": "/dev/ttyUSB2", "enableAuth": 0, "status": 0, "delay": 40 }) test_msg["data"] = {"id": "0", "pinCode": "0000"} message = Message(test_msg) self.cellular.put_root_by_id(message, response=test_pincode_with_valid_data, test=True) def get_test_cases(self): test_msg = { "id": 1, "method": "get", "resource": "/network/cellulars" } # case 1: data def test_get_root(code=200, data=None): self.assertEqual(200, code) message = Message(test_msg) self.cellular.get_root(message, response=test_get_root, test=True) def test_get_signal_by_id(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value = "-80" res = self.cellular.get_signal_by_id(0) self.assertEqual(res, -80) def test_get_signal_by_id_fail(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value = "" res = self.cellular.get_signal_by_id(0) self.assertEqual(res, 99) def test_get_signal_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.side_effect = Exception res = self.cellular.get_signal_by_id(0) self.assertEqual(res, 0) def test_get_cops_by_id(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.modemcmd") as modemcmd: modemcmd.return_value = "+COPS: 0,0,\"Chunghwa Telecom\",2\r\nOK" res = self.cellular.get_cops_by_id(0) self.assertEqual(res, "Chunghwa Telecom") def test_get_cops_by_id_fail(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.modemcmd") as modemcmd: modemcmd.return_value = "" res = self.cellular.get_cops_by_id(0) self.assertEqual(res, "Unknown Operator") def test_get_cops_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.modemcmd") as modemcmd: modemcmd.side_effect = Exception res = self.cellular.get_cops_by_id(0) self.assertEqual(res, "Unknown Operator") def test_get_status_by_id_disconnect(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value =\ "Connection status: 'disconnected'" subprocess.call.return_value = True res = self.cellular.get_status_by_id(0) self.assertEqual(res, 0) def test_get_status_by_id_connect(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value =\ "Connection status: 'connected'" subprocess.call.return_value = True res = self.cellular.get_status_by_id(0) self.assertEqual(res, 1) def test_get_status_by_id_search_fail(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value =\ "xxxx" subprocess.call.return_value = None res = self.cellular.get_status_by_id(0) self.assertEqual(res, 2) def test_get_status_by_id_with_no_cid(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: self.cellular.cid = "1234" subprocess.check_output.return_value = True subprocess.call.return_value = True res = self.cellular.get_status_by_id(0) self.assertEqual(res, 2) def test_get_status_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.side_effect = Exception res = self.cellular.get_status_by_id(0) self.assertEqual(res, 2) def test_set_online_by_id(self): self.cellular = Cellular(connection=Mockup()) self.cellular.model.db = [{'enable': 1, 'name': 'wwan1', 'modemPort': '/dev/ttyS0', 'id': 0, 'atPort': '/dev/ttyS0', 'enableAuth': 1, 'apn': 'internet', 'authType': 'PAP', 'username': '******', 'password': '******'}] self.cellular.check_dhclient = Mock() with patch("cellular.subprocess") as subprocess: subprocess.check_output.\ return_value = "\ Packet data handle: '123'\ CID: '23'" self.cellular.cid = "1234" res = self.cellular.set_online_by_id(0) self.assertEqual(res, True) def test_set_online_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.side_effect = Exception res = self.cellular.set_online_by_id(0) self.assertFalse(res) def test_set_offline_by_id_with_no_cid(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.return_value = True self.cellular.cid = "" self.cellular.pdh = "" res = self.cellular.set_offline_by_id(0) self.assertEqual(res, True) def test_set_offline_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.side_effect = Exception res = self.cellular.set_offline_by_id(0) self.assertFalse(res) def test_search_name(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_name() self.assertEqual(res, 'eth0') def test_search_name_fail(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext_fail res = self.cellular.search_name() self.assertEqual(res, 'N/A') def test_search_router(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_router() self.assertEqual(res, '192.168.31.115') def test_search_router_fail(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext_fail res = self.cellular.search_router() self.assertEqual(res, 'N/A') def test_search_dns(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_dns() self.assertEqual(res, ["8.8.8.58", "20.20.20.20", "40.40.4.1"]) def test_search_dns_fail(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext_fail res = self.cellular.search_dns() self.assertEqual(res, 'N/A') def test_search_ip(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_ip() self.assertEqual(res, '192.168.10.26') def test_search_ip_fail(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext_fail res = self.cellular.search_ip() self.assertEqual(res, 'N/A') def test_search_subnet(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_subnet() self.assertEqual(res, '255.255.0.0') def test_search_subnet_fail(self): self.cellular = Cellular(connection=Mockup()) res = self.cellular.search_subnet() self.assertEqual(res, 'N/A') def test_reconnect_if_disconnected(self): self.cellular.model.db = [{'enable': 1, 'modemPort': '/dev/ttyS0', 'atPort': '/dev/ttyS0', 'id': 0, 'apn': 'internet'}] self.cellular.get_signal_by_id = Mock(return_value=99) self.cellular.set_signal_led = Mock() self.cellular.is_target_device_appear = Mock(return_value=False) self.cellular.get_status_by_id = Mock(return_value=0) self.cellular.get_cops_by_id = Mock(return_value="unknown") self.cellular.publish.event = Mock() self.cellular.reconnect_if_disconnected() self.assertEqual(self.cellular.model.db[0]['signal'], 99) def test_reconnect_if_disconnected_operator_fail(self): self.cellular.model.db = [{'enable': 1, 'name': "wwan1", 'modemPort': '/dev/ttyS0', 'atPort': '/dev/ttyS0', 'id': 0, 'apn': 'internet'}] self.cellular.get_signal_by_id = Mock(return_value=99) self.cellular.set_signal_led = Mock() self.cellular.is_target_device_appear = Mock(return_value=True) self.cellular.get_status_by_id = Mock(return_value=2) self.cellular.get_cops_by_id = Mock(return_value="unknown") self.cellular.publish.event = Mock() self.cellular.reconnect_if_disconnected() self.assertEqual(self.cellular.model.db[0]['signal'], 99) def test_reconnect_if_disconnected_current_offline_setting_offline(self): self.cellular.model.db = [{'enable': 1, 'name': 'wwan1', 'modemPort': '/dev/ttyS0', 'atPort': '/dev/ttyS0', 'enable': 0, 'id': 0, 'apn': 'internet'}] self.cellular.get_signal_by_id = Mock(return_value=99) self.cellular.set_signal_led = Mock() self.cellular.is_target_device_appear = Mock(return_value=True) self.cellular.get_status_by_id = Mock(return_value=0) self.cellular.get_cops_by_id = Mock(return_value="unknown") self.cellular.publish.event = Mock() self.cellular.reconnect_if_disconnected() self.assertEqual(self.cellular.model.db[0]['signal'], 99) def test_reconnect_if_disconnected_when_disconnect_and_enable_true(self): self.cellular.model.db = [{'enable': 1, 'name': "wwan1", 'modemPort': '/dev/ttyS0', 'atPort': '/dev/ttyS0', 'id': 0, 'apn': 'internet'}] self.cellular.is_target_device_appear = Mock(return_value=True) self.cellular.get_signal_by_id = Mock(return_value=78) self.cellular.set_signal_led = Mock() self.cellular.get_status_by_id = Mock(return_value=0) self.cellular.get_cops_by_id = Mock(return_value="unknown") self.cellular.is_leases_file_appear = Mock(return_value=self.filetext) self.cellular.set_offline_by_id = Mock() self.cellular.set_online_by_id = Mock() self.cellular.publish.event = Mock() self.cellular.reconnect_if_disconnected() self.assertEqual(self.cellular.model.db[0]['signal'], 78) def test_reconnect_if_disconnected_when_connect_and_enable_false(self): self.cellular.model.db = [{'enable': 0, 'name': 'wwan1', 'atPort': '/dev/ttyS0', 'modemPort': '/dev/ttyS0', 'id': 0}] self.cellular.is_target_device_appear = Mock(return_value=True) self.cellular.get_signal_by_id = Mock(return_value=78) self.cellular.set_signal_led = Mock() self.cellular.get_status_by_id = Mock(return_value=1) self.cellular.get_cops_by_id = Mock(return_value="unknown") self.cellular.is_leases_file_appear = Mock(return_value=self.filetext) self.cellular.publish.event = Mock() self.cellular.reconnect_if_disconnected() self.assertEqual(self.cellular.model.db[0]['signal'], 78) def test_reconnect_if_disconnected_when_disconnect_and_enable_false(self): self.cellular.model.db = [{'enable': 1, 'name': "wwan1", 'atPort': '/dev/ttyS0', 'modemPort': '/dev/ttyS0', 'id': 0}] self.cellular.is_target_device_appear = Mock(return_value=True) self.cellular.get_signal_by_id = Mock(return_value=78) self.cellular.set_signal_led = Mock() self.cellular.get_status_by_id = Mock(return_value=1) self.cellular.get_cops_by_id = Mock(return_value="unknown") self.cellular.is_leases_file_appear = Mock(return_value=self.filetext) self.cellular.publish.event = Mock() self.cellular.reconnect_if_disconnected() self.assertEqual(self.cellular.model.db[0]['signal'], 78) def test_is_target_device_appear(self): res = self.cellular.is_target_device_appear('data/cellular.json') self.assertEqual(res, True) def test_is_target_device_appear_false(self): res = self.cellular.is_target_device_appear('/dev/asdfasdf') self.assertEqual(res, False) def test_init(self): with patch("cellular.ModelInitiator") as model: model.return_value.db.__getitem__.return_value = 1 self.cellular.set_pincode_by_id = Mock(return_value=True) self.cellular.init()
def test_search_subnet(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_subnet() self.assertEqual(res, '255.255.0.0')
class Bricka: def __init__(self, driver_type = driverType, width = 320, height = 240): self.use_cellular_paddle = False self.use_cellular_brick = False self.font_height = 20 self.back_color = SColor(255, 80, 80, 80) self.white = SColor(255, 255, 255, 255) self.brick_color = SColor(255, 200, 200, 0) self.ball_vel_default = position2di(2, -2) self.texture_paddle = None self.texture_brick = None self.help_dialog = None self.video_driver = None self.scene_manager = None self.gui_environment = None self.font_text = None self.font_chess = None self.skin = None p = SIrrlichtCreationParameters() p.DriverType = driverType p.WindowSize = dimension2du(width, height) p.AntiAlias = True p.WithAlphaChannel = True self.device = createDeviceEx(p) if self.device: self.device.setResizable(True) self.device.setWindowCaption('bricka (a breakout clone by codeNtronix.com)') self.video_driver = self.device.getVideoDriver() self.scene_manager = self.device.getSceneManager() self.gui_environment = self.device.getGUIEnvironment() # icon if is_frozen(): self.video_driver.SetIcon(101) else: self.video_driver.SetIcon() # skin self.skin = self.gui_environment.getSkin() for i in range(EGDC_COUNT): col = self.skin.getColor(i) col.setAlpha(200) self.skin.setColor(i, col) if (i + 2) > EGDC_COUNT: break # font self.font = CGUITTFont(self.gui_environment, os.environ['SYSTEMROOT']+'/Fonts/arial.ttf', self.font_height) if self.font: self.skin.setFont(self.font) # add 3d ball #~ self.ball3d = self.scene_manager.addSphereSceneNode(float(BALL_DIAMETER)) # add camera for 3d view self.camera = self.scene_manager.addCameraSceneNode(position = vector3df(0,0,-400)) #~ self.camera = self.scene_manager.addCameraSceneNodeMaya(distance = 400) # initialize first level self.init_game() def offset_x(self, rect, value): rect.UpperLeftCorner.X += value rect.LowerRightCorner.X += value def offset_y(self, rect, value): rect.UpperLeftCorner.Y += value rect.LowerRightCorner.Y += value def offset(self, rect, x, y): self.offset_x(rect, x) self.offset_y(rect, y) def set_ball_x(self, value): self.ball.UpperLeftCorner.X = value self.ball.LowerRightCorner.X = value + BALL_DIAMETER def set_ball_y(self, value): self.ball.UpperLeftCorner.Y = value self.ball.LowerRightCorner.Y = value + BALL_DIAMETER def set_paddle_x(self, value): self.paddle.UpperLeftCorner.X = value self.paddle.LowerRightCorner.X = value + self.paddle_width def set_paddle_y(self, value): self.paddle.UpperLeftCorner.Y = value self.paddle.LowerRightCorner.Y = value + self.paddle_height def init_game(self): screen_size = self.video_driver.getScreenSize() self.brick_width = abs(screen_size.X / 11) self.brick_height = abs(screen_size.X / 32) self.paddle_width = 60 self.paddle_height = 12 self.max_paddle_x = screen_size.X - self.paddle_width self.max_ball_x = screen_size.X - BALL_DIAMETER self.max_ball_y = screen_size.Y - BALL_DIAMETER # Paddle X,Y coordinate self.paddle_x = (screen_size.X - self.paddle_width) / 2 self.paddle_y = screen_size.Y - self.paddle_height - 10 # ball X,Y coordinate self.ball_x = self.paddle_x self.ball_y = self.paddle_y - BALL_DIAMETER self.lives = 3 self.score = 0 self.state = STATE_BALL_IN_PADDLE self.paddle = recti(self.paddle_x, self.paddle_y, self.paddle_x + self.paddle_width, self.paddle_y + self.paddle_height) self.ball = recti(self.ball_x, self.ball_y, self.ball_x + BALL_DIAMETER, self.ball_y + BALL_DIAMETER) self.ball_vel = self.ball_vel_default #~ self.ball3d.setPosition(vector3df(self.ball_x, self.ball_y, 0)) # cellular texture generator self.cell_paddle = Cellular(self.video_driver, self.paddle_width, self.paddle_height, 128) self.cell_brick = Cellular(self.video_driver, self.brick_width, self.brick_height, 128) if not self.texture_paddle: self.texture_paddle = self.cell_paddle.get_texture() else: self.texture_paddle = self.cell_paddle.get_new_texture(cellSize = 8, density = 4.0, rand_range_count = 25) if not self.texture_brick: self.texture_brick = self.cell_brick.get_texture() else: self.texture_brick = self.cell_brick.get_new_texture(mFact = .5, lPower = .5) self.create_bricks() def show_stats(self): if self.font: text = 'SCORE: %d LIVES: %d' % (self.score, self.lives) screen_size = self.video_driver.getScreenSize() text_dimension = self.font.getDimension(text) self.font.draw(text, recti((screen_size.X - text_dimension.Width) / 2, 5, text_dimension.Width, self.font_height), self.white) def show_message(self, message): if self.font: screen_size = self.video_driver.getScreenSize() delta_y = 0 for text in message: text_dimension = self.font.getDimension(text) self.font.draw(text, recti((screen_size.X - text_dimension.Width) / 2, screen_size.Y / 2 + delta_y, text_dimension.Width, (screen_size.Y - text_dimension.Height) / 2 + delta_y), self.white) delta_y += text_dimension.Height def create_bricks(self): screen_size = self.video_driver.getScreenSize() x_delta = self.brick_width + 10 count_rows = abs(screen_size.Y / 68) count_columns = abs(screen_size.X / x_delta - 1) x1 = (screen_size.X - x_delta * count_columns) / 2 y_ofs = 35 self.bricks = [] for i in range(count_rows): x_ofs = x1 for j in range(count_columns): self.bricks.append(recti(x_ofs, y_ofs, x_ofs + self.brick_width, y_ofs + self.brick_height)) x_ofs += x_delta y_ofs += self.brick_height + 5 def draw_bricks(self): for brick in self.bricks: if self.texture_brick and self.use_cellular_brick: self.video_driver.draw2DImage(self.texture_brick, brick.UpperLeftCorner) else: self.video_driver.draw2DRectangle(self.brick_color, brick) def move_ball(self): self.offset(self.ball, self.ball_vel.X, self.ball_vel.Y) if self.ball.UpperLeftCorner.X <= 0: self.set_ball_x(0) self.ball_vel.X = -self.ball_vel.X elif self.ball.UpperLeftCorner.X >= self.max_ball_x: self.set_ball_x(self.max_ball_x) self.ball_vel.X = -self.ball_vel.X if self.ball.UpperLeftCorner.Y < 0: self.set_ball_y(0) self.ball_vel.Y = -self.ball_vel.Y elif self.ball.UpperLeftCorner.Y >= self.max_ball_y: self.set_ball_y(self.max_ball_y) self.ball_vel.Y = -self.ball_vel.Y def handle_collisions(self): result = None for brick in self.bricks: if self.ball.isRectCollided(brick): self.score += 3 self.ball_vel.Y = -self.ball_vel.Y self.bricks.remove(brick) result = brick break if len(self.bricks) == 0: self.state = STATE_WON if self.ball.isRectCollided(self.paddle): self.set_ball_y(self.paddle_y - BALL_DIAMETER) self.ball_vel.Y = -self.ball_vel.Y elif self.ball.UpperLeftCorner.Y > self.paddle.UpperLeftCorner.Y: self.lives -= 1 if self.lives > 0: self.state = STATE_BALL_IN_PADDLE else: self.state = STATE_GAME_OVER return result def run(self): destroyed_brick = None destroyed_color1 = SColor(255, 0, 255, 0) destroyed_color2 = SColor(255, 255, 255, 0) destroyed_color3 = SColor(255, 0, 0, 255) destroyed_color4 = SColor(255, 255, 0, 0) color_red = SColor(255, 200, 0, 0) color_yellow = SColor(255, 200, 200, 0) color_green = SColor(255, 0, 200, 0) color_blue = SColor(255, 0, 0, 200) i_event_receiver = event_receiver() i_event_receiver.game = self self.device.setEventReceiver(i_event_receiver) self.device.getTimer().setSpeed(10.0) while self.device.run(): if self.device.isWindowActive(): if i_event_receiver.stop: break if self.video_driver.beginScene(True, True, self.back_color): if self.state == STATE_PLAYING: if not self.help_dialog: if self.device.getTimer().getTime() > 100: self.move_ball() self.device.getTimer().setTime(0) pos = self.handle_collisions() if pos: destroyed_brick = pos if destroyed_brick: if self.use_cellular_brick: self.video_driver.draw2DRectangle(destroyed_color1, destroyed_brick) else: self.video_driver.draw2DRectangle(destroyed_brick, destroyed_color1, destroyed_color2, destroyed_color3, destroyed_color4) destroyed_color2.a = destroyed_color2.a - 25 destroyed_color3.a = destroyed_color3.a - 25 destroyed_color4.a = destroyed_color4.a - 25 destroyed_color1.a = destroyed_color1.a - 25 if destroyed_color1.a < 50: destroyed_brick = None destroyed_color1.a = 255 if not self.use_cellular_brick: destroyed_color2.a = 255 destroyed_color3.a = 255 destroyed_color4.a = 255 elif self.state == STATE_BALL_IN_PADDLE: self.set_ball_x(self.paddle.UpperLeftCorner.X + self.paddle.getWidth() / 2) self.set_ball_y(self.paddle.UpperLeftCorner.Y - self.ball.getHeight()) self.show_message(('PRESS SPACE', 'TO LAUNCH THE BALL', 'F1 - help, ESC - exit')) elif self.state == STATE_GAME_OVER: self.show_message(('GAME OVER', 'PRESS ENTER TO PLAY AGAIN')) elif self.state == STATE_WON: self.show_message(('YOU WON!', 'PRESS ENTER TO PLAY AGAIN')) self.draw_bricks() # Draw paddle if self.texture_paddle and self.use_cellular_paddle: self.video_driver.draw2DImage(self.texture_paddle, self.paddle.UpperLeftCorner) else: self.video_driver.draw2DRectangle(self.paddle, color_yellow, color_red, color_green, color_blue) # Draw ball #~ self.video_driver.draw2DRectangle(self.white, self.ball) x1, y1 = self.ball.UpperLeftCorner.get_XY() x2, y2 = self.ball.LowerRightCorner.get_XY() self.video_driver.draw2DPolygon(recti(x1 + ball_delta, y1 + ball_delta, x2 + ball_delta, y2 + ball_delta), BALL_RADIUS, self.white) #~ ball_draw = self.ball + ball_delta #~ self.video_driver.draw2DPolygon(ball_draw, BALL_RADIUS, self.white) #~ self.ball3d.setPosition(vector3df(x1 + ball_delta, y1 + ball_delta, 0)) #~ self.scene_manager.drawAll() self.show_stats() if self.help_dialog: self.gui_environment.drawAll() self.video_driver.endScene() self.device.sleep(1) else: self.device._yield() self.device.closeDevice() self.device.drop()
def show(self): """Shows maze using pyirrlicht. Outer walls as optional""" #~ self.device = createDevice(driverType, dimension2du(800, 600)) p = SIrrlichtCreationParameters() p.DriverType = driverType #~ p.Fullscreen = True p.WindowSize = dimension2du(800, 600) p.AntiAlias = True p.WithAlphaChannel = True self.device = createDeviceEx(p) if self.device: self.device.setWindowCaption( 'Irrlicht Engine - 3D Maze generator, written Dolkar from http://www.python-forum.org' ) self.video_driver = self.device.getVideoDriver() self.scene_manager = self.device.getSceneManager() self.gui_environment = self.device.getGUIEnvironment() gui_font = CGUITTFont( self.gui_environment, os.environ['SYSTEMROOT'] + '/Fonts/arial.ttf', 20) if gui_font: self.gui_environment.getSkin().setFont(gui_font) gui_font.drop() # meta triangle selector self.i_meta_triangle_selector = self.scene_manager.createMetaTriangleSelector( ) # cellular texture generator self.cell = Cellular(self.video_driver, 128, 128, 128) #~ sky_node = self.scene_manager.addSkyDomeSceneNode(generate_texture(self.video_driver)) m2d = maze2d(self.video_driver, 50, 50, (255, 255, 255), (100, 100, 100)) sky_node = self.scene_manager.addSkyBoxSceneNode( m2d, m2d, m2d, m2d, m2d, m2d) # create maze volume self.create_level() self.create_outer_walls() # START SPHERE self.sphere_start = self.scene_manager.addSphereSceneNode( 0.25, position=vector3df(*self.start_cell)) material1 = self.sphere_start.getMaterial(0) material1.EmissiveColor = SColor(255, 0, 255, 0) # FINISH SPHERE finish_position = vector3df(*self.end_cell) self.sphere_finish = self.scene_manager.addSphereSceneNode( 0.3, id=ID_FINISH_NODE, position=finish_position) material2 = self.sphere_finish.getMaterial(0) material2.EmissiveColor = SColor(255, 255, 0, 0) self.finish_box = aabbox3df(finish_position - 0.5, finish_position + 0.5) keyMap = SKeyMap(10) keyMap.set(0, EKA_MOVE_FORWARD, KEY_UP) keyMap.set(1, EKA_MOVE_FORWARD, KEY_KEY_W) keyMap.set(2, EKA_MOVE_BACKWARD, KEY_DOWN) keyMap.set(3, EKA_MOVE_BACKWARD, KEY_KEY_S) keyMap.set(4, EKA_STRAFE_LEFT, KEY_LEFT) keyMap.set(5, EKA_STRAFE_LEFT, KEY_KEY_A) keyMap.set(6, EKA_STRAFE_RIGHT, KEY_RIGHT) keyMap.set(7, EKA_STRAFE_RIGHT, KEY_KEY_D) keyMap.set(8, EKA_JUMP_UP, KEY_KEY_J) keyMap.set(9, EKA_CROUCH, KEY_KEY_C) self.camera = self.scene_manager.addCameraSceneNodeFPS( moveSpeed=0.005, jumpSpeed=0.5, keyMapArray=keyMap, keyMapSize=keyMap.length) self.camera.setPosition(vector3df(*self.start_cell)) self.camera.setNearValue(0.001) self.add_animator_to_camera() light_radius = 10.0 if driverType in (EDT_DIRECT3D8, EDT_DIRECT3D9): light_radius = 1.5 elif driverType == EDT_OPENGL: light_radius = 0.1 light = self.scene_manager.addLightSceneNode(self.camera, radius=light_radius) #~ collision_manager = self.scene_manager.getSceneCollisionManager() self.win_dialog = None scolor = SColor(255, 100, 100, 140) i_event_receiver = event_receiver() i_event_receiver.game = self self.device.setEventReceiver(i_event_receiver) while self.device.run(): if self.device.isWindowActive(): if i_event_receiver.stop: break if self.video_driver.beginScene(True, True, scolor): try: self.win_dialog.getID() except: self.win_dialog = None self.camera.setInputReceiverEnabled(True) self.scene_manager.drawAll() if self.finish_box.isPointInside( self.camera.getPosition( )) and not self.win_dialog: self.camera.setInputReceiverEnabled(False) self.win_dialog = self.gui_environment.addMessageBox( 'Warning', 'You is Winner!!!') #~ self.finish_box.reset(0.1, 0.1, 0.1) self.recreate_level() #~ collision_node = collision_manager.getSceneNodeFromCameraBB(self.camera) #~ if collision_node: #~ if collision_node.getID() == ID_FINISH_NODE: #~ self.gui_environment.addMessageBox('Warning', 'You is Winner!!!') self.gui_environment.drawAll() self.video_driver.endScene() #~ self.device.sleep(10) else: self.device.yield_self() self.device.drop() self.device.closeDevice() else: print('ERROR createDevice')
def test_search_router(self): self.cellular = Cellular(connection=Mockup()) res = self.cellular.search_router(self.filetext) self.assertEqual(res, '192.168.31.115')
def setUp(self): def zombiefn(): pass self.cellular = Cellular(connection=Mockup())
def test_set_online_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.side_effect = Exception res = self.cellular.set_online_by_id('1') self.assertEqual(res, 'fail')
def test_search_ip_fail(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext_fail res = self.cellular.search_ip() self.assertEqual(res, 'N/A')
def test_set_offline_by_id_exception(self): self.cellular = Cellular(connection=Mockup()) with patch("cellular.subprocess") as subprocess: subprocess.check_output.side_effect = Exception res = self.cellular.set_offline_by_id(0) self.assertFalse(res)
def test_search_subnet_fail(self): self.cellular = Cellular(connection=Mockup()) res = self.cellular.search_subnet() self.assertEqual(res, 'N/A')
def test_search_dns(self): self.cellular = Cellular(connection=Mockup()) self.cellular.dhclient_info = self.filetext res = self.cellular.search_dns() self.assertEqual(res, ["8.8.8.58", "20.20.20.20", "40.40.4.1"])
def dig(self): areas = Cellular(self._map.size).initialize(40).update( 5, 3, 5).areas().connect() for c in areas: self._map.put(c, '.') return self
class Bricka: def __init__(self, driver_type=driverType, width=320, height=240): self.use_cellular_paddle = False self.use_cellular_brick = False self.font_height = 20 self.back_color = SColor(255, 80, 80, 80) self.white = SColor(255, 255, 255, 255) self.brick_color = SColor(255, 200, 200, 0) self.ball_vel_default = position2di(2, -2) self.texture_paddle = None self.texture_brick = None self.help_dialog = None self.video_driver = None self.scene_manager = None self.gui_environment = None self.font_text = None self.font_chess = None self.skin = None p = SIrrlichtCreationParameters() p.DriverType = driverType p.WindowSize = dimension2du(width, height) p.AntiAlias = True p.WithAlphaChannel = True self.device = createDeviceEx(p) if self.device: self.device.setResizable(True) self.device.setWindowCaption( 'bricka (a breakout clone by codeNtronix.com)') self.video_driver = self.device.getVideoDriver() self.scene_manager = self.device.getSceneManager() self.gui_environment = self.device.getGUIEnvironment() # icon if is_frozen(): self.video_driver.SetIcon(101) else: self.video_driver.SetIcon() # skin self.skin = self.gui_environment.getSkin() for i in range(EGDC_COUNT): col = self.skin.getColor(i) col.setAlpha(200) self.skin.setColor(i, col) if (i + 2) > EGDC_COUNT: break # font self.font = CGUITTFont( self.gui_environment, os.environ['SYSTEMROOT'] + '/Fonts/arial.ttf', self.font_height) if self.font: self.skin.setFont(self.font) # add 3d ball #~ self.ball3d = self.scene_manager.addSphereSceneNode(float(BALL_DIAMETER)) # add camera for 3d view self.camera = self.scene_manager.addCameraSceneNode( position=vector3df(0, 0, -400)) #~ self.camera = self.scene_manager.addCameraSceneNodeMaya(distance = 400) # initialize first level self.init_game() def offset_x(self, rect, value): rect.UpperLeftCorner.X += value rect.LowerRightCorner.X += value def offset_y(self, rect, value): rect.UpperLeftCorner.Y += value rect.LowerRightCorner.Y += value def offset(self, rect, x, y): self.offset_x(rect, x) self.offset_y(rect, y) def set_ball_x(self, value): self.ball.UpperLeftCorner.X = value self.ball.LowerRightCorner.X = value + BALL_DIAMETER def set_ball_y(self, value): self.ball.UpperLeftCorner.Y = value self.ball.LowerRightCorner.Y = value + BALL_DIAMETER def set_paddle_x(self, value): self.paddle.UpperLeftCorner.X = value self.paddle.LowerRightCorner.X = value + self.paddle_width def set_paddle_y(self, value): self.paddle.UpperLeftCorner.Y = value self.paddle.LowerRightCorner.Y = value + self.paddle_height def init_game(self): screen_size = self.video_driver.getScreenSize() self.brick_width = abs(screen_size.X / 11) self.brick_height = abs(screen_size.X / 32) self.paddle_width = 60 self.paddle_height = 12 self.max_paddle_x = screen_size.X - self.paddle_width self.max_ball_x = screen_size.X - BALL_DIAMETER self.max_ball_y = screen_size.Y - BALL_DIAMETER # Paddle X,Y coordinate self.paddle_x = (screen_size.X - self.paddle_width) / 2 self.paddle_y = screen_size.Y - self.paddle_height - 10 # ball X,Y coordinate self.ball_x = self.paddle_x self.ball_y = self.paddle_y - BALL_DIAMETER self.lives = 3 self.score = 0 self.state = STATE_BALL_IN_PADDLE self.paddle = recti(self.paddle_x, self.paddle_y, self.paddle_x + self.paddle_width, self.paddle_y + self.paddle_height) self.ball = recti(self.ball_x, self.ball_y, self.ball_x + BALL_DIAMETER, self.ball_y + BALL_DIAMETER) self.ball_vel = self.ball_vel_default #~ self.ball3d.setPosition(vector3df(self.ball_x, self.ball_y, 0)) # cellular texture generator self.cell_paddle = Cellular(self.video_driver, self.paddle_width, self.paddle_height, 128) self.cell_brick = Cellular(self.video_driver, self.brick_width, self.brick_height, 128) if not self.texture_paddle: self.texture_paddle = self.cell_paddle.get_texture() else: self.texture_paddle = self.cell_paddle.get_new_texture( cellSize=8, density=4.0, rand_range_count=25) if not self.texture_brick: self.texture_brick = self.cell_brick.get_texture() else: self.texture_brick = self.cell_brick.get_new_texture(mFact=.5, lPower=.5) self.create_bricks() def show_stats(self): if self.font: text = 'SCORE: %d LIVES: %d' % (self.score, self.lives) screen_size = self.video_driver.getScreenSize() text_dimension = self.font.getDimension(text) self.font.draw( text, recti((screen_size.X - text_dimension.Width) / 2, 5, text_dimension.Width, self.font_height), self.white) def show_message(self, message): if self.font: screen_size = self.video_driver.getScreenSize() delta_y = 0 for text in message: text_dimension = self.font.getDimension(text) self.font.draw( text, recti( (screen_size.X - text_dimension.Width) / 2, screen_size.Y / 2 + delta_y, text_dimension.Width, (screen_size.Y - text_dimension.Height) / 2 + delta_y), self.white) delta_y += text_dimension.Height def create_bricks(self): screen_size = self.video_driver.getScreenSize() x_delta = self.brick_width + 10 count_rows = abs(screen_size.Y / 68) count_columns = abs(screen_size.X / x_delta - 1) x1 = (screen_size.X - x_delta * count_columns) / 2 y_ofs = 35 self.bricks = [] for i in range(count_rows): x_ofs = x1 for j in range(count_columns): self.bricks.append( recti(x_ofs, y_ofs, x_ofs + self.brick_width, y_ofs + self.brick_height)) x_ofs += x_delta y_ofs += self.brick_height + 5 def draw_bricks(self): for brick in self.bricks: if self.texture_brick and self.use_cellular_brick: self.video_driver.draw2DImage(self.texture_brick, brick.UpperLeftCorner) else: self.video_driver.draw2DRectangle(self.brick_color, brick) def move_ball(self): self.offset(self.ball, self.ball_vel.X, self.ball_vel.Y) if self.ball.UpperLeftCorner.X <= 0: self.set_ball_x(0) self.ball_vel.X = -self.ball_vel.X elif self.ball.UpperLeftCorner.X >= self.max_ball_x: self.set_ball_x(self.max_ball_x) self.ball_vel.X = -self.ball_vel.X if self.ball.UpperLeftCorner.Y < 0: self.set_ball_y(0) self.ball_vel.Y = -self.ball_vel.Y elif self.ball.UpperLeftCorner.Y >= self.max_ball_y: self.set_ball_y(self.max_ball_y) self.ball_vel.Y = -self.ball_vel.Y def handle_collisions(self): result = None for brick in self.bricks: if self.ball.isRectCollided(brick): self.score += 3 self.ball_vel.Y = -self.ball_vel.Y self.bricks.remove(brick) result = brick break if len(self.bricks) == 0: self.state = STATE_WON if self.ball.isRectCollided(self.paddle): self.set_ball_y(self.paddle_y - BALL_DIAMETER) self.ball_vel.Y = -self.ball_vel.Y elif self.ball.UpperLeftCorner.Y > self.paddle.UpperLeftCorner.Y: self.lives -= 1 if self.lives > 0: self.state = STATE_BALL_IN_PADDLE else: self.state = STATE_GAME_OVER return result def run(self): destroyed_brick = None destroyed_color1 = SColor(255, 0, 255, 0) destroyed_color2 = SColor(255, 255, 255, 0) destroyed_color3 = SColor(255, 0, 0, 255) destroyed_color4 = SColor(255, 255, 0, 0) color_red = SColor(255, 200, 0, 0) color_yellow = SColor(255, 200, 200, 0) color_green = SColor(255, 0, 200, 0) color_blue = SColor(255, 0, 0, 200) i_event_receiver = event_receiver() i_event_receiver.game = self self.device.setEventReceiver(i_event_receiver) self.device.getTimer().setSpeed(10.0) while self.device.run(): if self.device.isWindowActive(): if i_event_receiver.stop: break if self.video_driver.beginScene(True, True, self.back_color): if self.state == STATE_PLAYING: if not self.help_dialog: if self.device.getTimer().getTime() > 100: self.move_ball() self.device.getTimer().setTime(0) pos = self.handle_collisions() if pos: destroyed_brick = pos if destroyed_brick: if self.use_cellular_brick: self.video_driver.draw2DRectangle( destroyed_color1, destroyed_brick) else: self.video_driver.draw2DRectangle( destroyed_brick, destroyed_color1, destroyed_color2, destroyed_color3, destroyed_color4) destroyed_color2.a = destroyed_color2.a - 25 destroyed_color3.a = destroyed_color3.a - 25 destroyed_color4.a = destroyed_color4.a - 25 destroyed_color1.a = destroyed_color1.a - 25 if destroyed_color1.a < 50: destroyed_brick = None destroyed_color1.a = 255 if not self.use_cellular_brick: destroyed_color2.a = 255 destroyed_color3.a = 255 destroyed_color4.a = 255 elif self.state == STATE_BALL_IN_PADDLE: self.set_ball_x(self.paddle.UpperLeftCorner.X + self.paddle.getWidth() / 2) self.set_ball_y(self.paddle.UpperLeftCorner.Y - self.ball.getHeight()) self.show_message(('PRESS SPACE', 'TO LAUNCH THE BALL', 'F1 - help, ESC - exit')) elif self.state == STATE_GAME_OVER: self.show_message( ('GAME OVER', 'PRESS ENTER TO PLAY AGAIN')) elif self.state == STATE_WON: self.show_message( ('YOU WON!', 'PRESS ENTER TO PLAY AGAIN')) self.draw_bricks() # Draw paddle if self.texture_paddle and self.use_cellular_paddle: self.video_driver.draw2DImage( self.texture_paddle, self.paddle.UpperLeftCorner) else: self.video_driver.draw2DRectangle( self.paddle, color_yellow, color_red, color_green, color_blue) # Draw ball #~ self.video_driver.draw2DRectangle(self.white, self.ball) x1, y1 = self.ball.UpperLeftCorner.get_XY() x2, y2 = self.ball.LowerRightCorner.get_XY() self.video_driver.draw2DPolygon( recti(x1 + ball_delta, y1 + ball_delta, x2 + ball_delta, y2 + ball_delta), BALL_RADIUS, self.white) #~ ball_draw = self.ball + ball_delta #~ self.video_driver.draw2DPolygon(ball_draw, BALL_RADIUS, self.white) #~ self.ball3d.setPosition(vector3df(x1 + ball_delta, y1 + ball_delta, 0)) #~ self.scene_manager.drawAll() self.show_stats() if self.help_dialog: self.gui_environment.drawAll() self.video_driver.endScene() self.device.sleep(1) else: self.device._yield() self.device.closeDevice() self.device.drop()