Knight KE / Mbed OS Game_Master
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers parse_test.py Source File

parse_test.py

00001 import sys
00002 from io import open
00003 from os import sep
00004 from os.path import isfile, join, dirname
00005 import json
00006 
00007 import pytest
00008 
00009 from tools.memap import MemapParser, _ArmccParser
00010 from copy import deepcopy
00011 
00012 
00013 PARSED_ARM_DATA = {
00014     "startup/startup.o": {".text": 0xc0},
00015     "[lib]/c_p.l/__main.o": {".text": 8},
00016     "irqs/irqs.o": {".text": 0x98},
00017     "data/data.o": {".data": 0x18, ".bss": 0x198},
00018     "main.o": {".text": 0x36},
00019 }
00020 
00021 def test_parse_armcc():
00022     memap = MemapParser()
00023     memap.parse(join(dirname(__file__), "arm.map"), "ARM")
00024 
00025     parsed_data_os_agnostic = dict()
00026     for k in PARSED_ARM_DATA:
00027         parsed_data_os_agnostic[k.replace('/', sep)] = PARSED_ARM_DATA[k]
00028 
00029     assert memap.modules == parsed_data_os_agnostic
00030 
00031 PARSED_IAR_DATA = {
00032     "startup/startup.o": {".text": 0xc0},
00033     "[lib]/d16M_tlf.a/__main.o": {".text": 8},
00034     "irqs/irqs.o": {".text": 0x98},
00035     "data/data.o": {".data": 0x18, ".bss": 0x198},
00036     "main.o": {".text": 0x36},
00037 }
00038 
00039 def test_parse_iar():
00040     memap = MemapParser()
00041     memap.parse(join(dirname(__file__), "iar.map"), "IAR")
00042 
00043     parsed_data_os_agnostic = dict()
00044     for k in PARSED_IAR_DATA:
00045         parsed_data_os_agnostic[k.replace('/', sep)] = PARSED_IAR_DATA[k]
00046 
00047     assert memap.modules == parsed_data_os_agnostic
00048 
00049 PARSED_GCC_DATA = {
00050     "startup/startup.o": {".text": 0xc0},
00051     "[lib]/d16M_tlf.a/__main.o": {".text": 8},
00052     "[lib]/misc/foo.o": {".text": 8},
00053     "irqs/irqs.o": {".text": 0x98},
00054     "data/data.o": {".data": 0x18, ".bss": 0x198},
00055     "main.o": {".text": 0x36},
00056 }
00057 
00058 def test_parse_gcc():
00059     memap = MemapParser()
00060     memap.parse(join(dirname(__file__), "gcc.map"), "GCC_ARM")
00061 
00062     parsed_data_os_agnostic = dict()
00063     for k in PARSED_GCC_DATA:
00064         parsed_data_os_agnostic[k.replace('/', sep)] = PARSED_GCC_DATA[k]
00065 
00066     assert memap.modules == parsed_data_os_agnostic
00067 
00068 
00069 def test_add_empty_module():
00070     memap = _ArmccParser()
00071     old_modules = deepcopy(memap.modules)
00072     memap.module_add("", 8, ".data")
00073     assert(old_modules == memap.modules)
00074     memap.module_add("main.o", 0, ".text")
00075     assert(old_modules == memap.modules)
00076     memap.module_add("main.o", 8, "")
00077     assert(old_modules == memap.modules)
00078 
00079 def test_add_full_module():
00080     memap = _ArmccParser()
00081     old_modules = deepcopy(memap.modules)
00082     memap.module_add("main.o", 8, ".data")
00083     assert(old_modules != memap.modules)
00084     assert("main.o" in memap.modules)
00085     assert(".data" in memap.modules["main.o"])
00086     assert(memap.modules["main.o"][".data"] == 8)