小编Uko*_*Uko的帖子

EUnit未能测试私人功能

我正在为Erlang代码编写EUnit测试.

我有一个源模块:

-module(prob_list).
-export([intersection/2,union/2]).

probability([], _Item) -> false;
probability([{First,Probability}|Rest], Item) ->
    if
        First == Item -> Probability;
        true          -> probability(Rest, Item)
    end.
...
...
...
Run Code Online (Sandbox Code Playgroud)

和单元测试模块:

-module(prob_list_tests).
-include_lib("eunit/include/eunit.hrl").

-define(TEST_LIST,[{3,0.2},{4,0.6},{5,1.0},{6,0.5}]).
-define(TEST_LIST1,[{2,0.9},{3,0.6},{6,0.1},{8,0.5}]).
-define(TEST_UNO_LIST,[{2,0.5}]).

probability_test() -> ?assertNot(prob_list:probability([],3)),
                      ?assertEqual(0.5,prob_list:probability(?TEST_UNO_LIST,2)),
                      ?assertNot(prob_list:probability(?TEST_UNO_LIST,3)),
                      ?assertEqual(0.2,prob_list:probability(?TEST_LIST,3)),
                      ?assertEqual(1.0,prob_list:probability(?TEST_LIST,5)),
                      ?assertNot(prob_list:probability(?TEST_LIST,7)).
...
...
...
Run Code Online (Sandbox Code Playgroud)

我跑的 eunit:test(prob_list,[verbose])时候说:

 prob_list_tests: probability_test...*failed*
::undef
Run Code Online (Sandbox Code Playgroud)

但是当我probability/2在我的prob_list模块中导出时,一切都很好.

有没有办法测试私人功能?

erlang unit-testing private-functions eunit

6
推荐指数
3
解决办法
1146
查看次数

Cocoa的图形库

某些图形应用程序有什么好的库吗?我想创建节点,添加加权边等...

编辑

我需要一个图表(如下图所示)而不是图表.

在此输入图像描述

macos cocoa graph-theory objective-c

6
推荐指数
2
解决办法
1949
查看次数

Ast函数的Ast表示

我正在为一个小型磁盘开发和抽象语法树元模型,现在我在建模块时遇到了麻烦.它们有点文字,但另一方面它们是方法的行为实体.块是一种lambda函数,所以也许有人可以更好地使用它们.

我会感谢任何建议.

lambda smalltalk abstract-syntax-tree metamodel

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

通知所有参与者合并请求

有没有办法通知所有gitlab项目参与者有关新的合并请求,以便他们可以审查更改并投票?目前只通知一个负责人,这是恕我直言,不是很好的团队导向.

gitlab

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

使用self subclassResponsibility

我是Pharo的新手,我很难掌握一些概念,特别是subclassResponsibilty.

我有以下objecttree:

AbstractDictionary
--TreeBasedDictionary (not abstract)
--AbstractArrayDictionary
----SimpleDictionary (not abstract)
----FastDictionary (not abstract)
Run Code Online (Sandbox Code Playgroud)

所有3都实现了操作at:put:at:(以及更多).我从今天类明白,我可以拉起来at:put:AbstractDictionary具有以下实现:

at: thisKey put: thisValue
"insert new key / value pair"
^self 
    at: thisKey
    put: thisValue
    duplicate: [self error:'duplicate key']
Run Code Online (Sandbox Code Playgroud)

然后,我实现了一个梅托德at:put:duplicate:TreeBasedDictionary and AbstractArrayDictionary(因为执行是后者的子类相同).然后,当我调用at:put:一个对象时,它不会在任何一个实例中找到它,TreeBasedDictionary , SimpleDictionary or FastDictionary 但是在查找树时它会在超类(AbstractDictionary)中找到这个方法.这将调用自我at:put:duplicate:.该方法由前面提到的3个类实现,然后指向进行初始调用的类的实例的self被发送到要执行的消息at:put:duplicate:.

现在,AbstractArrayDictionary,SimpleDictionary and FastDictionary所有人都有一个名为的方法size.继承树底部的两个类都实现了这个方法.AbstractArrayDictionary实现此方法如下

