亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? test_suite_spec.txt

?? This a FREE tool chain which compiles C codes into 8051 binary code, converts the binary to RTL ROM,
?? TXT
字號:


Proposed Test Suite Design

Michael Hope (michaelh @ juju.net.nz)

Abstract

This article describes the goals, requirements, and 
suggested specification for a test suite for the output 
of the Small Device C Compiler (sdcc). Also included is 
a short list of existing works. 

1 Goals

The main goals of a test suite for sdcc are 

1. To allow developers to run regression tests to check 
  that core changes do not break any of the many ports. 

2. To verify the core. 

3. To allow developers to verify individual ports. 

4. To allow developers to test port changes. 

This design only covers the generated code. It does not 
cover a test/unit test framework for the sdcc 
application itself, which may be useful.

One side effect of (1) is that it requires that the 
individual ports pass the tests originally. This may be 
too hard. See the section on Exceptions below.

2 Requirements

2.1 Coverage

The suite is intended to cover language features only. 
Hardware specific libraries are explicitly not covered.

2.2 Permutations

The ports often generate different code for handling 
different types (Byte, Word, DWord, and the signed 
forms). Meta information could be used to permute the 
different test cases across the different types.

2.3 Exceptions

The different ports are all at different levels of 
development. Test cases must be able to be disabled on 
a per port basis. Permutations also must be able to be 
disabled on a port level for unsupported cases. 
Disabling, as opposed to enabling, on a per port basis 
seems more maintainable.

2.4 Running

The tests must be able to run unaided. The test suite 
must run on all platforms that sdcc runs on. A good 
minimum may be a subset of Unix command set and common 
tools, provided by default on a Unix host and provided 
through cygwin on a Windows host.

The tests suits should be able to be sub-divided, so 
that the failing or interesting tests may be run separately.

2.5 Artifcats

The test code within the test cases should not generate 
artifacts. An artifact occurs when the test code itself 
interferes with the test and generates an erroneous result.

2.6 Emulators

sdcc is a cross compiling compiler. As such, an 
emulator is needed for each port to run the tests.

3 Existing works

3.1 DejaGnu

DejaGnu is a toolkit written in Expect designed to test 
an interactive program. It provides a way of specifying 
an interface to the program, and given that interface a 
way of stimulating the program and interpreting the 
results. It was originally written by Cygnus Solutions 
for running against development boards. I believe the 
gcc test suite is written against DejaGnu, perhaps 
partly to test the Cygnus ports of gcc on target systems.

3.2 gcc test suite

I don't know much about the gcc test suite. It was 
recently removed from the gcc distribution due to 
issues with copyright ownership. The code I saw from 
older distributions seemed more concerned with esoteric 
features of the language.

3.3 xUnit

The xUnit family, in particular JUnit, is a library of 
in test assertions, test wrappers, and test suite 
wrappers designed mainly for unit testing. PENDING: More.

3.4 CoreLinux++ Assertion framework

While not a test suite system, the assertion framework 
is an interesting model for the types of assertions 
that could be used. They include pre-condition, 
post-condition, invariants, conditional assertions, 
unconditional assertions, and methods for checking conditions.

4 Specification

This specification borrows from the JUnit style of unit 
testing and the CoreLinux++ style of assertions. The 
emphasis is on maintainability and ease of writing the 
test cases.

4.1 Terms

PENDING: Align these terms with the rest of the world.

* An assertion is a statement of how things should be. 
  PENDING: Better description, an example. 

* A test point is the smallest unit of a test suite, 
  and consists of a single assertion that passes if the 
  test passes. 

* A test case is a set of test points that test a 
  certain feature. 

* A test suite is a set of test cases that test a 
  certain set of features. 

4.2 Test cases

Test cases shall be contained in their own C file, 
along with the meta data on the test. Test cases shall 
be contained within functions whose names start with 
'test' and which are descriptive of the test case. Any 
function that starts with 'test' will be automatically 
run in the test suite.

To make the automatic code generation easier, the C 
code shall have this format 

* Test functions shall start with 'test' to allow 
  automatic detection. 

* Test functions shall follow the K&R intention style 
  for ease of detection. i.e. the function name shall 
  start in the left column on a new line below the 
  return specification. 

4.3 Assertions

All assertions shall log the line number, function 
name, and test case file when they fail. Most 
assertions can have a more descriptive message attached 
to them. Assertions will be implemented through macros 
to get at the line information. This may cause trouble 
with artifacts.

The following definitions use C++ style default 
arguments where optional messages may be inserted. All 
assertions use double opening and closing brackets in 
the macros to allow them to be compiled out without any 
side effects. While this is not required for a test 
suite, they are there in case any of this code is 
incorporated into the main product.

Borrowing from JUnit, the assertions shall include 

* FAIL((String msg = "Failed")). Used when execution 
  should not get here. 

