mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 07:20:05 +08:00
205 lines
5.3 KiB
Ruby
205 lines
5.3 KiB
Ruby
|
require 'spec_helper'
|
||
|
|
||
|
describe "Syntax highlighting" do
|
||
|
before :each do
|
||
|
vim.command 'let g:ruby_operators = 1'
|
||
|
end
|
||
|
after :each do
|
||
|
vim.command 'unlet g:ruby_operators'
|
||
|
end
|
||
|
|
||
|
specify "defined? operator" do
|
||
|
assert_correct_highlighting 'defined? foo', 'defined?', 'rubyDefinedOperator'
|
||
|
end
|
||
|
|
||
|
specify "English boolean operators" do
|
||
|
assert_correct_highlighting <<~'EOF', %w[not and or], 'rubyEnglishBooleanOperator'
|
||
|
not true
|
||
|
true and false
|
||
|
true or false
|
||
|
EOF
|
||
|
end
|
||
|
|
||
|
specify "modulo-assignment operators" do
|
||
|
assert_correct_highlighting <<~'EOF', '%=', 'rubyAssignmentOperator'
|
||
|
foo %= bar
|
||
|
EOF
|
||
|
end
|
||
|
|
||
|
specify "ternary operators" do
|
||
|
assert_correct_highlighting <<~'EOF', %w[? :], 'rubyTernaryOperator'
|
||
|
foo = bar ? 4 : 2
|
||
|
EOF
|
||
|
end
|
||
|
|
||
|
context "bracket operators" do
|
||
|
specify "after a plain identifier" do
|
||
|
assert_correct_highlighting <<~'EOF', '\\[..]', 'rubyOperator'
|
||
|
foo[42]
|
||
|
EOF
|
||
|
end
|
||
|
specify "after a ?!-named bare method call" do
|
||
|
assert_correct_highlighting <<~'EOF', '\\[..]', 'rubyOperator'
|
||
|
foo?[42]
|
||
|
EOF
|
||
|
end
|
||
|
specify "after a closing parenthesis" do
|
||
|
assert_correct_highlighting <<~'EOF', '\\[..]', 'rubyOperator'
|
||
|
(foo)[42]
|
||
|
EOF
|
||
|
end
|
||
|
specify "after a literal hash" do
|
||
|
assert_correct_highlighting <<~'EOF', '\\[...]', 'rubyOperator'
|
||
|
{ foo: bar }[foo]
|
||
|
EOF
|
||
|
end
|
||
|
specify "after a block arg method call" do
|
||
|
assert_correct_highlighting <<~'EOF', '\\[..]', 'rubyOperator'
|
||
|
foo { bar }[42]
|
||
|
EOF
|
||
|
end
|
||
|
end
|
||
|
|
||
|
specify "exponentiation operators" do
|
||
|
[
|
||
|
'foo**bar',
|
||
|
'foo ** bar',
|
||
|
'foo** bar',
|
||
|
].each do |str|
|
||
|
assert_correct_highlighting str, '\*\*', 'rubyArithmeticOperator'
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context "double splat operators" do
|
||
|
specify "in method definitions" do
|
||
|
assert_correct_highlighting <<~'EOF', '\*\*', 'rubyDoubleSplatOperator'
|
||
|
def foo(**bar)
|
||
|
end
|
||
|
EOF
|
||
|
end
|
||
|
specify "in multiline parameter list method definitions" do
|
||
|
assert_correct_highlighting <<~'EOF', '\*\*', 'rubyDoubleSplatOperator'
|
||
|
def foo(bar,
|
||
|
**baz)
|
||
|
end
|
||
|
EOF
|
||
|
end
|
||
|
specify "as an anonymous parameter in method definitions" do
|
||
|
assert_correct_highlighting <<~'EOF', '\*\*', 'rubyDoubleSplatOperator'
|
||
|
def foo(**)
|
||
|
end
|
||
|
EOF
|
||
|
end
|
||
|
specify "in unparenthesised method definitions" do
|
||
|
assert_correct_highlighting <<~'EOF', '\*\*', 'rubyDoubleSplatOperator'
|
||
|
def foo **bar
|
||
|
end
|
||
|
EOF
|
||
|
end
|
||
|
specify "in unparenthesised method calls" do
|
||
|
assert_correct_highlighting <<~'EOF', '\*\*', 'rubyDoubleSplatOperator'
|
||
|
foo **bar
|
||
|
EOF
|
||
|
end
|
||
|
specify "in block parameter lists" do
|
||
|
assert_correct_highlighting <<~'EOF', '\*\*', 'rubyDoubleSplatOperator'
|
||
|
foo { |**bar| 42 }
|
||
|
EOF
|
||
|
end
|
||
|
end
|
||
|
|
||
|
specify "multiplication operators" do
|
||
|
[
|
||
|
'foo*bar',
|
||
|
'foo * bar',
|
||
|
'foo* bar',
|
||
|
].each do |str|
|
||
|
assert_correct_highlighting str, '\*', 'rubyArithmeticOperator'
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context "splat operators" do
|
||
|
specify "in method definitions" do
|
||
|
assert_correct_highlighting <<~'EOF', '\*', 'rubySplatOperator'
|
||
|
def foo(*bar)
|
||
|
end
|
||
|
EOF
|
||
|
end
|
||
|
specify "in multiline parameter list method definitions" do
|
||
|
assert_correct_highlighting <<~'EOF', '\*', 'rubySplatOperator'
|
||
|
def foo(bar,
|
||
|
*baz)
|
||
|
end
|
||
|
EOF
|
||
|
end
|
||
|
specify "as an anonymous parameter in method definitions" do
|
||
|
assert_correct_highlighting <<~'EOF', '\*', 'rubySplatOperator'
|
||
|
def foo(*)
|
||
|
end
|
||
|
EOF
|
||
|
end
|
||
|
specify "in unparenthesised method definitions" do
|
||
|
assert_correct_highlighting <<~'EOF', '\*', 'rubySplatOperator'
|
||
|
def foo *bar
|
||
|
end
|
||
|
EOF
|
||
|
end
|
||
|
specify "in unparenthesised method calls" do
|
||
|
assert_correct_highlighting <<~'EOF', '\*', 'rubySplatOperator'
|
||
|
foo *bar
|
||
|
EOF
|
||
|
end
|
||
|
specify "in block parameter lists" do
|
||
|
assert_correct_highlighting <<~'EOF', '\*', 'rubySplatOperator'
|
||
|
foo { |*bar| 42 }
|
||
|
EOF
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context "proc operators" do
|
||
|
specify "in method definitions" do
|
||
|
assert_correct_highlighting <<~'EOF', '&', 'rubyProcOperator'
|
||
|
def foo(&bar)
|
||
|
end
|
||
|
EOF
|
||
|
end
|
||
|
specify "in multiline parameter list method definitions" do
|
||
|
assert_correct_highlighting <<~'EOF', '&', 'rubyProcOperator'
|
||
|
def foo(bar,
|
||
|
&baz)
|
||
|
end
|
||
|
EOF
|
||
|
end
|
||
|
specify "in unparenthesised method definitions" do
|
||
|
assert_correct_highlighting <<~'EOF', '&', 'rubyProcOperator'
|
||
|
def foo &bar
|
||
|
end
|
||
|
EOF
|
||
|
end
|
||
|
specify "in unparenthesised method calls" do
|
||
|
assert_correct_highlighting <<~'EOF', '&', 'rubyProcOperator'
|
||
|
foo &bar
|
||
|
EOF
|
||
|
end
|
||
|
specify "before literal lambdas" do
|
||
|
assert_correct_highlighting <<~'EOF', '&', 'rubyProcOperator'
|
||
|
foo &->{}
|
||
|
EOF
|
||
|
end
|
||
|
end
|
||
|
|
||
|
specify "eigenclass operators" do
|
||
|
assert_correct_highlighting <<~'EOF', '<<', 'rubyEigenClassOperator'
|
||
|
class << self
|
||
|
end
|
||
|
EOF
|
||
|
end
|
||
|
|
||
|
specify "superclass operators" do
|
||
|
assert_correct_highlighting <<~'EOF', '<', 'rubySuperClassOperator'
|
||
|
class Foo < Bar
|
||
|
end
|
||
|
EOF
|
||
|
end
|
||
|
end
|