# frozen_string_literal: true

require 'spec_helper'

describe 'Anonymous function syntax' do
  it 'anonymous function' do
    expect(<<~'EOF').to include_elixir_syntax('elixirAnonymousFunction', 'fn')
      fn(_, state) -> state end
    EOF
  end

  it 'as a default argument' do
    expect(<<~'EOF').to include_elixir_syntax('elixirAnonymousFunction', 'fn')
      def exec(func \\ fn(_, state) -> state end) do
      end
    EOF
  end

  it 'as a default argument in a module' do
    str = <<~'EOF'
      defmodule HelloWorld do
        def exec(func \\ fn(_, state) -> state end) do
        end
      end
    EOF

    expect(str).to include_elixir_syntax('elixirAnonymousFunction', 'fn')

    # Test that the syntax properly closed
    expect(str).to include_elixir_syntax('elixirBlockDefinition', '^end')
  end
end