size
"dictionary size"
self subclassResponsibility 
Run Code Online (Sandbox Code Playgroud)

假设我为我实现了这个方法TreeBasedDictionary,我想我应该在我的AbstractDictionary …

smalltalk pharo

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

任何Java字节码生成指南?

我们正在编写从PascalJVM Bytecode的某种编译器.我们已经实现了表达式树生成,因此下一步应该是创建文件.您能否建议至少从某些静态数据生成任何文件的指南/教程?因为我已经用Google搜索了2个小时并阅读了JVM规范,但我真的需要一些最简单的例子来开始开发整个东西..class.class

java compiler-construction pascal jvm bytecode

5
推荐指数
2
解决办法
4334
查看次数

在Mac OS X Lion上使用GUI的Smalltalk(10.7)

我需要一些带有GUI的smalltalk来完成我的作业,而我正在运行Mac OS X Lion(10.7).

我已经看到unix用户通常使用GNU SmalltalkGTK +.

我试图从不同版本的源安装它们,所有这些都会产生一些错误.

然后我使用了MacPorts,但是这个安装打破了gst的GTK +绑定.

最后我尝试使用fing包管理器安装它(因为GNU声明我应该安装好的一切)但10.7操作系统没有smalltalk包(虽然有以前的).

有没有办法在Mac OS Lion下使用smalltalk,或者我应该在虚拟机上运行Ubuntu?

macos smalltalk gnu-smalltalk osx-lion

5
推荐指数
2
解决办法
4817
查看次数

从 Jenkins 向多个 Slack 频道发送消息

根据主要的Jenkins-Slack 文档,您必须为 slack 配置 Jenkins 应用程序,并在那里指定插件可以发布的单个频道。现在就我而言,我需要从 Jenkins 服务器向多个频道和用户发布信息,管理多个身份验证令牌非常麻烦。有没有办法让一个令牌适用于所有渠道和用户?还有其他方法吗?我看到 Jenkins 插件有一个bot复选框,但几乎没有关于如何使其工作的文档。

jenkins slack

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

让 systemd 等待屏幕终止

有一个问题(sh screen - 等待屏幕终止)关于如何在继续之前等待屏幕会话终止。

该解决方案使用循环,但我认为不可能在系统服务脚本中使用循环。

目前我使用的是:

ExecStop=/usr/bin/screen -S starforge -p 0 -X stuff "stop^M"
ExecStop=/bin/sleep 10
Run Code Online (Sandbox Code Playgroud)

通常,我不需要整个 10 秒,但我需要某种方法来知道屏幕是否已经终止

gnu-screen wait systemd

5
推荐指数
0
解决办法
169
查看次数

有没有关于如何从 NodeJS CJS + Babel 迁移到 NodeJS MJS 的策略?

我想慢慢地将我的 NodeJS 项目迁移到模块式项目。虽然有很多关于如何从 mjs 使用 cjs 的知识,反之亦然,但我也有 Babel 在循环中,我对发生的事情感到非常困惑。

\n

目前我有一个 CommonJS 节点项目(在节点 v4 上启动)。由于 Babel,大约 80% 的项目看起来像 MJS(使用导入和导出)。现在我正在慢慢地将小文件更改为原生 MJS,以便转换整个项目。

\n

我注意到 babel 默认会将 MJS 文件转换为 JS 文件。所以1)进口不起作用;2)我不想将 Babel 与 MJS 一起使用,因为我希望最终能够摆脱它。因此,我将**/*.mjs文件添加到文件中的忽略列表中.babelrc,并将文件扩展名固定到需要的代码.js, .cjsbabel/regiter

\n

此后 NodeJS 不断抱怨.mjs文件具有未知的令牌导出。如果我运行单个.mjs文件 \xe2\x80\x94 一切都很好,除非它导入其中包含的 cjs 文件import,并且不是由 babel 转译的,因为我没有从注册 babel\xe2 的根文件运行所有内容\x80\xa6

\n

有没有办法让 babel 转译 cjs (js) 文件并按原样保留 mjs 文件,而 Node 将 mjs 文件解释为本机模块?

\n

javascript commonjs node.js babeljs es6-modules

5
推荐指数
0
解决办法
431
查看次数