mirror of https://github.com/getmango/Mango.git
77 lines
1.7 KiB
Crystal
77 lines
1.7 KiB
Crystal
require "./spec_helper"
|
|
require "../src/rename"
|
|
|
|
include Rename
|
|
|
|
describe Rule do
|
|
it "raises on nested brackets" do
|
|
expect_raises Exception do
|
|
Rule.new "[[]]"
|
|
end
|
|
expect_raises Exception do
|
|
Rule.new "{{}}"
|
|
end
|
|
end
|
|
|
|
it "raises on unclosed brackets" do
|
|
expect_raises Exception do
|
|
Rule.new "["
|
|
end
|
|
expect_raises Exception do
|
|
Rule.new "{"
|
|
end
|
|
expect_raises Exception do
|
|
Rule.new "[{]}"
|
|
end
|
|
end
|
|
|
|
it "raises when closing unopened brackets" do
|
|
expect_raises Exception do
|
|
Rule.new "]"
|
|
end
|
|
expect_raises Exception do
|
|
Rule.new "[}"
|
|
end
|
|
end
|
|
|
|
it "handles `|` in patterns" do
|
|
rule = Rule.new "{a|b|c}"
|
|
rule.render({"b" => "b"}).should eq "b"
|
|
rule.render({"a" => "a", "b" => "b"}).should eq "a"
|
|
end
|
|
|
|
it "raises on escaped characters" do
|
|
expect_raises Exception do
|
|
Rule.new "hello/world"
|
|
end
|
|
end
|
|
|
|
it "handles spaces in patterns" do
|
|
rule = Rule.new "{ a }"
|
|
rule.render({"a" => "a"}).should eq "a"
|
|
end
|
|
|
|
it "strips leading and tailing spaces" do
|
|
rule = Rule.new " hello "
|
|
rule.render({"a" => "a"}).should eq "hello"
|
|
end
|
|
|
|
it "renders a few examples correctly" do
|
|
rule = Rule.new "[Ch. {chapter }] {title | id} testing"
|
|
rule.render({"id" => "ID"}).should eq "ID testing"
|
|
rule.render({"chapter" => "CH", "id" => "ID"})
|
|
.should eq "Ch. CH ID testing"
|
|
rule.render({} of String => String).should eq "testing"
|
|
end
|
|
|
|
it "escapes illegal characters" do
|
|
rule = Rule.new "{a}"
|
|
rule.render({"a" => "/?<>:*|\"^"}).should eq "_________"
|
|
end
|
|
|
|
it "strips trailing spaces and dots" do
|
|
rule = Rule.new "hello. world. .."
|
|
rule.render({} of String => String).should eq "hello. world"
|
|
end
|
|
end
|