mbed-os
Fork of mbed-os by
Diff: tools/test/memap/memap_test.py
- Revision:
- 0:f269e3021894
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/test/memap/memap_test.py Sun Oct 23 15:10:02 2016 +0000 @@ -0,0 +1,168 @@ +""" +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 sys +import os + +ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..")) +sys.path.insert(0, ROOT) + +import unittest +from tools.memap import MemapParser +from copy import deepcopy + +""" +Tests for test_api.py +""" + +class MemapParserTests(unittest.TestCase): + """ + Test cases for Test Api + """ + + def setUp(self): + """ + Called before each test case + + :return: + """ + self.memap_parser = MemapParser() + + self.memap_parser.modules = { + "Misc": { + "unknown": 0, + ".ARM": 8, + ".ARM.extab": 0, + ".init": 12, + "OUTPUT": 0, + ".stack": 0, + ".eh_frame": 0, + ".fini_array": 4, + ".heap": 0, + ".stabstr": 0, + ".interrupts_ram": 0, + ".init_array": 0, + ".stab": 0, + ".ARM.attributes": 7347, + ".bss": 8517, + ".flash_config": 16, + ".interrupts": 1024, + ".data": 2325, + ".ARM.exidx": 0, + ".text": 59906, + ".jcr": 0 + }, + "Fill": { + "unknown": 12, + ".ARM": 0, + ".ARM.extab": 0, + ".init": 0, + "OUTPUT": 0, + ".stack": 0, + ".eh_frame": 0, + ".fini_array": 0, + ".heap": 65536, + ".stabstr": 0, + ".interrupts_ram": 1024, + ".init_array": 0, + ".stab": 0, + ".ARM.attributes": 0, + ".bss": 2235, + ".flash_config": 0, + ".interrupts": 0, + ".data": 3, + ".ARM.exidx": 0, + ".text": 136, + ".jcr": 0 + } + } + + self.memap_parser.compute_report() + + def tearDown(self): + """ + Called after each test case + + :return: + """ + pass + + def generate_test_helper(self, output_type, file_output=None): + """ + Helper that ensures that the member variables "modules", "mem_report", + and "mem_summary" are unchanged after calling "generate_output" + + :param output_type: type string that is passed to "generate_output" + :param file_output: path to output file that is passed to "generate_output" + :return: + """ + + old_modules = deepcopy(self.memap_parser.modules) + old_report = deepcopy(self.memap_parser.mem_report) + old_summary = deepcopy(self.memap_parser.mem_summary) + self.memap_parser.generate_output(output_type, file_output) + self.assertEqual(self.memap_parser.modules, old_modules, + "generate_output modified the 'modules' property") + self.assertEqual(self.memap_parser.mem_report, old_report, + "generate_output modified the 'mem_report' property") + self.assertEqual(self.memap_parser.mem_summary, old_summary, + "generate_output modified the 'mem_summary' property") + + def test_report_computed(self): + """ + Test ensures the report and summary are computed + + :return: + """ + self.assertTrue(self.memap_parser.mem_report) + self.assertTrue(self.memap_parser.mem_summary) + self.assertEqual(self.memap_parser.mem_report[-1]['summary'], + self.memap_parser.mem_summary, + "mem_report did not contain a correct copy of mem_summary") + + def test_generate_output_table(self): + """ + Test ensures that an output of type "table" can be generated correctly + + :return: + """ + self.generate_test_helper('table') + + def test_generate_output_json(self): + """ + Test ensures that an output of type "json" can be generated correctly + + :return: + """ + file_name = '.json_test_output.json' + self.generate_test_helper('json', file_output=file_name) + self.assertTrue(os.path.exists(file_name), "Failed to create json file") + os.remove(file_name) + + def test_generate_output_csv_ci(self): + """ + Test ensures that an output of type "csv-ci" can be generated correctly + + :return: + """ + file_name = '.csv_ci_test_output.csv' + self.generate_test_helper('csv-ci', file_output=file_name) + self.assertTrue(os.path.exists(file_name), "Failed to create csv-ci file") + os.remove(file_name) + + +if __name__ == '__main__': + unittest.main()