require_relative '../spec_helper'

describe "The -n command line option" do
  before :each do
    @names  = fixture __FILE__, "names.txt"
  end

  it "runs the code in loop conditional on Kernel.gets()" do
    ruby_exe("puts $_", options: "-n",
                        args: " < #{@names}").should ==
      "alice\nbob\njames\n"
  end

  it "only evaluates BEGIN blocks once" do
    ruby_exe("BEGIN { puts \"hi\" }; puts $_", options: "-n",
                                               args: " < #{@names}").should ==
      "hi\nalice\nbob\njames\n"
  end

  it "only evaluates END blocks once" do
    ruby_exe("puts $_; END {puts \"bye\"}", options: "-n",
                                            args: " < #{@names}").should ==
      "alice\nbob\njames\nbye\n"
  end

  it "allows summing over a whole file" do
    script = <<-script
    BEGIN { $total = 0 }
    $total += 1
    END { puts $total }
    script
    ruby_exe(script, options: "-n",
                     args: " < #{@names}").should ==
      "3\n"
  end
end
