问题列表 - 第24735页

如何有效地测试Windows API?

我仍然有问题为自己辩护TDD.正如我在其他问题中提到的,我写的90%的代码绝对没有

  1. 调用一些Windows API函数和
  2. 打印出从所述函数返回的数据.

提出代码需要在TDD下处理的假数据所花费的时间是令人难以置信的 - 我花了5倍的时间来提供示例数据,就像编写应用程序代码一样.

这个问题的部分原因是我经常使用我没有经验的API编程,这迫使我编写小应用程序来向我展示真实API的行为,以便我可以在API之上编写有效的假货/模拟.首先编写实现与TDD相反,但在这种情况下它是不可避免的:我不知道真正的API如何表现,那么我怎么能够创建一个虚假的API实现而不用它呢?

我已经阅读了几本关于这个主题的书,包括Kent Beck的测试驱动开发,例如,以及Michael Feathers的"有效地使用遗留代码",这似乎是TDD狂热分子的福音.Feathers的书与描述破坏依赖关系的方式接近,但即使这样,提供的示例也有一个共同点:

  • 被测程序从被测程序的其他部分获得输入.

我的程序不遵循这种模式.相反,程序本身的唯一输入是它运行的系统.

如何在这样的项目中有效地使用TDD?在实际使用该API之前,我已经将大部分API包装在C++类中,但有时包装器本身会变得非常复杂,并且值得进行自己的测试.

c++ tdd winapi

17
推荐指数
1
解决办法
3891
查看次数

在python中的列表上工作

我试图对django lfs项目做一个小修改,这将允许我停用没有股票的产品.不幸的是,我刚开始学习python,所以我的语法很麻烦.这就是我想要做的.如果我的产品是子类型,我正在使用方法'is_variant'返回tru.如果它是一个变种我转向母产品,得到它的活跃变种并检查他们的股票.如果stock大于0,则变量active为0,否则为1.如果在循环变量'active'后仍为1,则将parent product的active设置为false.

我不知何故不能使它正常工作.使用时:

   def deactivate(self):
        if self.is_variant():
            prod = self.parent
            prod.active = all(var.get_stock_amount() != 0 for var in prod.variants.filter(active=True))
        else:
            prod.active = self.get_stock_amount() != 0

        self.parent.save()
Run Code Online (Sandbox Code Playgroud)

它会停用我的产品,无论它的变体是否有库存.使用时:

        inactive = 0
        if self.is_variant():
            prod = self.parent
            for s in prod.variants.filter(active=True):
                if s.get_stock_amount() == 0:
                    inactive = 1
                else:
                    inactive = 0
            if inactive == 1:
                prod.active = 0
            prod.save()
        else:
            if self.get_stock_amount() == 0:
                self.active = 0

            self.save()
Run Code Online (Sandbox Code Playgroud)

同样的情况发生,所以我的产品每次都被停用.

我已经检查了shell中的返回类型,self是一个变体,它是活动的.

python django django-models

2
推荐指数
1
解决办法
276
查看次数

使用ruby根据它们含有的成分找到类似的食谱

我有一系列食谱,每种都有许多成分.此信息存储在连接表中.给一个食谱,我想根据成分找到类似的食谱.我该怎么做呢?

ruby ruby-on-rails nearest-neighbor

2
推荐指数
1
解决办法
591
查看次数

在HtmlEditor WinForms上拦截粘贴事件

我在Windows窗体中使用HtmlEditor控件.

我从这个页面得到了控件:

http://windowsclient.net/articles/htmleditor.aspx

我想通过允许用户从剪贴板粘贴图像来扩展控件功能.现在,您可以粘贴纯文本和格式化文本,但在尝试粘贴图像时,它什么都不做.

基本上我认为当用户在编辑器上按下Ctrl + V时检测到,检查剪贴板上的图像,如果有图像,则将其手动插入编辑器.

这种方法的问题是我无法获取要引发的表单的OnKeyDown或OnKeyPress事件.

我在表单上将KeyPreview属性设置为true,但仍未引发事件.

我也试图子类形式和编辑器(如解释在这里)拦截WM_PASTE消息,但它也不会被上调.

关于如何实现这一点的任何想法?

非常感谢

c# events subclass winforms

2
推荐指数
1
解决办法
1392
查看次数

lambda traits在C++ 0x编译器中的不一致性

我发现两个编译器(g ++ 4.5,VS2010 RC)之间存在一些不一致的方式,它们将lambdas与类模板的部分特化相匹配.我试图为lambdas实现类似boost :: function_types的东西以提取类型特征.请查看此内容以获取更多详

在g ++ 4.5中,operator()lambda 的类型看起来像一个独立函数(R(*)(...)),而在VS2010 RC中,它看起来像一个成员函数(R( C::*)(...)).所以问题是编译器编写者可以自由地解释他们想要的任何方式吗?如果没有,哪个编译器是正确的?请参阅以下详细信息.

template <typename T>
struct function_traits 
  : function_traits<decltype(&T::operator())> 
{ 
// This generic template is instantiated on both the compilers as expected.
};

template <typename R, typename C>
struct function_traits<R (C::*)() const>  { // inherits from this one on VS2010 RC
  typedef R result_type;
};

template <typename R>
struct function_traits<R (*)()> { // inherits from this one on g++ 4.5
  typedef R result_type;
};

int main(void) …
Run Code Online (Sandbox Code Playgroud)

c++ lambda traits c++11

15
推荐指数
1
解决办法
1657
查看次数

学习阅读GCC汇编程序输出

我正在考虑对装配有一些非常基本的了解.我目前的目标很简单:在使用-S开关为x86/x86-64编译C/C++时,对GCC汇编器输出有非常基本的了解.

足以做一些简单的事情,例如查看单个函数并验证GCC是否优化了我希望消失的东西.

有没有人知道一个真正简洁的汇编介绍,与GCC相关,特别是为了阅读的目的,以及任何随便阅读汇编的人都应该知道的最重要的指令清单?

c c++ assembly gcc

37
推荐指数
2
解决办法
9242
查看次数

适合PHP初学者的专用播客

我正在寻找任何专门讨论PHP类和对象的PHP /编程播客剧集.也许这太具体了,但任何参考都可以.

顺便说一下,PHP初学者有没有专门的播客?

php podcast

5
推荐指数
1
解决办法
2390
查看次数

Objective-c中的时区偏移数?

如何在Objective-C(iPhone OS 3)中获得时区偏移?

例如,GMT -5是美国东部时间.我想要-5它的一部分.我该怎么办?

iphone time objective-c nstimezone

11
推荐指数
1
解决办法
8522
查看次数

将UITableView置于编辑模式而不移动TextLabel?

我有一个可排序的UITableView,但就是这样.现在,我将所有单元格设置为UITableViewCellEditingStyleNone,但这仍然将单元格的TextLabel向右移动了40个像素.反正是否有编辑模式和右侧的排序图标,而没有移动TextLabel?

iphone cocoa-touch

2
推荐指数
1
解决办法
988
查看次数

正则表达式解析csv

我正在寻找一个将从csv文件一次解析一行的正则表达式.基本上,string.readline()做什么,但如果它们在双引号内,它将允许换行.

或者有更简单的方法吗?

regex csv asp.net

4
推荐指数
1
解决办法
1308
查看次数