当前位置:  软件>C/C++软件

C 的属性测试库 theft

    来源:    发布时间:2014-12-14

    本文导语:  theft 是基于属性测试的 C 库。theft 并不是使用定义特定的输入,运行代码,然后测试和检测结果的方式,而是进行属性断言(“任意可能的输入,[条件]应该一直存在”),寻找反例。如果找到一个参数导致断言失败,将会继...

theft 是基于属性测试的 C 库。theft 并不是使用定义特定的输入,运行代码,然后测试和检测结果的方式,而是进行属性断言(“任意可能的输入,[条件]应该一直存在”),寻找反例。如果找到一个参数导致断言失败,将会继续寻找更简单的参数,如果仍然失败,打印最小的失败输入。

安装 & 依赖

theft 只依赖 C99。

构建:

$ make

构建和运行测试:

$ make test

安装 libtheft :

$ make install    # using sudo, if necessary
用法

首先,定义属性函数:

static theft_trial_res
prop_encoded_and_decoded_data_should_match(buffer *input) {
    // [compress & uncompress input, compare output & original input]
    // return THEFT_TRIAL_PASS, FAIL, SKIP, or ERROR
}

然后,生成测试参数:

static struct theft_type_info random_buffer_info = {
    .alloc = random_buffer_alloc_cb,    // allocate random instance
    .free = random_buffer_free_cb,      // free instance
    .hash = random_buffer_hash_cb,      // get hash of instance
    .shrink = random_buffer_shrink_cb,  // simplify instance
    .print = random_buffer_print_cb,    // print instance
};
最后,实例化:
struct theft *t = theft_init(0);   // 0 -> auto-size bloom filter

// Configuration for the property test
struct theft_cfg cfg = {
    // name of the property, used for failure messages (optional)
    .name = __func__,

    // the property function under test
    .fun = prop_encoded_and_decoded_data_should_match,

    // list of structs with argument info; the property function
    // will be called with this many arguments
    .type_info = { &random_buffer_info },

    // number of trials to run; defaults to 100
    .trials = 1000,
};

// Run the property test. Any failures will be printed, with seeds.
theft_run_res result = theft_run(t, &cfg);
theft_free(t);
return result == THEFT_RUN_PASS;



    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 怎样将linux系统底下一个文件夹的只读属性改为可读写的属性?
  • HTML <area> 标签的shape属性和coords属性详细介绍
  • python 基础学习第二弹 类属性和实例属性
  • CSS3 box-flex-group 属性
  • qt大侠进,如何做类似于VB属性编辑器或Qt designer的属性编辑器那种东东?
  • CSS3 rotation 属性
  • CSS属性 - white-space 空白属性使用说明
  • CSS empty-cells 属性
  • 为什么我动态的写了一个属性文件之后,读出来的还是原来的属性文件呢?
  • CSS3 grid-rows 属性
  • jquery修改属性值实例代码(设置属性值)
  • CSS border-spacing 属性
  • js正则表达式之input属性($_)RegExp对象属性介绍
  • HTML 文档属性介绍
  • qt问题,请教如何做类似于VB属性编辑器或者qt designer的属性编辑器那样的东东?
  • CSS table-layout 属性
  • 使用jQuery设置disabled属性与移除disabled属性
  • CSS counter-increment 属性
  • 读取属性一般用ResourceBundle,保存属性用什么呢?
  • CSS caption-side 属性
  • jquery根据属性和index来查找属性值并操作


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3