我有一个关于Solidity合约的函数.例如.
function do(x,y) {
if ( msg.sender != owner )
throw;
// ...
}
Run Code Online (Sandbox Code Playgroud)
在Truffle环境中,我有一个测试js,如:
//.... part of a promise chain
.then(
function (_bool0) {
assert.isTrue(_bool0,"whoops - should be true");
return contract.do( "okdoke" , {from: accounts[1]} );
}).then(
function (tx_id) {
//..
done();
}
// ...
Run Code Online (Sandbox Code Playgroud)
return contract.do()会导致导致throw的条件.在此测试的松露测试输出中产生以下内容:
Error: VM Exception while executing transaction: invalid JUMP
Run Code Online (Sandbox Code Playgroud)
在像这样的测试中处理合同函数抛出的习惯用法是什么?抛出是正确的行为.
对于给定的提交,我想获取父提交树,以便我可以继续比较更改.我发现父RevCommit对象上的getTree()始终返回null.
ObjectId lastCommitId = repository.resolve(Constants.HEAD);
RevWalk revWalk = new RevWalk(repository);
RevCommit commit = revWalk.parseCommit(lastCommitId);
List<RevCommit> parents = new ArrayList<>();
for(RevCommit parent : commit.getParents()) {
parents.add(parent);
}
if ( parents.get(0).getTree() == null ) {
System.out.println("first parent tree was null");
}
Run Code Online (Sandbox Code Playgroud)
我这是错误的方式吗?父对象是浅层副本吗?我必须做一些事情来填充树属性?
我确实让它按照以下方式工作,但仍然想知道这是否是正确的方法.
ObjectId lastCommitId = repository.resolve(Constants.HEAD);
RevWalk revWalk = new RevWalk(repository);
RevCommit commit = revWalk.parseCommit(lastCommitId);
List<RevCommit> parents = new ArrayList<>();
for(RevCommit parent : commit.getParents()) {
RevCommit deepCopy = revWalk.parseCommit(parent.getId());
parents.add(deepCopy);
}
if ( parents.get(0).getTree() != null ) {
System.out.println(parents.get(0).getTree().toString());
} else …Run Code Online (Sandbox Code Playgroud) 我需要在我的URL中表示层次结构,如下所示:
http://www.me.org/ -----------------root1/ -----------------------level1/ ------------------------------level2/etc
我想定义PREFIX并在SPARQL查询中使用它们,如下所示:
PREFIX root1: <http://www.me.org/root1/>
select * where {
?s ?p root1:level1/level2/etc .
} limit 100
这将在ARQ中失败,并出现以下错误:
Encountered " "/" "/ "" at line 10, column 43.
Was expecting one of:
"values" ...
"graph" ...
...
我是否能够在我的URL中表示层次结构,或者SPARQL和PREFIX是否仅限于一个级别?