Простое назначение не работает в Dapple

Я использую Dapple ( http://dapple.readthedocs.io ), в частности, тестовую структуру. У меня есть следующий контракт

contract App {
  bytes1 public myVar;
  function App() {
    myVar = 0x01;
  }
}

и следующий тест

function test() {
  bytes1 variable1 = App(proxy_tester).myVar();
  bytes1 a = 0x01;
  assertEq1(variable1, a);
}

Я бы ожидал, что этот тест пройдет, вместо этого он терпит неудачу с этим

| Error: Wrong `bytes1' value
|   Expected: 0x01
|     Actual: 0xc6

Я предполагаю, что 0xc6 - это просто случайное значение в памяти или неправильное кодирование 0x01.

Что я делаю неправильно?

Примечание. dapple не запускается в цепочке, а непосредственно на виртуальной машине. Я пробовал этот код в трюфеле, и он работает как ожидалось.

6 голосов | спросил gurghet 7 +03002016-10-07T12:38:01+03:00312016bEurope/MoscowFri, 07 Oct 2016 12:38:01 +0300 2016, 12:38:01

1 ответ


3

Прежде всего, я предполагаю, что у вас есть локальный App и setUp, которая выглядит так:

App app;
function setUp() {
    app = new App();
    proxy_actor._target(app);
}

Это почти работает, но он говорит о том, что прокси-актер не может возвращать значения из-за некоторого Показатели EVM . Это только для насмешек отправителя. В идеале это также проксирует возвращаемое значение, но есть некоторые ограничения EVM, которые этого не позволяют.

В этом случае возвращаемое значение вообще не зависит от отправителя, поэтому вы можете просто проверить его непосредственно (отправитель будет тестовым контрактом вместо прокси-актера):

function test() {
  bytes1 variable1 = app.myVar();
  bytes1 a = 0x01;
  assertEq1(variable1, a);
}
ответил Nikolai 2 32016vEurope/Moscow11bEurope/MoscowWed, 02 Nov 2016 20:10:38 +0300 2016, 20:10:38

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132