小编Int*_*ion的帖子

在测试中处理Solidity合同的模式是什么?

我有一个关于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)

在像这样的测试中处理合同函数抛出的习惯用法是什么?抛出是正确的行为.

ethereum truffle

7
推荐指数
1
解决办法
4408
查看次数

如何使用JGit API从父提交中获取树?

对于给定的提交,我想获取父提交树,以便我可以继续比较更改.我发现父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)

java jgit

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

不能使用SPARQL进行PREFIX层次结构

我需要在我的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是否仅限于一个级别?

rdf sparql jena arq

3
推荐指数
2
解决办法
274
查看次数

标签 统计

arq ×1

ethereum ×1

java ×1

jena ×1

jgit ×1

rdf ×1

sparql ×1

truffle ×1