spec/zscan_spec.rb in zscan-1.0 vs spec/zscan_spec.rb in zscan-1.0.1

- old
+ new

@@ -62,6 +62,35 @@ assert_equal ' ', z.scan(/\s*(\#.*$\s*)*/) z.pos = 1 assert_equal '', z.scan(/(?<=a)/) assert_equal nil, z.scan(/^/) end + + it "stack doesn't underflow" do + @z.push + @z.pop + @z.pop + @z.pos = 3 + @z.push + @z.pos = 4 + @z.pop + assert_equal 3, @z.pos + end + + it "#try restores pos" do + z = ZScan.new "hello" + return1 = z.try do + z.scan 'h' + z.scan 'e' + end + assert_equal 'e', return1 + assert_equal 2, z.pos + + return2 = z.try do + z.scan 'l' + z.scan 'l' + z.scan 'p' # fails + end + assert_equal nil, return2 + assert_equal 2, z.pos + end end