TEST(DonutHomuraTest, BackToEntrypointTest) { INIT_DONUT; { Handler<Object> result; ASSERT_NO_THROW( result = machine->start( donut->parse("var first = Homura.now(); var x = interrupt null; if(x){ \"back\"; Homura.seek(first-1); }else{ \"through\"; };", "<MEM>", 0) ) ); ASSERT_TRUE(result->isNull()); ASSERT_TRUE(machine->isInterrupted()); ASSERT_NO_THROW( result = machine->resume(heap->createBool(true)) ); ASSERT_TRUE(result->isNull()); ASSERT_TRUE(machine->isInterrupted()); ASSERT_NO_THROW( result = machine->resume(heap->createBool(false)) ); ASSERT_TRUE(result->isObject()); ASSERT_EQ("through", result->toString(heap)); ASSERT_FALSE(machine->isInterrupted()); } }