Greg Steiert / pegasus_dev

Dependents:   blinky_max32630fthr

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