51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2315|回复: 0
打印 上一主题 下一主题

[讨论] 这个复杂的函数如何设计测试用例?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-4-13 10:20:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. static inline uint32_t modify(int i, uint64_t seed, uint64_t idx, uint32_t ori, uint64_t num)
  2. {
  3.         uint32_t mod;
  4.         mod = ori;
  5.         if(seed == 0)
  6.         {
  7.                 if(mdo[idx].offsetop[i][0] != 0)
  8.                 {
  9.                         if(((~mdo[idx].offset[i][1]) & ori) !=
  10.                                 ((~mdo[idx].offset[i][1]) & mdo[idx].offset[i][0]))
  11.                                 return mod;//match fails
  12.                         else
  13.                                 matchbit[idx][num] += (1 << i);
  14.                 }
  15.         }
  16.         else
  17.         {
  18.                 if(mdo[idx].offsetop[i][0] != 0)
  19.                 {
  20.                         if((matchbit[idx][num] & (1 << i)) == 0)
  21.                                 {
  22.                                         return mod;
  23.                                 }
  24.                 }
  25.         }
  26.         if(mdo[idx].offset[i][2] == mdo[idx].offset[i][3])       
  27.         {
  28.                 mod = (mdo[idx].offset[i][1]&ori) + (mdo[idx].offset[i][2]&(~mdo[idx].offset[i][1]));
  29.         }
  30.         else       
  31.         {
  32.                 if(mdo[idx].offsetop[i][3] == 0)       
  33.                 {
  34.                         mod = RandomULLimit(seed, idx, i);
  35.                         mod = (mdo[idx].offset[i][1] & ori) + ((~mdo[idx].offset[i][1]) & mod);
  36.                 }
  37.                 else       
  38.                 {
  39.                        
  40.                         if(seed == 0)       
  41.                         {
  42.                                 if(mdo[idx].offsetop[i][3] > 0)       
  43.                                 {
  44.                                         mod = (mdo[idx].offset[i][1] & ori)
  45.                                                 + (mdo[idx].offset[i][2] & (~mdo[idx].offset[i][1]));
  46.                                 }
  47.                                 else                                                                               
  48.                                 {
  49.                                         mod = (mdo[idx].offset[i][1] & ori)
  50.                                                 + (mdo[idx].offset[i][3] & (~mdo[idx].offset[i][1]));
  51.                                 }
  52.                         }
  53.                         else
  54.                         {
  55.                                 int k = 0;
  56.                                 do
  57.                                 {
  58.                                         if((mdo[idx].offset[i][1] >> k) % 2 != 0)
  59.                                                 k++;
  60.                                         else
  61.                                                 break;
  62.                                 }
  63.                                 while(k < 32);
  64.                                 if(mdo[idx].offsetop[i][3] > 0)
  65.                                 {
  66.                                         mod = ori + ((mdo[idx].offsetop[i][3]<<k) & (~mdo[idx].offset[i][1]));       
  67.                                         if(mod > (mdo[idx].offset[i][1] & ori) + (mdo[idx].offset[i][3] & (~mdo[idx].offset[i][1])))       
  68.                                                 mod = mod - (mdo[idx].offset[i][3] & (~mdo[idx].offset[i][1]))
  69.                                                         + (mdo[idx].offset[i][2] & (~mdo[idx].offset[i][1])) - (1<<k);
  70.                                 }
  71.                                 else if(mdo[idx].offsetop[i][3] < 0)
  72.                                 {
  73.                                         mod = ori - (((-mdo[idx].offsetop[i][3])<<k) & (~mdo[idx].offset[i][1]));       
  74.                                         if(mod < (mdo[idx].offset[i][1] & ori) + (mdo[idx].offset[i][2] & (~mdo[idx].offset[i][1])))       
  75.                                                 mod = mod - (mdo[idx].offset[i][2] & (~mdo[idx].offset[i][1]))
  76.                                                         + (mdo[idx].offset[i][3] & (~mdo[idx].offset[i][1])) + (1<<k);
  77.                                 }
  78.                         }
  79.                 }
  80.         }
  81.         return mod;
  82. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-15 13:35 , Processed in 0.071024 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表