require 'spec_helper'

describe "Indenting" do
  specify "'do' indenting" do
    assert_correct_indenting <<-EOF
      do
        something
      end
    EOF

    assert_correct_indenting <<-EOF
      def foo
        a_hash = {:do => 'bar'}
      end
    EOF

    assert_correct_indenting <<-EOF
      def foo(job)
        job.do!
      end
    EOF
  end

  specify "blocks with multiline parameters" do
    assert_correct_indenting <<-EOF
      def foo
        opts.on('--coordinator host=HOST[,port=PORT]',
                'Specify the HOST and the PORT of the coordinator') do |str|
          h = sub_opts_to_hash(str)
          puts h
        end
      end
    EOF
  end

  specify "case-insensitive matching" do
    vim.set 'ignorecase'
    assert_correct_indenting <<-EOF
      module X
        Class.new do
        end
      end
    EOF
    vim.set 'ignorecase&'
  end

  specify "blocks with tuple arguments" do
    assert_correct_indenting <<-EOF
      proc do |(a, b)|
        puts a
        puts b
      end
    EOF

    assert_correct_indenting <<-EOF
      proc do |foo, (a, b), bar|
        puts a
        puts b
      end
    EOF

    assert_correct_indenting <<-EOF
      proc do |(a, (b, c)), d|
        puts a, b
        puts c, d
      end
    EOF
  end
end
