mirror of
https://github.com/SleepingInsomniac/lx_chess_cr
synced 2024-12-27 09:59:01 +01:00
74 lines
1.9 KiB
Crystal
74 lines
1.9 KiB
Crystal
require "../spec_helper"
|
|
require "../../src/lx_chess/notation"
|
|
|
|
include LxChess
|
|
|
|
describe Notation do
|
|
describe "#new" do
|
|
it "parses castling kingside" do
|
|
notation = Notation.new("O-O")
|
|
notation.castles_k?.should eq(true)
|
|
end
|
|
|
|
it "parses pawn moves" do
|
|
notation = Notation.new("e4")
|
|
notation.square.should eq("e4")
|
|
end
|
|
|
|
it "parses pawn moves that specify pawn" do
|
|
notation = Notation.new("Pe4")
|
|
notation.square.should eq("e4")
|
|
notation.piece_abbr.should eq('P')
|
|
end
|
|
|
|
it "parses pawn moves that specify captures" do
|
|
notation = Notation.new("Pxe4")
|
|
notation.square.should eq("e4")
|
|
notation.piece_abbr.should eq('P')
|
|
notation.takes.should be_true
|
|
end
|
|
|
|
it "parses weird moves from larger boards" do
|
|
notation = Notation.new("Pwxr32")
|
|
notation.square.should eq("r32")
|
|
notation.piece_abbr.should eq('P')
|
|
notation.origin.should eq("w")
|
|
notation.takes.should be_true
|
|
end
|
|
|
|
it "parses file disambiguation" do
|
|
notation = Notation.new("exd5")
|
|
notation.origin.should eq("e")
|
|
notation.takes.should be_true
|
|
notation.square.should eq("d5")
|
|
end
|
|
|
|
it "parses rank disambiguation" do
|
|
notation = Notation.new("4xd5")
|
|
notation.origin.should eq("4")
|
|
notation.takes.should be_true
|
|
notation.square.should eq("d5")
|
|
end
|
|
|
|
it "parses bxe5 as a pawn move" do
|
|
notation = Notation.new("bxe5")
|
|
notation.origin.should eq("b")
|
|
notation.takes.should be_true
|
|
notation.square.should eq("e5")
|
|
end
|
|
|
|
it "parses Bxe5 as a bishop move" do
|
|
notation = Notation.new("Bxe5")
|
|
notation.piece_abbr.should eq('B')
|
|
notation.takes.should be_true
|
|
notation.square.should eq("e5")
|
|
end
|
|
|
|
it "parses promotions" do
|
|
notation = Notation.new("dxe8=Q")
|
|
notation.takes.should be_true
|
|
notation.square.should eq("e8")
|
|
notation.promotion.should eq('Q')
|
|
end
|
|
end
|
|
end
|