New rule: percent arrays

This commit is contained in:
Vitalii Elenhaupt 2017-11-17 23:41:30 +02:00
parent 52411dadc5
commit 791bfdabb8
No known key found for this signature in database
GPG key ID: 7558EF3A4056C706
3 changed files with 140 additions and 0 deletions

View file

@ -0,0 +1,69 @@
require "../../spec_helper"
module Ameba::Rule
describe PercentArrays do
subject = PercentArrays.new
it "passes if percent arrays are written correctly" do
s = Source.new %q(
%i(one two three)
%w(one two three)
%i(1 2 3)
%w(1 2 3)
%i()
%w()
)
subject.catch(s).should be_valid
end
it "fails if string percent array has commas" do
s = Source.new %( %w(one, two) )
subject.catch(s).should_not be_valid
end
it "fails if string percent array has quotes" do
s = Source.new %( %w("one" "two") )
subject.catch(s).should_not be_valid
end
it "fails if symbols percent array has commas" do
s = Source.new %( %i(one, two) )
subject.catch(s).should_not be_valid
end
it "fails if symbols percent array has a colon" do
s = Source.new %( %i(:one :two) )
subject.catch(s).should_not be_valid
end
it "reports rule, location and message for %i" do
s = Source.new %(
%i(:one)
), "source.cr"
subject.catch(s).should_not be_valid
error = s.errors.first
error.rule.should_not be_nil
error.location.to_s.should eq "source.cr:2:9"
error.message.should eq(
"Symbols `,:` may be unwanted in %i array literals"
)
end
it "reports rule, location and message for %w" do
s = Source.new %(
%w("one")
), "source.cr"
subject.catch(s).should_not be_valid
error = s.errors.first
error.rule.should_not be_nil
error.location.to_s.should eq "source.cr:2:9"
error.message.should eq(
"Symbols `,\"` may be unwanted in %w array literals"
)
end
end
end