小编jdo*_*lan的帖子

Angular.js + Karma + Jasmine:未知的服务提供商

我正在为以下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)

javascript angularjs karma-jasmine

6
推荐指数
1
解决办法
2990
查看次数

变体宏:粘贴标记的扩展

我想知道是否有可能"嵌套"可变宏调用.我只关心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)

上面的嵌套可变参数宏调用无法编译,因为内部调用永远不会扩展.是否有可能解决这个问题,或者我已经将预处理器滥用到了极限?:)

c macros gcc clang variadic-macros

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

在 OS X 上加载表面时,SDL2 预乘 alpha 通道?

我正在通过 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 颜色(编码的法线向量)。

32 位 RGBA 法线贴图,带有用于视差贴图的 alpha 编码高度图

下面是一个最小的测试用例,说明了所附 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)

c sdl image sdl-2

3
推荐指数
1
解决办法
492
查看次数

标签 统计

c ×2

angularjs ×1

clang ×1

gcc ×1

image ×1

javascript ×1

karma-jasmine ×1

macros ×1

sdl ×1

sdl-2 ×1

variadic-macros ×1