我正在为以下Angular.js服务编写测试:
var module = angular.module('wp', [ 'aws', 'lodash', 'jquery', 'moment', 'wp.model' ]);
/**
* Wordpress service.
*/
module.service('wpService', function(_, $http, $q, $aws, Post) {
var self = this;
/**
* HTTP request.
*/
this.http = function(config) {
var $config = _.clone(config);
if ($config.user && $config.password) {
$config.headers = $config.headers || {};
$config.headers.Authorization = 'Basic ' + btoa($config.user + ':' + $config.password);
}
return $http($config);
};
// ..
}
Run Code Online (Sandbox Code Playgroud)
测试用例如下:
/**
* Unit tests for wpService.
*/
describe('apService', function() {
var …Run Code Online (Sandbox Code Playgroud) 我想知道是否有可能"嵌套"可变宏调用.我只关心GCC和Clang.我的宏定义如下:
/**
* @brief Invoke an instance method.
*/
#define $(obj, method, ...) \
({ \
typeof(obj) _obj = obj; \
_obj->interface->method(_obj, ## __VA_ARGS__); \
})
Run Code Online (Sandbox Code Playgroud)
我使用它在我的OO框架中方便地调用"实例方法"(https://github.com/jdolan/objectively):
$(array, addObject, obj);
Run Code Online (Sandbox Code Playgroud)
工作老板.不幸的是,我还没有找到一种允许嵌套这些调用的方法,这在某些情况下非常有用; 例如:
/**
* @see MutableSetInterface::addObjectsFromArray(MutableSet *, const Array *)
*/
static void addObjectsFromArray(MutableSet *self, const Array *array) {
if (array) {
for (size_t i = 0; i < array->count; i++) {
$(self, addObject, $(array, objectAtIndex, i));
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的嵌套可变参数宏调用无法编译,因为内部调用永远不会扩展.是否有可能解决这个问题,或者我已经将预处理器滥用到了极限?:)
我正在通过 OS X Sierra 上的 SDL2 2.0.7 和 SDL2_image 2.0.2 加载 32 位 RGBA 法线贴图纹理,并在 Alpha 通道中编码高度图。
这些纹理中的每个像素都有一个非零 RGB 值,编码方向法向量。方向向量 (0, 0, 0)(即black)无效。
然而,当我通过 SDL2_image 加载这样的纹理时,alpha 值为 0 的纹理区域也会产生 RGB 值 0。我认为 SDL 可能会预乘这些像素的 alpha 值?
附件是这些法线贴图纹理之一。您可以通过在 GIMP 等中打开纹理并在透明区域之一使用颜色选择器来确认它是否有效。事实上,您会看到透明区域仍然具有偏蓝色的 RGB 颜色(编码的法线向量)。
下面是一个最小的测试用例,说明了所附 PNG 文件的问题:
#include <SDL_image.h>
#include <assert.h>
int main(int argc, char **argv) {
SDL_Surface *s = IMG_Load("green3_2_nm.png");
assert(s);
for (int i = 0; i < s->w * s->h; i++) {
const Uint32 *in = (Uint32 …Run Code Online (Sandbox Code Playgroud)