Once more unto the breach, dear friends! We're about to get the result of our choice with the third menu item unlocked. So we push a number onto the input queue, and run the scene again
stage:iq_insert(3)
rc = narrator:play(stage)
assert_true(rc)
And Bang! I haven't defined narrative "thinking"
<narrative Name="thinking">
<snippet> You try the door. It isn't locked. </snippet>
<snippet> You have left the room </snippet>
</narrative>
No funcs needed, and we just fall off the end, since that will indicate that
the scene is (finally!) over
That passes. Just a few more tests
--
-- make sure we're on the right branch
--
assert_equal( -- new narrative
"thinking", narrator.narrative.name
)
assert_equal(0, narrator.index) -- index rewound
That's confirmed us as at the top of the thinking thread. One more play should
end it.
rc = narrator:play(stage)
assert_false(rc)
Returns false because there's nothing left to do - and it passes! Whoo-hoo!
assert_equal(2, stage:num_oq()) -- 2 in o/p queue
assert_equal("text", stage:oq(1).type)
assert_equal(
"You try the door. It isn't locked.",
stage:oq(1).value
)
assert_equal("text", stage:oq(2).type)
assert_equal( -- second snippet
"You have left the room", stage:oq(2).value
)
And that passes too! We're done :D
No comments:
Post a Comment