Greg Steiert / maxim_dev

Dependents:   sensomed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers tests.py Source File

tests.py

00001 """
00002 mbed SDK
00003 Copyright (c) 2011-2013 ARM Limited
00004 
00005 Licensed under the Apache License, Version 2.0 (the "License");
00006 you may not use this file except in compliance with the License.
00007 You may obtain a copy of the License at
00008 
00009     http://www.apache.org/licenses/LICENSE-2.0
00010 
00011 Unless required by applicable law or agreed to in writing, software
00012 distributed under the License is distributed on an "AS IS" BASIS,
00013 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 See the License for the specific language governing permissions and
00015 limitations under the License.
00016 """
00017 from tools.paths import *
00018 from tools.data.support import *
00019 from argparse import ArgumentTypeError
00020 from utils import columnate
00021 
00022 try:
00023     import tools.private_settings as ps
00024 except:
00025     ps = object()
00026 
00027 TEST_CMSIS_LIB = join(TEST_DIR, "cmsis", "lib")
00028 TEST_MBED_LIB = join(TEST_DIR, "mbed", "env")
00029 
00030 PERIPHERALS = join(TEST_DIR, "peripherals")
00031 BENCHMARKS_DIR = join(TEST_DIR, "benchmarks")
00032 
00033 SD = join(TEST_DIR, "sd")
00034 TMP102 = join(PERIPHERALS, 'TMP102')
00035 AT30TSE75X = join(PERIPHERALS, 'AT30TSE75X')
00036 
00037 """
00038 Wiring:
00039   * Ground:
00040     * LPC1*: p1
00041     * KL25Z: GND
00042 
00043   * Vout
00044     * LPC1*: p40
00045     * KL25Z: P3V3
00046 
00047   * TMP102 (I2C):
00048       * LPC1*: (SDA=p28 , SCL=p27)
00049       * KL25Z: (SDA=PTC9, SCL=PTC8)
00050       * MAXWSNENV: (SDA=TP6, SCL=TP5)
00051 
00052   * digital_loop (Digital(In|Out|InOut), InterruptIn):
00053       * Arduino headers: (D0 <-> D7)
00054       * NUCLEO_*: (D2 <-> D9)
00055       * LPC1549: (D2 <-> D7)
00056       * LPC1*: (p5   <-> p25 )
00057       * KL25Z: (PTA5<-> PTC6)
00058       * MAXWSNENV: (TP3 <-> TP4)
00059       * MAX32600MBED: (P1_0 <-> P4_7)
00060       * VK_RZ_A1H: (P3_2 <-> P5_6)
00061 
00062   * port_loop (Port(In|Out|InOut)):
00063       * Arduino headers: (D0 <-> D7), (D1 <-> D6)
00064       * LPC1*: (p5   <-> p25), (p6   <-> p26)
00065       * KL25Z: (PTA5 <-> PTC6), (PTA4 <-> PTC5)
00066       * NUCLEO_F103RB: (PC_6 <-> PB_8), (PC_5 <-> PB_9)
00067       * MAXWSNENV: (TP1 <-> TP3), (TP2 <-> TP4)
00068       * MAX32600MBED: (P1_0 <-> P4_7), (P1_1 <-> P4_6)
00069       * VK_RZ_A1H: (P3_2 <-> P5_6), (P3_7 <-> P5_1)
00070 
00071   * analog_loop (AnalogIn, AnalogOut):
00072       * Arduino headers: (A0 <-> A5)
00073       * NUCLEO64: (A0 <-> A2)
00074       * NUCLEO144: (A0 <-> D13)
00075       * LPC1549: (A0 <-> D12)
00076       * LPC1*: (p17   <-> p18 )
00077       * KL25Z: (PTE30 <-> PTC2)
00078 
00079   * analog_pot (AnalogIn):
00080       * Arduino headers: (A0, A1)
00081       * VK_RZ_A1H: (AN0, AN1)
00082 
00083   * SD (SPI):
00084       * LPC1*: (mosi=p11 , miso=p12 , sclk=p13 , cs=p14 )
00085       * KL25Z: (mosi=PTD2, miso=PTD3, sclk=PTD1, cs=PTD0)
00086 
00087   * MMA7660 (I2C):
00088       * LPC1*: (SDA=p28 , SCL=p27)
00089 
00090   * i2c_loop:
00091       * LPC1768: (p28 <-> p9), (p27 <-> p10)
00092       * NUCLEO64: (D14 <-> D3), (D15 <-> D6)
00093       * NUCLEO144: (D14 <-> PB_11), (D15 <-> PB_10)
00094 
00095   * i2c_eeprom:
00096       * LPC1*: (SDA=p28 , SCL=p27)
00097       * KL25Z: (SDA=PTE0, SCL=PTE1)
00098       * VK_RZ_A1H:(SDA=P1_1, SCL=P1_0)
00099 
00100   * can_transceiver:
00101      * LPC1768: (RX=p9,   TX=p10)
00102      * LPC1549: (RX=D9,   TX=D8)
00103      * LPC4088: (RX=p9,   TX=p10)
00104      * VK_RZ_A1H:(RX=P5_9, TX=P5_10)
00105      * NUCLEO_F091RC: (RX=PA_11, TX=PA_12)
00106      * NUCLEO_F072RB: (RX=PA_11, TX=PA_12)
00107      * NUCLEO_F042K6: (RX=PA_11, TX=PA_12)
00108      * NUCLEO_F334R8: (RX=PA_11, TX=PA_12)
00109      * NUCLEO_F303RE: (RX=PA_11, TX=PA_12)
00110      * NUCLEO_F303K8: (RX=PA_11, TX=PA_12)
00111      * NUCLEO_F302R8: (RX=PA_11, TX=PA_12)
00112      * NUCLEO_F446RE: (RX=PA_11, TX=PA_12)
00113      * NUCLEO_F446ZE: (RX=PA_11, TX=PA_12)
00114      * DISCO_F469NI:  (RX=PB_8, TX=PB_9)
00115      * DISCO_F4269ZI: (RX=PA_11, TX=PA_12)
00116      * NUCLEO_F103RB: (RX=PA_11, TX=PA_12)
00117      * NUCLEO_F746ZG: (RX=PA_11, TX=PA_12)
00118      * DISCO_F746NG:  (RX=PB_8, TX=PB_9)
00119      * DISCO_L476VG:  (RX=PA_11, TX=PA_12)
00120      * NUCLEO_L476RG:  (RX=PA_11, TX=PA_12)
00121      * NUCLEO_L432KC:  (RX=PA_11, TX=PA_12)
00122 
00123 """
00124 TESTS = [
00125     # Automated MBED tests
00126     {
00127         "id": "MBED_A1", "description": "Basic",
00128         "source_dir": join(TEST_DIR, "mbed", "basic"),
00129         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00130         "automated": True,
00131     },
00132     {
00133         "id": "MBED_A2", "description": "Semihost file system",
00134         "source_dir": join(TEST_DIR, "mbed", "file"),
00135         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00136         "automated": True,
00137         "mcu": ["LPC1768", "LPC2368", "LPC11U24"]
00138     },
00139     {
00140         "id": "MBED_A3", "description": "C++ STL",
00141         "source_dir": join(TEST_DIR, "mbed", "stl"),
00142         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00143         "automated": False,
00144     },
00145     {
00146         "id": "MBED_A4", "description": "I2C TMP102",
00147         "source_dir": join(TEST_DIR, "mbed", "i2c_TMP102"),
00148         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, TMP102],
00149         "automated": True,
00150         "peripherals": ["TMP102"]
00151     },
00152     {
00153         "id": "MBED_AT30TSE75X", "description": "I2C Temperature Sensor / EEPROM",
00154         "source_dir": join(TEST_DIR, "mbed", "i2c_at30tse75x"),
00155         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, AT30TSE75X],
00156         "automated": False,
00157         "peripherals": ["AT30TSE75X"]
00158     },
00159     {
00160         "id": "MBED_A5", "description": "DigitalIn DigitalOut",
00161         "source_dir": join(TEST_DIR, "mbed", "digitalin_digitalout"),
00162         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00163         "automated": True,
00164         "peripherals": ["digital_loop"]
00165     },
00166     {
00167         "id": "MBED_A6", "description": "DigitalInOut",
00168         "source_dir": join(TEST_DIR, "mbed", "digitalinout"),
00169         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00170         "automated": True,
00171         "peripherals": ["digital_loop"]
00172     },
00173     {
00174         "id": "MBED_A7", "description": "InterruptIn",
00175         "source_dir": join(TEST_DIR, "mbed", "interruptin"),
00176         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00177         "automated": True,
00178         "peripherals": ["digital_loop"]
00179     },
00180     {
00181         "id": "MBED_A8", "description": "Analog",
00182         "source_dir": join(TEST_DIR, "mbed", "analog"),
00183         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00184         "automated": True,
00185         "peripherals": ["analog_loop"],
00186         "mcu": ["LPC1768", "LPC2368", "LPC2460", "KL25Z", "K64F", "K66F", "K22F", "LPC4088", "LPC1549",
00187                 "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_F302R8", "NUCLEO_F303K8", "NUCLEO_F303RE", "NUCLEO_F207ZG",
00188                 "NUCLEO_F334R8", "NUCLEO_F303ZE", "NUCLEO_L053R8", "NUCLEO_L073RZ", "NUCLEO_L152RE",
00189                 "NUCLEO_F410RB", "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F429ZI",
00190                 "DISCO_F407VG", "NUCLEO_F746ZG", "NUCLEO_L476RG",
00191                 "DISCO_L053C8", "DISCO_F334C8", "DISCO_L476VG", "DISCO_F469NI", "DISCO_F429ZI",
00192                 "ARCH_MAX", "MAX32600MBED", "MOTE_L152RC", "B96B_F446VE"]
00193     },
00194     {
00195         "id": "MBED_A9", "description": "Serial Echo at 115200",
00196         "source_dir": join(TEST_DIR, "mbed", "echo"),
00197         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00198         "automated": True,
00199         #"host_test": "echo"
00200     },
00201     {
00202         "id": "MBED_A10", "description": "PortOut PortIn",
00203         "source_dir": join(TEST_DIR, "mbed", "portout_portin"),
00204         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00205         "peripherals": ["port_loop"],
00206         "supported": DEFAULT_SUPPORT,
00207         "automated": True,
00208     },
00209     {
00210         "id": "MBED_A11", "description": "PortInOut",
00211         "source_dir": join(TEST_DIR, "mbed", "portinout"),
00212         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00213         "peripherals": ["port_loop"],
00214         "supported": DEFAULT_SUPPORT,
00215         "automated": True,
00216     },
00217     {
00218         "id": "MBED_A12", "description": "SD File System",
00219         "source_dir": join(TEST_DIR, "mbed", "sd"),
00220         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
00221         "automated": True,
00222         "peripherals": ["SD"]
00223     },
00224     {
00225         "id": "MBED_A13", "description": "I2C MMA7660 accelerometer",
00226         "source_dir": join(TEST_DIR, "mbed", "i2c_MMA7660"),
00227         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'MMA7660')],
00228         "automated": True,
00229         "peripherals": ["MMA7660"]
00230     },
00231     {
00232         "id": "MBED_A14", "description": "I2C Master",
00233         "source_dir": join(TEST_DIR, "mbed", "i2c_master"),
00234         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
00235     },
00236     {
00237         "id": "MBED_A15", "description": "I2C Slave",
00238         "source_dir": join(TEST_DIR, "mbed", "i2c_slave"),
00239         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
00240     },
00241     {
00242         "id": "MBED_A16", "description": "SPI Master",
00243         "source_dir": join(TEST_DIR, "mbed", "spi_master"),
00244         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
00245     },
00246     {
00247         "id": "MBED_A17", "description": "SPI Slave",
00248         "source_dir": join(TEST_DIR, "mbed", "spi_slave"),
00249         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
00250     },
00251     {
00252         "id": "MBED_A18", "description": "Interrupt vector relocation",
00253         "source_dir": join(TEST_DIR, "mbed", "vtor_reloc"),
00254         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
00255         "mcu": ["LPC1768"],
00256         "automated": True,
00257     },
00258     {
00259         "id": "MBED_A19", "description": "I2C EEPROM read/write test",
00260         "source_dir": join(TEST_DIR, "mbed", "i2c_eeprom"),
00261         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00262         "peripherals": ["24LC256"],
00263         "automated": True,
00264     },
00265     {
00266         "id": "MBED_A20", "description": "I2C master/slave test",
00267         "source_dir": join(TEST_DIR, "mbed", "i2c_master_slave"),
00268         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
00269         "automated": True,
00270         "peripherals": ["i2c_loop"]
00271     },
00272     {
00273         "id": "MBED_A21", "description": "Call function before main (mbed_main)",
00274         "source_dir": join(TEST_DIR, "mbed", "call_before_main"),
00275         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00276         "automated": True,
00277     },
00278     {
00279         "id": "MBED_A22", "description": "SPIFI for LPC4088 (test 1)",
00280         "source_dir": join(TEST_DIR, "mbed", "spifi1"),
00281         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00282         "automated": True,
00283         "mcu": ["LPC4088","LPC4088_DM"]
00284     },
00285     {
00286         "id": "MBED_A23", "description": "SPIFI for LPC4088 (test 2)",
00287         "source_dir": join(TEST_DIR, "mbed", "spifi2"),
00288         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00289         "automated": True,
00290         "mcu": ["LPC4088","LPC4088_DM"]
00291     },
00292     {
00293         "id": "MBED_A24", "description": "Serial echo with RTS/CTS flow control",
00294         "source_dir": join(TEST_DIR, "mbed", "echo_flow_control"),
00295         "dependencies": [MBED_LIBRARIES],
00296         "automated": "True",
00297         "host_test": "echo_flow_control",
00298         "mcu": ["LPC1768"],
00299         "peripherals": ["extra_serial"]
00300     },
00301     {
00302         "id": "MBED_A25", "description": "I2C EEPROM line read/write test",
00303         "source_dir": join(TEST_DIR, "mbed", "i2c_eeprom_line"),
00304         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00305         "peripherals": ["24LC256"],
00306         "automated": True,
00307     },
00308     {
00309         "id": "MBED_A26", "description": "AnalogIn potentiometer test",
00310         "source_dir": join(TEST_DIR, "mbed", "analog_pot"),
00311         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00312         "peripherals": ["analog_pot"],
00313         "automated": True,
00314     },
00315     {
00316         "id": "MBED_A27", "description": "CAN loopback test",
00317         "source_dir": join(TEST_DIR, "mbed", "can_loopback"),
00318         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00319         "automated": True,
00320         "peripherals": ["can_transceiver"],
00321         "mcu": ["LPC1549", "LPC1768","B96B_F446VE", "VK_RZ_A1H",
00322                 "NUCLEO_F091RC", "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F207ZG",
00323         "NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE","NUCLEO_F446ZE",
00324         "DISCO_F469NI", "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG",
00325         "DISCO_F746NG", "DISCO_L476VG", "NUCLEO_L476RG", "NUCLEO_L432KC",
00326         "DISCO_F769NI", "NUCLEO_F767ZI"]
00327     },
00328     {
00329         "id": "MBED_A28", "description": "CAN loopback test",
00330         "source_dir": join(TEST_DIR, "mbed", "can_loopback"),
00331         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00332         "automated": True,
00333         "mcu": ["B96B_F446VE",
00334                 "NUCLEO_F091RC", "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F207ZG",
00335         "NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F446RE","NUCLEO_F446ZE",
00336         "DISCO_F469NI", "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG",
00337         "DISCO_F746NG", "DISCO_L476VG", "NUCLEO_L476RG", "NUCLEO_L432KC",
00338         "DISCO_F769NI", "NUCLEO_F767ZI"]
00339     },
00340     {
00341         "id": "MBED_A29", "description": "i2c_master_slave_asynch",
00342         "source_dir": join(TEST_DIR, "mbed", "i2c_master_slave_asynch"),
00343         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00344         "automated": True,
00345         "peripherals": ["i2c_loop"]
00346     },
00347     {
00348         "id": "MBED_BLINKY", "description": "Blinky",
00349         "source_dir": join(TEST_DIR, "mbed", "blinky"),
00350         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00351         "automated": False,
00352     },
00353     {
00354         "id": "MBED_BUS", "description": "Blinky BUS",
00355         "source_dir": join(TEST_DIR, "mbed", "bus"),
00356         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00357         "automated": False,
00358     },
00359 
00360     {
00361         "id": "MBED_BUSOUT", "description": "BusOut",
00362         "source_dir": join(TEST_DIR, "mbed", "bus_out"),
00363         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00364         "exclude_mcu": ["NUCLEO_L011K4"],
00365         "automated": True,
00366     },
00367 
00368     # Size benchmarks
00369     {
00370         "id": "BENCHMARK_1", "description": "Size (c environment)",
00371         "source_dir": join(BENCHMARKS_DIR, "cenv"),
00372         "dependencies": [MBED_LIBRARIES]
00373     },
00374     {
00375         "id": "BENCHMARK_2", "description": "Size (float math)",
00376         "source_dir": join(BENCHMARKS_DIR, "float_math"),
00377         "dependencies": [MBED_LIBRARIES]
00378     },
00379     {
00380         "id": "BENCHMARK_3", "description": "Size (printf)",
00381         "source_dir": join(BENCHMARKS_DIR, "printf"),
00382         "dependencies": [MBED_LIBRARIES]
00383     },
00384     {
00385         "id": "BENCHMARK_4", "description": "Size (mbed libs)",
00386         "source_dir": join(BENCHMARKS_DIR, "mbed"),
00387         "dependencies": [MBED_LIBRARIES]
00388     },
00389     {
00390         "id": "BENCHMARK_5", "description": "Size (all)",
00391         "source_dir": join(BENCHMARKS_DIR, "all"),
00392         "dependencies": [MBED_LIBRARIES]
00393     },
00394 
00395     # performance related tests
00396     {
00397         "id": "PERF_1", "description": "SD Stdio R/W Speed",
00398         "source_dir": join(TEST_DIR, "mbed", "sd_perf_stdio"),
00399         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
00400         "automated": True,
00401         "peripherals": ["SD"]
00402     },
00403     {
00404         "id": "PERF_2", "description": "SD FileHandle R/W Speed",
00405         "source_dir": join(TEST_DIR, "mbed", "sd_perf_fhandle"),
00406         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
00407         "automated": True,
00408         "peripherals": ["SD"]
00409     },
00410     {
00411         "id": "PERF_3", "description": "SD FatFS R/W Speed",
00412         "source_dir": join(TEST_DIR, "mbed", "sd_perf_fatfs"),
00413         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
00414         "automated": True,
00415         "peripherals": ["SD"]
00416     },
00417 
00418 
00419     # Not automated MBED tests
00420     {
00421         "id": "MBED_1", "description": "I2C SRF08",
00422         "source_dir": join(TEST_DIR, "mbed", "i2c_SRF08"),
00423         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'SRF08')],
00424         "peripherals": ["SRF08"]
00425     },
00426     {
00427         "id": "MBED_2", "description": "stdio",
00428         "source_dir": join(TEST_DIR, "mbed", "stdio"),
00429         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00430         "automated": True,
00431         #"host_test": "stdio_auto"
00432     },
00433     {
00434         "id": "MBED_3", "description": "PortOut",
00435         "source_dir": join(TEST_DIR, "mbed", "portout"),
00436         "dependencies": [MBED_LIBRARIES],
00437     },
00438     {
00439         "id": "MBED_4", "description": "Sleep",
00440         "source_dir": join(TEST_DIR, "mbed", "sleep"),
00441         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00442         "mcu": ["LPC1768", "LPC11U24", "LPC4088","LPC4088_DM","NRF51822", "LPC11U68"]
00443     },
00444     {
00445         "id": "MBED_5", "description": "PWM",
00446         "source_dir": join(TEST_DIR, "mbed", "pwm"),
00447         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB]
00448     },
00449     {
00450         "id": "MBED_6", "description": "SW Reset",
00451         "source_dir": join(TEST_DIR, "mbed", "reset"),
00452         "dependencies": [MBED_LIBRARIES],
00453     },
00454     {
00455         "id": "MBED_7", "description": "stdio  benchmark",
00456         "source_dir": join(TEST_DIR, "mbed", "stdio_benchmark"),
00457         "dependencies": [MBED_LIBRARIES],
00458     },
00459     {
00460         "id": "MBED_8", "description": "SPI",
00461         "source_dir": join(TEST_DIR, "mbed", "spi"),
00462         "dependencies": [MBED_LIBRARIES],
00463     },
00464     {
00465         "id": "MBED_9", "description": "Sleep Timeout",
00466         "source_dir": join(TEST_DIR, "mbed", "sleep_timeout"),
00467         "dependencies": [MBED_LIBRARIES],
00468     },
00469     {
00470         "id": "MBED_10", "description": "Hello World",
00471         "source_dir": join(TEST_DIR, "mbed", "hello"),
00472         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00473         "automated": True,
00474         #"host_test": "hello_auto",
00475     },
00476     {
00477         "id": "MBED_11", "description": "Ticker Int",
00478         "source_dir": join(TEST_DIR, "mbed", "ticker"),
00479         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00480         "automated": True,
00481         #"host_test": "wait_us_auto",
00482     },
00483     {
00484         "id": "MBED_12", "description": "C++",
00485         "source_dir": join(TEST_DIR, "mbed", "cpp"),
00486         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00487         "automated": True
00488     },
00489     {
00490         "id": "MBED_13", "description": "Heap & Stack",
00491         "source_dir": join(TEST_DIR, "mbed", "heap_and_stack"),
00492         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00493     },
00494     {
00495         "id": "MBED_14", "description": "Serial Interrupt",
00496         "source_dir": join(TEST_DIR, "mbed", "serial_interrupt"),
00497         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00498     },
00499     {
00500         "id": "MBED_15", "description": "RPC",
00501         "source_dir": join(TEST_DIR, "mbed", "rpc"),
00502         "dependencies": [MBED_LIBRARIES, join(LIB_DIR, "rpc"), TEST_MBED_LIB],
00503         "automated": False,
00504         "mcu": ["LPC1768"]
00505     },
00506     {
00507         "id": "MBED_16", "description": "RTC",
00508         "source_dir": join(TEST_DIR, "mbed", "rtc"),
00509         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00510         "automated": True,
00511         "exclude_mcu": ["NRF51822", "NRF51822_BOOT", "NRF51822_OTA", "NRF51822_Y5_MBUG",
00512                         "NRF51_DK", "NRF51_DK_BOOT", "NRF51_DK_OTA",
00513                         "NRF51_MICROBIT", "NRF51_MICROBIT_B", "NRF51_MICROBIT_BOOT",
00514                         "NRF51_MICROBIT_B_BOOT", "NRF51_MICROBIT_B_OTA", "NRF51_MICROBIT_OTA",
00515                         "HRM1017", "HRM1017_BOOT", "HRM1701_OTA",
00516                         "NUCLEO_L011K4",
00517                         "TY51822R3", "TY51822R3_BOOT", "TY51822R3_OTA",
00518                         "NRF15_DONGLE", "NRF15_DONGLE_BOOT", "NRF15_DONGLE_OTA",
00519                         "ARCH_BLE", "ARCH_BLE_BOOT", "ARCH_BLE_OTA",
00520                         "ARCH_LINK", "ARCH_LINK_BOOT", "ARCH_LINK_OTA",
00521                         "RBLAB_BLENANO", "RBLAB_BLENANO_BOOT", "RBLAB_BLENANO_OTA",
00522                         "RBLAB_NRF51822", "RBLAB_NRF51822_BOOT", "RBLAB_NRF51822_OTA",
00523                         "SEEED_TINY_BLE", "SEEED_TINY_BLE_BOOT", "SEEED_TINY_BLE_OTA",
00524                         "WALLBOT_BLE", "WALLBOT_BLE_BOOT", "WALLBOT_BLE_OTA",
00525                         "DELTA_DFCM_NNN40", "DELTA_DFCM_NNN40_BOOT", "DELTA_DFCM_NNN40_OTA",
00526                         "LPC1114"],
00527         #"host_test": "rtc_auto",
00528     },
00529     {
00530         "id": "MBED_17", "description": "Serial Interrupt 2",
00531         "source_dir": join(TEST_DIR, "mbed", "serial_interrupt_2"),
00532         "dependencies": [MBED_LIBRARIES],
00533     },
00534     {
00535         "id": "MBED_18", "description": "Local FS Directory",
00536         "source_dir": join(TEST_DIR, "mbed", "dir"),
00537         "dependencies": [MBED_LIBRARIES],
00538     },
00539     {
00540         "id": "MBED_19", "description": "SD FS Directory",
00541         "source_dir": join(TEST_DIR, "mbed", "dir_sd"),
00542         "dependencies": [MBED_LIBRARIES, FS_LIBRARY],
00543         "peripherals": ["SD"]
00544     },
00545     {
00546         "id": "MBED_20", "description": "InterruptIn 2",
00547         "source_dir": join(TEST_DIR, "mbed", "interruptin_2"),
00548         "dependencies": [MBED_LIBRARIES],
00549     },
00550     {
00551         "id": "MBED_21", "description": "freopen Stream",
00552         "source_dir": join(TEST_DIR, "mbed", "freopen"),
00553         "dependencies": [MBED_LIBRARIES],
00554     },
00555     {
00556         "id": "MBED_22", "description": "Semihost",
00557         "source_dir": join(TEST_DIR, "mbed", "semihost"),
00558         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00559         "automated": True,
00560         "mcu": ["LPC1768", "LPC2368", "LPC11U24"]
00561     },
00562     {
00563         "id": "MBED_23", "description": "Ticker Int us",
00564         "source_dir": join(TEST_DIR, "mbed", "ticker_2"),
00565         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00566         "automated": True,
00567         #"host_test": "wait_us_auto"
00568     },
00569     {
00570         "id": "MBED_24", "description": "Timeout Int us",
00571         "source_dir": join(TEST_DIR, "mbed", "timeout"),
00572         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00573         "automated": True,
00574         #"host_test": "wait_us_auto"
00575     },
00576     {
00577         "id": "MBED_25", "description": "Time us",
00578         "source_dir": join(TEST_DIR, "mbed", "time_us"),
00579         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00580         "automated": True,
00581         #"host_test": "wait_us_auto"
00582     },
00583     {
00584         "id": "MBED_26", "description": "Integer constant division",
00585         "source_dir": join(TEST_DIR, "mbed", "div"),
00586         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00587         "automated": True,
00588     },
00589     {
00590         "id": "MBED_27", "description": "SPI ADXL345",
00591         "source_dir": join(TEST_DIR, "mbed", "spi_ADXL345"),
00592         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'ADXL345')],
00593         "peripherals": ["ADXL345"]
00594     },
00595     {
00596         "id": "MBED_28", "description": "Interrupt chaining (InterruptManager)",
00597         "source_dir": join(TEST_DIR, "mbed", "interrupt_chaining"),
00598         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00599     },
00600     {
00601         "id": "MBED_29", "description": "CAN network test",
00602         "source_dir": join(TEST_DIR, "mbed", "can"),
00603         "dependencies": [MBED_LIBRARIES],
00604         "mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC",
00605                 "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F303RE",
00606                 "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE","NUCLEO_F446ZE", "DISCO_F469NI", "NUCLEO_F207ZG",
00607                 "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG",
00608                 "NUCLEO_L476RG", "NUCLEO_L432KC"]
00609     },
00610     {
00611         "id": "MBED_30", "description": "CAN network test using interrupts",
00612         "source_dir": join(TEST_DIR, "mbed", "can_interrupt"),
00613         "dependencies": [MBED_LIBRARIES],
00614         "mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC", "NUCLEO_F207ZG",
00615                 "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F303RE",
00616                 "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE", "NUCLEO_F446ZE", "DISCO_F469NI",
00617                 "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG",
00618                 "NUCLEO_L476RG", "NUCLEO_L432KC"]
00619     },
00620     {
00621         "id": "MBED_31", "description": "PWM LED test",
00622         "source_dir": join(TEST_DIR, "mbed", "pwm_led"),
00623         "dependencies": [MBED_LIBRARIES],
00624     },
00625     {
00626         "id": "MBED_32", "description": "Pin toggling",
00627         "source_dir": join(TEST_DIR, "mbed", "pin_toggling"),
00628         "dependencies": [MBED_LIBRARIES],
00629     },
00630     {
00631         "id": "MBED_33", "description": "C string operations",
00632         "source_dir": join(TEST_DIR, "mbed", "cstring"),
00633         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00634         "automated": False,
00635     },
00636     {
00637         "id": "MBED_34", "description": "Ticker Two callbacks",
00638         "source_dir": join(TEST_DIR, "mbed", "ticker_3"),
00639         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00640         "automated": True,
00641         #"host_test": "wait_us_auto"
00642     },
00643     {
00644         "id": "MBED_35", "description": "SPI C12832 display",
00645         "source_dir": join(TEST_DIR, "mbed", "spi_C12832"),
00646         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'C12832')],
00647         "peripherals": ["C12832"],
00648         "automated": True,
00649     },
00650     {
00651         "id": "MBED_36", "description": "WFI correct behavior",
00652         "source_dir": join(TEST_DIR, "mbed", "wfi"),
00653         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00654         "automated": False
00655     },
00656     {
00657         "id": "MBED_37", "description": "Serial NC RX",
00658         "source_dir": join(TEST_DIR, "mbed", "serial_nc_rx"),
00659         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00660         "exclude_mcu": ["NUCLEO_L011K4"],
00661         "automated": True
00662     },
00663     {
00664         "id": "MBED_38", "description": "Serial NC TX",
00665         "source_dir": join(TEST_DIR, "mbed", "serial_nc_tx"),
00666         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00667         "exclude_mcu": ["NUCLEO_L011K4"],
00668         "automated": True
00669     },
00670     {
00671         "id": "MBED_39", "description": "Serial Complete",
00672         "source_dir": join(TEST_DIR, "mbed", "serial_complete"),
00673         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00674         "automated": False
00675     },
00676 
00677     # CMSIS RTOS tests
00678     {
00679         "id": "CMSIS_RTOS_1", "description": "Basic",
00680         "source_dir": join(TEST_DIR, "rtos", "cmsis", "basic"),
00681         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00682     },
00683     {
00684         "id": "CMSIS_RTOS_2", "description": "Mutex",
00685         "source_dir": join(TEST_DIR, "rtos", "cmsis", "mutex"),
00686         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00687     },
00688     {
00689         "id": "CMSIS_RTOS_3", "description": "Semaphore",
00690         "source_dir": join(TEST_DIR, "rtos", "cmsis", "semaphore"),
00691         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00692     },
00693     {
00694         "id": "CMSIS_RTOS_4", "description": "Signals",
00695         "source_dir": join(TEST_DIR, "rtos", "cmsis", "signals"),
00696         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00697     },
00698     {
00699         "id": "CMSIS_RTOS_5", "description": "Queue",
00700         "source_dir": join(TEST_DIR, "rtos", "cmsis", "queue"),
00701         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00702     },
00703     {
00704         "id": "CMSIS_RTOS_6", "description": "Mail",
00705         "source_dir": join(TEST_DIR, "rtos", "cmsis", "mail"),
00706         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00707     },
00708     {
00709         "id": "CMSIS_RTOS_7", "description": "Timer",
00710         "source_dir": join(TEST_DIR, "rtos", "cmsis", "timer"),
00711         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00712     },
00713     {
00714         "id": "CMSIS_RTOS_8", "description": "ISR",
00715         "source_dir": join(TEST_DIR, "rtos", "cmsis", "isr"),
00716         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00717     },
00718 
00719     # mbed RTOS tests
00720     {
00721         "id": "RTOS_1", "description": "Basic thread",
00722         "source_dir": join(TEST_DIR, "rtos", "mbed", "basic"),
00723         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00724         "automated": True,
00725         #"host_test": "wait_us_auto",
00726         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00727                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00728                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00729                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00730                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00731                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303ZE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
00732                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00733                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00734     },
00735     {
00736         "id": "RTOS_2", "description": "Mutex resource lock",
00737         "source_dir": join(TEST_DIR, "rtos", "mbed", "mutex"),
00738         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00739         "automated": True,
00740         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00741                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00742                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00743                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00744                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00745                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG",
00746                 "NUCLEO_F446ZE", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
00747                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00748                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00749     },
00750     {
00751         "id": "RTOS_3", "description": "Semaphore resource lock",
00752         "source_dir": join(TEST_DIR, "rtos", "mbed", "semaphore"),
00753         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00754         "automated": True,
00755         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00756                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00757                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00758                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00759                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00760                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE",  "NUCLEO_F446ZE",
00761                 "NUCLEO_F103RB", "DISCO_F746NG",
00762                 "NUCLEO_F746ZG",  "MOTE_L152RC", "B96B_F446VE",
00763                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00764                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00765     },
00766     {
00767         "id": "RTOS_4", "description": "Signals messaging",
00768         "source_dir": join(TEST_DIR, "rtos", "mbed", "signals"),
00769         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00770         "automated": True,
00771         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00772                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00773                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00774                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00775                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00776                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F446ZE",
00777                 "NUCLEO_F103RB", "DISCO_F746NG",
00778                 "NUCLEO_F746ZG",  "MOTE_L152RC", "B96B_F446VE",
00779                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00780                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00781     },
00782     {
00783         "id": "RTOS_5", "description": "Queue messaging",
00784         "source_dir": join(TEST_DIR, "rtos", "mbed", "queue"),
00785         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00786         "automated": True,
00787         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00788                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00789                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00790                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00791                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00792                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
00793                 "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
00794                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00795                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00796     },
00797     {
00798         "id": "RTOS_6", "description": "Mail messaging",
00799         "source_dir": join(TEST_DIR, "rtos", "mbed", "mail"),
00800         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00801         "automated": True,
00802         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00803                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00804                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00805                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00806                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00807                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
00808                 "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
00809                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00810                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00811     },
00812     {
00813         "id": "RTOS_7", "description": "Timer",
00814         "source_dir": join(TEST_DIR, "rtos", "mbed", "timer"),
00815         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00816         "automated": True,
00817         #"host_test": "wait_us_auto",
00818         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00819                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00820                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00821                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00822                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00823                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
00824                 "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
00825                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00826                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00827     },
00828     {
00829         "id": "RTOS_8", "description": "ISR (Queue)",
00830         "source_dir": join(TEST_DIR, "rtos", "mbed", "isr"),
00831         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00832         "automated": True,
00833         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00834                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00835                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00836                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00837                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00838                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
00839                 "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
00840                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00841                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00842     },
00843     {
00844         "id": "RTOS_9", "description": "SD File write-read",
00845         "source_dir": join(TEST_DIR, "rtos", "mbed", "file"),
00846         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
00847         "automated": True,
00848         "peripherals": ["SD"],
00849         "mcu": ["LPC1768", "LPC11U24", "LPC812", "KL25Z", "HEXIWEAR",
00850                 "KL05Z", "K64F", "K66F", "KL46Z", "RZ_A1H",
00851                 "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F429ZI", "NUCLEO_F411RE", "NUCLEO_F401RE", "NUCLEO_F410RB", "DISCO_F469NI", "NUCLEO_F207ZG"],
00852     },
00853 
00854     # Networking Tests
00855     {
00856         "id": "NET_1", "description": "TCP client hello world",
00857         "source_dir": join(TEST_DIR, "net", "helloworld", "tcpclient"),
00858         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00859         "automated": True,
00860         "peripherals": ["ethernet"],
00861     },
00862     {
00863         "id": "NET_2", "description": "NIST Internet Time Service",
00864         "source_dir": join(TEST_DIR, "net", "helloworld", "udpclient"),
00865         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00866         "automated": True,
00867         "peripherals": ["ethernet"],
00868     },
00869     {
00870         "id": "NET_3", "description": "TCP echo server",
00871         "source_dir": join(TEST_DIR, "net", "echo", "tcp_server"),
00872         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00873         "automated": True,
00874         #"host_test" : "tcpecho_server_auto",
00875         "peripherals": ["ethernet"],
00876     },
00877     {
00878         "id": "NET_4", "description": "TCP echo client",
00879         "source_dir": join(TEST_DIR, "net", "echo", "tcp_client"),
00880         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00881         "automated": True,
00882         #"host_test": "tcpecho_client_auto",
00883         "peripherals": ["ethernet"]
00884     },
00885     {
00886         "id": "NET_5", "description": "UDP echo server",
00887         "source_dir": join(TEST_DIR, "net", "echo", "udp_server"),
00888         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00889         "automated": True,
00890         #"host_test" : "udpecho_server_auto",
00891         "peripherals": ["ethernet"]
00892     },
00893     {
00894         "id": "NET_6", "description": "UDP echo client",
00895         "source_dir": join(TEST_DIR, "net", "echo", "udp_client"),
00896         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00897         "automated": True,
00898         #"host_test" : "udpecho_client_auto",
00899         "peripherals": ["ethernet"],
00900     },
00901     {
00902         "id": "NET_7", "description": "HTTP client hello world",
00903         "source_dir": join(TEST_DIR, "net", "protocols", "HTTPClient_HelloWorld"),
00904         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00905         "automated": True,
00906         "peripherals": ["ethernet"],
00907     },
00908     {
00909         "id": "NET_8", "description": "NTP client",
00910         "source_dir": join(TEST_DIR, "net", "protocols", "NTPClient_HelloWorld"),
00911         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00912         "automated": True,
00913         "peripherals": ["ethernet"],
00914     },
00915     {
00916         "id": "NET_9", "description": "Multicast Send",
00917         "source_dir": join(TEST_DIR, "net", "helloworld", "multicast_send"),
00918         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
00919         "peripherals": ["ethernet"],
00920     },
00921     {
00922         "id": "NET_10", "description": "Multicast Receive",
00923         "source_dir": join(TEST_DIR, "net", "helloworld", "multicast_receive"),
00924         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
00925         "peripherals": ["ethernet"],
00926     },
00927     {
00928         "id": "NET_11", "description": "Broadcast Send",
00929         "source_dir": join(TEST_DIR, "net", "helloworld", "broadcast_send"),
00930         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
00931         "peripherals": ["ethernet"],
00932     },
00933     {
00934         "id": "NET_12", "description": "Broadcast Receive",
00935         "source_dir": join(TEST_DIR, "net", "helloworld", "broadcast_receive"),
00936         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
00937         "peripherals": ["ethernet"],
00938     },
00939     {
00940         "id": "NET_13", "description": "TCP client echo loop",
00941         "source_dir": join(TEST_DIR, "net", "echo", "tcp_client_loop"),
00942         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00943         "automated": True,
00944         #"host_test": "tcpecho_client_auto",
00945         "peripherals": ["ethernet"],
00946     },
00947     {
00948         "id": "NET_14", "description": "UDP PHY/Data link layer",
00949         "source_dir": join(TEST_DIR, "net", "echo", "udp_link_layer"),
00950         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
00951         "automated": False,
00952         "host_test": "udp_link_layer_auto",
00953         "peripherals": ["ethernet"],
00954     },
00955 
00956     # u-blox tests
00957     {
00958         "id": "UB_1", "description": "u-blox USB modem: HTTP client",
00959         "source_dir": [join(TEST_DIR, "net", "cellular", "http", "ubloxusb"), join(TEST_DIR, "net", "cellular", "http", "common")],
00960         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, USB_HOST_LIBRARIES, UBLOX_LIBRARY],
00961         "supported": CORTEX_ARM_SUPPORT,
00962     },
00963     {
00964         "id": "UB_2", "description": "u-blox USB modem: SMS test",
00965         "source_dir": [join(TEST_DIR, "net", "cellular", "sms", "ubloxusb"), join(TEST_DIR, "net", "cellular", "sms", "common")],
00966         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, USB_HOST_LIBRARIES, UBLOX_LIBRARY],
00967         "supported": CORTEX_ARM_SUPPORT,
00968     },
00969 
00970     # USB Tests
00971     {
00972         "id": "USB_1", "description": "Mouse",
00973         "source_dir": join(TEST_DIR, "usb", "device", "basic"),
00974         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
00975     },
00976     {
00977         "id": "USB_2", "description": "Keyboard",
00978         "source_dir": join(TEST_DIR, "usb", "device", "keyboard"),
00979         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
00980     },
00981     {
00982         "id": "USB_3", "description": "Mouse_Keyboard",
00983         "source_dir": join(TEST_DIR, "usb", "device", "keyboard"),
00984         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
00985     },
00986     {
00987         "id": "USB_4", "description": "Serial Port",
00988         "source_dir": join(TEST_DIR, "usb", "device", "serial"),
00989         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
00990         "supported": CORTEX_ARM_SUPPORT,
00991     },
00992     {
00993         "id": "USB_5", "description": "Generic HID",
00994         "source_dir": join(TEST_DIR, "usb", "device", "raw_hid"),
00995         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
00996     },
00997     {
00998         "id": "USB_6", "description": "MIDI",
00999         "source_dir": join(TEST_DIR, "usb", "device", "midi"),
01000         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
01001     },
01002     {
01003         "id": "USB_7", "description": "AUDIO",
01004         "source_dir": join(TEST_DIR, "usb", "device", "audio"),
01005         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
01006     },
01007 
01008     # CMSIS DSP
01009     {
01010         "id": "CMSIS_DSP_1", "description": "FIR",
01011         "source_dir": join(TEST_DIR, "dsp", "cmsis", "fir_f32"),
01012         "dependencies": [MBED_LIBRARIES, DSP_LIBRARIES],
01013     },
01014 
01015     # mbed DSP
01016     {
01017         "id": "DSP_1", "description": "FIR",
01018         "source_dir": join(TEST_DIR, "dsp", "mbed", "fir_f32"),
01019         "dependencies": [MBED_LIBRARIES, DSP_LIBRARIES],
01020     },
01021 
01022     # KL25Z
01023     {
01024         "id": "KL25Z_1", "description": "LPTMR",
01025         "source_dir": join(TEST_DIR, "KL25Z", "lptmr"),
01026         "dependencies": [MBED_LIBRARIES],
01027         "supported": CORTEX_ARM_SUPPORT,
01028         "mcu": ["KL25Z"],
01029     },
01030     {
01031         "id": "KL25Z_2", "description": "PIT",
01032         "source_dir": join(TEST_DIR, "KL25Z", "pit"),
01033         "dependencies": [MBED_LIBRARIES],
01034         "supported": CORTEX_ARM_SUPPORT,
01035         "mcu": ["KL25Z"],
01036     },
01037     {
01038         "id": "KL25Z_3", "description": "TSI Touch Sensor",
01039         "source_dir": join(TEST_DIR, "mbed", "tsi"),
01040         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'TSI')],
01041         "mcu": ["KL25Z"],
01042     },
01043     {
01044         "id": "KL25Z_4", "description": "RTC",
01045         "source_dir": join(TEST_DIR, "KL25Z", "rtc"),
01046         "dependencies": [MBED_LIBRARIES],
01047         "mcu": ["KL25Z"],
01048     },
01049     {
01050         "id": "KL25Z_5", "description": "MMA8451Q accelerometer",
01051         "source_dir": join(TEST_DIR, "mbed", "i2c_MMA8451Q"),
01052         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'MMA8451Q')],
01053         "mcu": ["KL25Z", "KL05Z", "KL46Z", "K20D50M"],
01054         "automated": True,
01055         },
01056 
01057     # Examples
01058     {
01059         "id": "EXAMPLE_1", "description": "/dev/null",
01060         "source_dir": join(TEST_DIR, "mbed", "dev_null"),
01061         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
01062         "exclude_mcu": ["NUCLEO_L011K4"],
01063         "automated": True,
01064         #"host_test" : "dev_null_auto",
01065     },
01066     {
01067         "id": "EXAMPLE_2", "description": "FS + RTOS",
01068         "source_dir": join(TEST_DIR, "mbed", "fs"),
01069         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
01070     },
01071 
01072     # CPPUTEST Library provides Unit testing Framework
01073     #
01074     # To write TESTs and TEST_GROUPs please add CPPUTEST_LIBRARY to 'dependencies'
01075     #
01076     # This will also include:
01077     # 1. test runner - main function with call to CommandLineTestRunner::RunAllTests(ac, av)
01078     # 2. Serial console object to print test result on serial port console
01079     #
01080 
01081     # Unit testing with cpputest library
01082     {
01083         "id": "UT_1", "description": "Basic",
01084         "source_dir": join(TEST_DIR, "utest", "basic"),
01085         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01086         "automated": False,
01087     },
01088     {
01089         "id": "UT_2", "description": "Semihost file system",
01090         "source_dir": join(TEST_DIR, "utest", "semihost_fs"),
01091         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01092         "automated": False,
01093         "mcu": ["LPC1768", "LPC2368", "LPC11U24"]
01094     },
01095     {
01096         "id": "UT_3", "description": "General tests",
01097         "source_dir": join(TEST_DIR, "utest", "general"),
01098         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01099         "automated": False,
01100     },
01101     {
01102         "id": "UT_BUSIO", "description": "BusIn BusOut",
01103         "source_dir": join(TEST_DIR, "utest", "bus"),
01104         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01105         "automated": False,
01106     },
01107     {
01108         "id": "UT_I2C_EEPROM_ASYNCH", "description": "I2C Asynch eeprom",
01109         "source_dir": join(TEST_DIR, "utest", "i2c_eeprom_asynch"),
01110         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01111         "automated": False,
01112     },
01113     {
01114         "id": "UT_SERIAL_ASYNCH", "description": "Asynch serial test (req 2 serial peripherals)",
01115         "source_dir": join(TEST_DIR, "utest", "serial_asynch"),
01116         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01117         "automated": False,
01118     },
01119     {
01120         "id": "UT_SPI_ASYNCH", "description": "Asynch spi test",
01121         "source_dir": join(TEST_DIR, "utest", "spi_asynch"),
01122         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01123         "automated": False,
01124     },
01125     {
01126         "id": "UT_LP_TICKER", "description": "Low power ticker test",
01127         "source_dir": join(TEST_DIR, "utest", "lp_ticker"),
01128         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01129         "automated": False,
01130     },
01131 
01132     # Tests used for target information purposes
01133     {
01134         "id": "DTCT_1", "description": "Simple detect test",
01135         "source_dir": join(TEST_DIR, "mbed", "detect"),
01136         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
01137         "automated": True,
01138         #"host_test" : "detect_auto",
01139     },
01140 
01141 ]
01142 
01143 # Group tests with the same goals into categories
01144 GROUPS = {
01145     "core": ["MBED_A1", "MBED_A2", "MBED_A3", "MBED_A18"],
01146     "digital_io": ["MBED_A5", "MBED_A6", "MBED_A7", "MBED_A10", "MBED_A11"],
01147     "analog_io": ["MBED_A8"],
01148     "i2c": ["MBED_A19", "MBED_A20"],
01149     "spi": ["MBED_A12"],
01150 }
01151 GROUPS["rtos"] = [test["id"] for test in TESTS if test["id"].startswith("RTOS_")]
01152 GROUPS["net"] = [test["id"] for test in TESTS if test["id"].startswith("NET_")]
01153 GROUPS["automated"] = [test["id"] for test in TESTS if test.get("automated", False)]
01154 # Look for 'TEST_GROUPS' in mbed_settings.py and update the GROUPS dictionary
01155 # with the information in test_groups if found
01156 try:
01157     from mbed_settings import TEST_GROUPS
01158 except:
01159     TEST_GROUPS = {}
01160 GROUPS.update(TEST_GROUPS)
01161 
01162 class Test:
01163     DEFAULTS = {
01164         #'mcu': None,
01165         'description': None,
01166         'dependencies': None,
01167         'duration': 30,
01168         'host_test': 'host_test',
01169         'automated': False,
01170         'peripherals': None,
01171         #'supported': None,
01172         'source_dir': None,
01173         'extra_files': None
01174     }
01175     def __init__(self, n):
01176         self.n = n
01177         self.__dict__.update(Test.DEFAULTS)
01178         self.__dict__.update(TESTS[n])
01179 
01180     def is_supported(self, target, toolchain):
01181         if hasattr(self, 'mcu') and not target in self.mcu:
01182             return False
01183         if hasattr(self, 'exclude_mcu') and target in self.exclude_mcu:
01184             return False
01185         if not hasattr(self, 'supported'):
01186             return True
01187         return (target in self.supported) and (toolchain in self.supported[target])
01188 
01189     def get_description(self):
01190         if self.description:
01191             return self.description
01192         else:
01193             return self.id
01194 
01195     def __cmp__(self, other):
01196         return cmp(self.n, other.n)
01197 
01198     def __str__(self):
01199         return "[%3d] %s: %s" % (self.n, self.id, self.get_description())
01200 
01201     def __getitem__(self, key):
01202         if key == "id": return self.id
01203         elif key == "mcu": return self.mcu
01204         elif key == "exclude_mcu": return self.exclude_mcu
01205         elif key == "dependencies": return self.dependencies
01206         elif key == "description": return self.description
01207         elif key == "duration": return self.duration
01208         elif key == "host_test": return self.host_test
01209         elif key == "automated": return self.automated
01210         elif key == "peripherals": return self.peripherals
01211         elif key == "supported": return self.supported
01212         elif key == "source_dir": return self.source_dir
01213         elif key == "extra_files": return self.extra_files
01214         else:
01215             return None
01216 
01217 TEST_MAP = dict([(test['id'], Test(i)) for i, test in enumerate(TESTS)])
01218 
01219 # parser helpers
01220 def test_known(string):
01221     i = int(string)
01222     if i >= 0 and i < len(TESTS):
01223         return i
01224     else:
01225         raise ArgumentTypeError("{0} does not index a test. The accepted range is 0 to {1}\nThe test mapping is:\n{2}".format(i, len(TEST_MAP) - 1, columnate([str(i) + ":" + t['id'] for i,t in zip(range(len(TESTS)), TESTS)])))
01226 
01227 def test_name_known(string):
01228     if string not in TEST_MAP.keys() and \
01229        (getattr(ps, "test_alias", None) is None or \
01230         ps.test_alias.get(string, "") not in TEST_MAP.keys()):
01231         raise ArgumentTypeError("Program with name '{0}' not found. Supported tests are: \n{1}".format(string, columnate([t['id'] for t in TESTS])))
01232 
01233     return TEST_MAP[string].n