midpnuts.c
来自「This is a resource based on j2me embedde」· C语言 代码 · 共 193 行
C
193 行
/* * * * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. *//** * @file * * Functions and data structures specific to the native unit * tests suite (NUTS). To write tests, include this file and use the * APIs. See the file nuts_example.c for an example of how it is * done. */#include <midpNUTS.h>#include <midp_logging.h>#if ENABLE_NUTS_FRAMEWORK/** * Max number of tests that could be registered. */#define MAX_NUMBER_OF_TESTS 25/** * test_info will contain the information about the test.<BR> * test_name: Name of the test supplied by a tester <BR> * fp: Pointer to the test function. It has to have int foo(void) * signature <BR> * res: Result of the test execution. */typedef struct _test_info { char *test_name; p_int_func_void fp; int res;} test_info;/** * Array of pointers to test_info struct * */static test_info tf[MAX_NUMBER_OF_TESTS];/** * Set to > MAX_NUMBER_OF_TESTS to indicate uninitialized state. * Will be set to 0 by init_nuts() * and back to MAX_NUMBER_OF_TESTS+1 by finalize_nuts() * The main idea for doing like that is to prevent test * registration before initialization */static int number_of_registered_tests = MAX_NUMBER_OF_TESTS+1;/** * Executes a specific test. * * @param pf pointer to the test function * @return 0 on fail <BR> * 1 on success */static int run_test(int(*pf)(void));/** * Initializes a test framework.<BR> * Call this before calling any other functions.<BR> * * @return MAX_NUMBER_OF_TESTS * */int init_nuts() { number_of_registered_tests = 0; return MAX_NUMBER_OF_TESTS;}/** * Finalizes a test framework. * Call this as a last call to clean up.<BR> */void finalize_nuts() { number_of_registered_tests = MAX_NUMBER_OF_TESTS+1;}/** * Register a test in the framework. * Please do not use stack or dynamic allocation for test names! * * @param test_name Test name or any other verbal information provided by the user.<BR> * @param pf Pointer to the test function.<BR> * @return On success: 1 <BR> * On failure: 0 */int register_test(char* test_name, p_int_func_void pf) { if ((number_of_registered_tests >= MAX_NUMBER_OF_TESTS) || (number_of_registered_tests < 0)) { return 0; } tf[number_of_registered_tests].fp = pf; tf[number_of_registered_tests].test_name = test_name; tf[number_of_registered_tests].res = 0; number_of_registered_tests++; return 1;}/** * Runs all the previously registered tests. * * @return Number of tests that failed. */int run_tests() { int tests_fail = number_of_registered_tests; int tests_pass = 0; int i; REPORT_INFO(LC_CORE, "\n######## TESTS EXECUTION START ############\n"); for (i=0; i< number_of_registered_tests; i++) { tf[i].res = run_test(tf[i].fp); tests_fail -= tf[i].res; if (!tf[i].res) { REPORT_WARN1(LC_CORE, "Test: %s failed.\n",tf[i].test_name); } } /* end of for */ tests_pass = number_of_registered_tests - tests_fail; REPORT_INFO3(LC_CORE, "Number of tests is %d, tests_pass = %d, tests_fail = %d\n", number_of_registered_tests, tests_pass, tests_fail); REPORT_INFO(LC_CORE, "\n######## TESTS EXECUTION END ############\n"); return tests_fail;}/** * Executes a specific test. Test should return a number less then 0 if fail. * * @param pf pointer to the test function * @return 0 on fail <BR> * 1 on success */static int run_test(int(*pf)(void)) { if (pf() < 0) { return 0; } return 1;}/** * Provides number of tests in the test struct which will be run. * * @return number of registered tests */int get_num_tests() { return number_of_registered_tests;}/** * Provides the size of test registration struct. * = maximum number of tests that could be registered. * * @return MAX_NUMBER_OF_TESTS */int get_MAX_NUMBER_OF_TESTS() { return MAX_NUMBER_OF_TESTS;}#endif /* ENABLE_NUTS_FRAMEWORK */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?