在Java/Junit中,我需要使用某个对象测试null.我可以通过多种方式测试条件,但我一直在使用assertTrue进行大多数测试.当我在assertTrue中检查空值时,EclEmma声明它只测试一个分支.
当我手动将语句解析为变量(比如将结果设置为布尔值并将其传递给assertTrue)时,代码覆盖率在断言上被认为是完整的,而不是在变量初始化行上.
为什么会这样?这是否与Java显然添加的额外字节代码相关,如http://sourceforge.net/apps/trac/eclemma/wiki/FilteringOptions所述?任何解决方案(除了使用其他断言语句).
assertTrue:
assertTrue( myObject == null ); //1 of 2 branches
Run Code Online (Sandbox Code Playgroud)
assertTrue:
boolean test = (myObject == null); //1 of 2 branches missing
assertTrue(test); // complete
Run Code Online (Sandbox Code Playgroud)
assertNull:
assertNull( myObject ) //complete;
Run Code Online (Sandbox Code Playgroud) 我要回到这里的基础知识,但在Lua中,你可以像这样定义一个表:
myTable = {}
myTable [1] = 12
Run Code Online (Sandbox Code Playgroud)
打印表引用本身会返回指向它的指针.要访问其元素,您需要指定一个索引(即与数组完全一样)
print(myTable ) --prints pointer
print(myTable[1]) --prints 12
Run Code Online (Sandbox Code Playgroud)
现在功能是一个不同的故事.您可以定义和打印如下函数:
myFunc = function() local x = 14 end --Defined function
print(myFunc) --Printed pointer to function
Run Code Online (Sandbox Code Playgroud)
有没有办法访问已定义函数的主体.我试图整理一个小代码可视化器,并希望用特殊的函数/变量"播种"给定的函数,以允许可视化器将自己"挂钩"到代码中,我需要能够重新定义函数.变量或字符串.
不久我将加入一家严重依赖Eclipse进行Java开发的公司.对于我自己的开发,我专门使用了其他工具,所以在开始签订合同之前我现在已经熟悉了Eclipse.
我习惯使用的功能之一是虚拟白色空间.这允许您单击给定文本区域中的任意位置并开始键入.如果在光标之前不存在空白区域,它将自动填充.您可以使用文本编辑器ConTEXT或在Visual Studio的编辑器设置中打开来查看此行为的示例.
我在Eclipse中找不到它的选项.有没有我缺少的选项,还是我必须搜索插件才能启用此功能?
我一直在研究游戏引擎一段时间。我从仅使用 SDL 的 2D 图形开始,但我已经通过使用 OpenGL 逐渐转向 3D 功能。我见过的大多数关于“如何完成工作”的文档都使用 GLUT,但我没有使用。
问题是如何在 OpenGL 中创建一个“相机”,我可以在 3D 环境中移动并正确显示 3D 模型和精灵(例如,具有固定位置和旋转的精灵)。为了在 OpenGL 相机中设置相机,我应该关注哪些功能以及应该以什么顺序调用它们?
以下是一些导致我想要一台实际相机的背景信息。
为了绘制一个简单的精灵,我从 SDL 表面创建了一个 GL 纹理,并将其绘制到屏幕上的坐标 (SpriteX-CameraX) 和 (SpriteY-CameraY) 上。这很好用,但是当转向实际的 3D 模型时,它工作得不太正确。相机位置是一个自定义矢量类(即不使用标准库),具有 X、Y、Z 整数分量。
我有一个由三角形组成的 3D 立方体,我可以绘制它并旋转它,我实际上可以通过在绘制模型时传入相机位置并使用该组件来移动立方体(尽管以一种笨拙的方式)的位置向量来计算模型的位置。但是,当我旋转模型时,这种方法的问题变得明显。模型的起源不是模型本身,而是屏幕的起源。一些谷歌搜索告诉我我需要保存模型的位置,围绕原点旋转它,然后将模型恢复到其原始位置。
我没有传入我的相机的位置并通过计算新顶点来计算应该在视口中绘制的东西,我想我会创建一个 OpenGL“相机”来为我做这件事,所以我需要做的就是传入我的相机对象的坐标到 OpenGL 相机,它会自动转换视图。如果您使用 GLUT,此任务似乎非常简单,但我不确定如何仅使用 OpenGL 设置相机。
编辑 #1(在一些评论之后): 根据一些建议,这里是在我的程序中调用的更新方法。它已更新以创建透视和视图矩阵。所有绘图都发生在调用此之前。并且在 OpenGL 执行时会执行一组类似的方法(减去缓冲区交换)。x,y,z 坐标是 Camera 及其位置向量的一个实例。如果相机在 (256, 32, 0) 那么 256, 32 和 0 将被传递到 Update 方法。目前,z 设置为 0,因为目前无法更改该值。正在绘制的 3D 模型是一组顶点/三角形 + 位于 X=320、Y=240、Z=-128 位置的法线。当程序运行时,这是在FILL模式下绘制的,然后在移动后在FILL中绘制LINE模式下,另一个在,当我将相机向右移动一点时。它喜欢可能 Normals …
我有一个方法,有一些指针作为参数.可以使用来自被调用者的命名指针调用此方法,也可以动态创建指向新对象的指针,并在调用方法时将其作为参数直接传递.
myClass *myPtr = new myClass(...);
myMethod(myPtr);
Run Code Online (Sandbox Code Playgroud)
VERUS
myMethod(new myClass(...));
Run Code Online (Sandbox Code Playgroud)
问题是,如果这两个都是有效选项,那么如何正确释放传入的指针?如果在程序中再次访问myPtr,则删除myMethod中的myPtr将导致崩溃.如果我不删除myPtr,第二个选项将导致内存泄漏(如果使用它).使用这两个选项都有好处,所以两者都不应该破坏程序.
除了使用STL之外,这个问题有哪些解决方案?我是否必须实施自己的垃圾收集器?