请考虑以下代码:
template <int dim>
struct vec
{
vec normalize();
};
template <>
struct vec<3>
{
vec cross_product(const vec& second);
vec normalize();
};
template <int dim>
vec<dim> vec<dim>::normalize()
{
// code to normalize vector here
return *this;
}
int main()
{
vec<3> direction;
direction.normalize();
}
Run Code Online (Sandbox Code Playgroud)
编译此代码会产生以下错误:
1> main.obj:错误LNK2019:未解析的外部符号"public:struct vec <3> __thiscall vec <3> :: normalize(void)"(?normalize @?$ vec @ $ 02 @@ QAE?AU1 @ XZ)引用在函数_main中
我正在为一系列函数实现单元测试,这些函数都共享多个不变量.例如,调用具有两个矩阵的函数产生已知形状的矩阵.
我想编写单元测试来测试该属性的整个函数系列,而不必为每个函数编写单独的测试用例(特别是因为稍后可能会添加更多函数).
一种方法是迭代这些函数的列表:
import unittest
import numpy
from somewhere import the_functions
from somewhere.else import TheClass
class Test_the_functions(unittest.TestCase):
def setUp(self):
self.matrix1 = numpy.ones((5,10))
self.matrix2 = numpy.identity(5)
def testOutputShape(unittest.TestCase):
"""Output of functions be of a certain shape"""
for function in all_functions:
output = function(self.matrix1, self.matrix2)
fail_message = "%s produces output of the wrong shape" % str(function)
self.assertEqual(self.matrix1.shape, output.shape, fail_message)
if __name__ == "__main__":
unittest.main()
Run Code Online (Sandbox Code Playgroud)
我从Dive Into Python中得到了这个想法.在那里,它不是正在测试的函数列表,而是已知输入 - 输出对的列表.这种方法的问题在于,如果列表中的任何元素未通过测试,则后面的元素不会被测试.
我查看了子类化unittest.TestCase并以某种方式提供了作为参数测试的特定函数,但据我所知,这阻止我们使用unittest.main(),因为没有办法将参数传递给测试用例.
我还看了动态地将"testSomething"函数附加到测试用例,使用带有lamdba的setattr,但是测试用例没有识别它们.
我怎样才能重写这个,所以扩展测试列表仍然是微不足道的,同时仍然确保每个测试都运行?
将项目文件(即其他源代码文件的文件)保存在版本控制存储库中是否常见?
这些文件是否定期检入/退出?
我总是将SCC存储库设想为"干净",仅包含源代码文件.
如何管理存储库中的非源代码文件?
以Visual Studio解决方案为例.您会将整个Solution的目录"签入"到SCCS,还是只添加源代码文件?在构建解决方案的时候,需要检查整个解决方案呢?也许最好用手动过程完成?
为方便起见,您是否将单元测试放在同一个项目中,或者将它们放在单独的组件中?
如果你像我们一样将它们放在一个单独的程序集中,我们最终会在解决方案中添加一些额外的项目.这对于编码时的单元测试很有用,但是如果没有所有这些额外的组件,你如何发布应用程序呢?
当我在掌握时,我只需要输入'git push'来将提交推送到远程仓库.我希望在我在另一个分支上时可以这样做,而不指定远程名称和分支名称.像那样:
现在: git push origin experimental:origin/experimental
需要: git push
在一个全新的程序中,空间并不是真的那么大,最好是删除行或禁用行,让我们说一个布尔"禁用"并让程序忽略它?
例如,如果我想从程序中删除用户.
我正在使用NSTimer在基于OpenGL的iPhone应用程序中进行渲染.我有一个模式对话框弹出并请求用户输入.当用户提供输入时,我想"暂停",例如:
[myNSTimer pause];
Run Code Online (Sandbox Code Playgroud)
我正在使用这种语法,因为我一直在做这样的事情:
[myNSTimer invalidate];
Run Code Online (Sandbox Code Playgroud)
当我希望它停止.
如何以编程方式暂停NSTimer?
我在Microsoft Sql CE中创建了一个表,用于保存一些数据.我已经通过SqlMetal生成了一个ORM,并且我将数据源拉入了我的WPF项目.
我想创建一个简单的WPF表单,可以通过ORM生成的类来编辑表中的记录.我希望这个表单支持典型的OK/Cancel语义.我已经在我认为是典型的时尚中创建了表单,在相应的字段上使用TwoWay数据绑定来绑定来自ORM的对象的实例.例如,给定ORM中具有属性"TaskName"的对象,我在WPF表单中包含以下内容:
<Label Grid.Column="0" Grid.Row="0" >
Name:
</Label>
<TextBox Name="txtName" Grid.Column="1" Grid.Row="0"
Text="{Binding TaskName, Mode=TwoWay}" AcceptsReturn="False"
MaxLines="1" />
Run Code Online (Sandbox Code Playgroud)
这与代码中的DataContext赋值相结合:
var newRow = new OrmGeneratedClass();
// Populate default values on newRow, e.g.
detailWindow.DataContext = newRow;
detailWindow.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
可以合理地创建新行.通过表单进行的所有更改都会立即反映在底层的OrmGeneratedClass中.问题是,如果例如OrmGeneratedClass填充了先前保存的值,则不会立即支持取消更改.
对于这种情况,什么是好的设计,或者在我达到这一点之前我是否设计错了? 我是WPF和Sql Server数据源/ ORM集成方面的新手.(这是我用来学习这两种技术的个人项目.)
我有几个想法,并将他们放在答案中
我有一个base64编码的字符串.如何搜索此字符串以检查此字符串是否包含未编码的特定子字符串?我不想解码该字符串然后搜索它.
我可以只编码该特定子字符串,并使用编码的子字符串搜索编码的字符串吗?
谢谢,
c++ ×2
unit-testing ×2
append ×1
base64 ×1
c# ×1
char ×1
cocoa-touch ×1
data-binding ×1
encode ×1
git ×1
integer ×1
iphone ×1
java ×1
linq-to-sql ×1
mysql ×1
objective-c ×1
oracle ×1
python ×1
relational ×1
search ×1
sql ×1
templates ×1
wpf ×1