Development mbed library for MAX32630FTHR
Dependents: blinky_max32630fthr
Diff: tools/test/config/config_test.py
- Revision:
- 0:5c4d7b2438d3
diff -r 000000000000 -r 5c4d7b2438d3 tools/test/config/config_test.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/test/config/config_test.py Fri Nov 11 20:59:50 2016 +0000 @@ -0,0 +1,132 @@ +""" +mbed SDK +Copyright (c) 2016 ARM Limited + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" + +import os.path +import unittest +from mock import patch +from tools.config import Config + +""" +Tests for config.py +""" + +class ConfigTests(unittest.TestCase): + """ + Test cases for Config class + """ + + def setUp(self): + """ + Called before each test case + + :return: + """ + self.target = "K64F" + + def tearDown(self): + """ + Called after each test case + + :return: + """ + pass + + @patch.object(Config, '_process_config_and_overrides') + @patch('tools.config.json_file_to_dict') + def test_init_app_config(self, mock_json_file_to_dict, _): + """ + Test that the initialisation correctly uses app_config + + :param mock_json_file_to_dict: mock of function json_file_to_dict + :param _: mock of function _process_config_and_overrides (not tested) + :return: + """ + app_config = "app_config" + mock_return = {'config': 'test'} + mock_json_file_to_dict.return_value = mock_return + + config = Config(self.target, app_config=app_config) + + mock_json_file_to_dict.assert_called_with(app_config) + self.assertEqual(config.app_config_data, mock_return, + "app_config_data should be set to the returned value") + + @patch.object(Config, '_process_config_and_overrides') + @patch('tools.config.json_file_to_dict') + def test_init_no_app_config(self, mock_json_file_to_dict, _): + """ + Test that the initialisation works without app config + + :param mock_json_file_to_dict: mock of function json_file_to_dict + :param _: patch of function _process_config_and_overrides (not tested) + :return: + """ + config = Config(self.target) + + mock_json_file_to_dict.assert_not_called() + self.assertEqual(config.app_config_data, {}, + "app_config_data should be set an empty dictionary") + + @patch.object(Config, '_process_config_and_overrides') + @patch('os.path.isfile') + @patch('tools.config.json_file_to_dict') + def test_init_no_app_config_with_dir(self, mock_json_file_to_dict, mock_isfile, _): + """ + Test that the initialisation works without app config and with a + specified top level directory + + :param mock_json_file_to_dict: mock of function json_file_to_dict + :param _: patch of function _process_config_and_overrides (not tested) + :return: + """ + directory = '.' + path = os.path.join('.', 'mbed_app.json') + mock_return = {'config': 'test'} + mock_json_file_to_dict.return_value = mock_return + mock_isfile.return_value = True + + config = Config(self.target, [directory]) + + mock_isfile.assert_called_with(path) + mock_json_file_to_dict.assert_called_once_with(path) + self.assertEqual(config.app_config_data, mock_return, + "app_config_data should be set to the returned value") + + @patch.object(Config, '_process_config_and_overrides') + @patch('tools.config.json_file_to_dict') + def test_init_override_app_config(self, mock_json_file_to_dict, _): + """ + Test that the initialisation uses app_config instead of top_level_dir + when both are specified + + :param mock_json_file_to_dict: mock of function json_file_to_dict + :param _: patch of function _process_config_and_overrides (not tested) + :return: + """ + app_config = "app_config" + directory = '.' + mock_return = {'config': 'test'} + mock_json_file_to_dict.return_value = mock_return + + config = Config(self.target, [directory], app_config=app_config) + + mock_json_file_to_dict.assert_called_once_with(app_config) + self.assertEqual(config.app_config_data, mock_return, + "app_config_data should be set to the returned value") + +if __name__ == '__main__': + unittest.main()