* ASSERT((Boolean cond, String msg = "Assertion failed"). 
  Fails if cond is false. Parent to REQUIRE and ENSURE. 

JUnit also includes may sub-cases of ASSERT, such as 
assertNotNull, assertEquals, and assertSame.

CoreLinux++ includes the extra assertions 

* REQUIRE((Boolean cond, String msg = "Precondition failed"
  ). Checks preconditions. 

* ENSURE((Boolean cond, String msg = "Postcondition failed"
  ). Checks post conditions. 

* CHECK((Boolean cond, String msg = "Check failed")). 
  Used to call a function and to check that the return 
  value is as expected. i.e. CHECK((fread(in, buf, 10) 
  != -1)). Very similar to ASSERT, but the function 
  still gets called in a release build. 

* FORALL and EXISTS. Used to check conditions within 
  part of the code. For example, can be used to check 
  that a list is still sorted inside each loop of a 
  sort routine. 

All of FAIL, ASSERT, REQUIRE, ENSURE, and CHECK shall 
be available.

4.4 Meta data

PENDING: It's not really meta data.

Meta data includes permutation information, exception 
information, and permutation exceptions.

Meta data shall be global to the file. Meta data names 
consist of the lower case alphanumerics. Test case 
specific meta data (fields) shall be stored in a 
comment block at the start of the file. This is only 
due to style.

A field definition shall consist of 

* The field name 

* A colon. 

* A comma separated list of values. 

The values shall be stripped of leading and trailing 
white space.

Permutation exceptions are by port only. Exceptions to 
a field are specified by a modified field definition. 
An exception definition consists of

* The field name. 

* An opening square bracket. 

* A comma separated list of ports the exception applies 
  for. 

* A closing square bracket. 

* A colon. 

* The values to use for this field for these ports. 

An instance of the test case shall be generated for 
each permutation of the test case specific meta data fields.

The runtime meta fields are 

* port - The port this test is running on. 

* testcase - The name of this test case. 

* function - The name of the current function. 

Most of the runtime fields are not very usable. They 
are there for completeness.

Meta fields may be accessed inside the test case by 
enclosing them in curly brackets. The curly brackets 
will be interpreted anywhere inside the test case, 
including inside quoted strings. Field names that are 
not recognised will be passed through including the 
brackets. Note that it is therefore impossible to use 
some strings within the test case.

Test case function names should include the permuted 
fields in the name to reduce name collisions.

4.5 An example

I don't know how to do pre-formatted text in LaTeX. Sigh.

The following code generates a simple increment test 
for all combinations of the storage classes and all 
combinations of the data sizes. This is a bad example 
as the optimiser will often remove most of this code.


/** Test for increment. 
  type: char, int, long
  Z80 port 
does not fully support longs (4 byte)
  type[z80]: char, int
  
class: "", register, static */
 
static void

testInc{class}{types}(void)
{ 
  {class} {type} i = 0; 
  i = 
i + 1;
  ASSERT((i == 1));
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品亚洲乱码伦伦中文| 日韩黄色免费网站| 日本不卡高清视频| 成人精品国产一区二区4080| 91精品国产综合久久精品app| 久久久综合精品| 蜜桃av一区二区在线观看| 99re8在线精品视频免费播放| 欧美xxx久久| 亚洲福利一区二区| 成人激情免费网站| 久久精品一区二区| 久久精品国产久精国产爱| 欧美伊人久久久久久久久影院| 国产日韩精品一区二区三区在线| 日韩精品成人一区二区三区| 色天天综合色天天久久| 国产精品久久久久久久久免费相片 | 欧美一区二区三区影视| 亚洲免费av高清| 99综合电影在线视频| 国产视频一区二区在线| 经典三级视频一区| 日韩一区二区三区免费观看| 天堂成人免费av电影一区| 欧美色偷偷大香| 亚洲一区二区三区国产| 色94色欧美sute亚洲线路一ni| 一区二区中文字幕在线| youjizz久久| 成人免费小视频| 99国产精品久久久久久久久久| 欧美高清在线视频| 暴力调教一区二区三区| 国产精品免费网站在线观看| 高清国产一区二区| 国产精品美女久久久久高潮| 99久久精品国产精品久久| 亚洲欧美日韩国产手机在线 | 国产精品一区一区三区| 精品国产不卡一区二区三区| 精品亚洲成a人在线观看| 欧美电视剧在线看免费| 国产一区二区主播在线| 精品久久久久99| 国产91清纯白嫩初高中在线观看| 国产欧美精品一区二区色综合 | 亚洲精品视频自拍| 欧美日韩一区二区三区在线| 日韩中文字幕麻豆| 精品成人a区在线观看| 国产精品18久久久| 亚洲欧洲韩国日本视频| 在线观看亚洲a| 久久av资源站| 国产精品久久久久9999吃药| 91成人免费在线视频| 婷婷丁香激情综合| 国产色婷婷亚洲99精品小说| 97成人超碰视| 奇米影视一区二区三区小说| 国产人久久人人人人爽| 日本精品视频一区二区三区| 裸体健美xxxx欧美裸体表演| 中文一区二区完整视频在线观看| 91久久久免费一区二区| 久久精品国产**网站演员| 中文字幕av不卡| 欧美人与禽zozo性伦| 国产精品白丝jk黑袜喷水| 亚洲欧美日韩国产手机在线| 精品国精品国产| 在线观看国产精品网站| 国产乱一区二区| 亚洲综合精品自拍| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲欧美aⅴ...| 精品国产乱子伦一区| 日本高清免费不卡视频| 国产精品一区二区在线看| 亚洲国产一区二区视频| 中文av字幕一区| 欧美一区二区在线播放| 色狠狠av一区二区三区| 国产高清精品网站| 美女精品自拍一二三四| 亚洲一卡二卡三卡四卡无卡久久 | 一区二区三区小说| 国产午夜精品理论片a级大结局| 欧美日韩一级片在线观看| a亚洲天堂av| 国产成人免费av在线| 欧美a级一区二区| 一区二区三区波多野结衣在线观看| 久久久久免费观看| 欧美精品一区男女天堂| 69久久99精品久久久久婷婷 | 亚洲伦在线观看| 欧美高清在线一区| 国产网红主播福利一区二区| 91精品国产一区二区三区香蕉| 色嗨嗨av一区二区三区| 91在线视频在线| 成人h动漫精品一区二| 国产成人免费在线| 国内精品伊人久久久久av一坑| 性做久久久久久久免费看| 一区二区激情小说| 亚洲色图在线播放| 日韩一区欧美小说| 亚洲人成精品久久久久| 亚洲欧洲日韩一区二区三区| 国产精品久久久久久久久久久免费看 | 亚洲色欲色欲www| 亚洲日本乱码在线观看| 亚洲视频图片小说| 亚洲欧美日韩在线| 亚洲色大成网站www久久九九| 亚洲欧美视频一区| 亚洲国产sm捆绑调教视频 | 极品少妇一区二区三区精品视频| 日韩中文欧美在线| 久久99国产精品麻豆| 国产精品一级片| 成人av一区二区三区| 91网址在线看| 欧美视频一区二区三区在线观看| 精品视频免费在线| 91精品国产麻豆| 精品少妇一区二区三区在线播放| 久久网站热最新地址| 欧美国产一区在线| 洋洋成人永久网站入口| 丝袜美腿亚洲一区| 国产成人综合自拍| 色先锋aa成人| 日韩欧美一区二区久久婷婷| 久久亚洲二区三区| 最新中文字幕一区二区三区| 亚洲一级二级三级在线免费观看| 日本在线不卡视频| 国产99久久久国产精品免费看 | 亚洲免费在线看| 婷婷综合久久一区二区三区| 美女精品自拍一二三四| 国产不卡在线播放| 欧美亚一区二区| 2019国产精品| 一区二区三区四区五区视频在线观看| 亚洲444eee在线观看| 国产高清精品久久久久| 欧美中文字幕久久| 国产欧美精品一区二区三区四区| 亚洲乱码中文字幕| 国产一区二区三区不卡在线观看| 99re66热这里只有精品3直播| 91精品国产乱| 亚洲欧美日韩成人高清在线一区| 免费av网站大全久久| 99久久免费国产| 日韩精品一区二区三区四区| 亚洲三级视频在线观看| 国内精品国产成人国产三级粉色| 一本高清dvd不卡在线观看| 日韩午夜在线观看视频| 亚洲精品成a人| 国产精品一区二区三区网站| 欧美午夜片在线观看| 国产精品国产精品国产专区不片| 日韩高清在线电影| 日本福利一区二区| 国产精品电影院| 国产精品一区二区91| 91精品国产麻豆| 亚洲bt欧美bt精品| 欧美亚一区二区| 亚洲天堂中文字幕| 国产精品1区2区| 欧美精品一区二区久久久| 日本欧美在线观看| 欧美日韩在线播放一区| 亚洲欧美一区二区三区极速播放| 国产91丝袜在线18| 久久精品网站免费观看| 久久99热狠狠色一区二区| 精品视频一区二区不卡| 亚洲精品免费一二三区| 97久久超碰国产精品| 国产精品视频免费看| 成人污视频在线观看| 久久久亚洲精品石原莉奈| 国产在线国偷精品免费看| 日韩免费性生活视频播放| 日韩av不卡在线观看| 欧美在线观看一区| 亚洲国产成人av| 91精品国产一区二区三区蜜臀 | 久久精品视频网| 国产一区二区按摩在线观看| 精品欧美一区二区在线观看 |