summaryrefslogtreecommitdiffhomepage
path: root/test/text_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/text_spec.rb')
-rw-r--r--test/text_spec.rb104
1 files changed, 76 insertions, 28 deletions
diff --git a/test/text_spec.rb b/test/text_spec.rb
index 63acec7..5454510 100644
--- a/test/text_spec.rb
+++ b/test/text_spec.rb
@@ -4,69 +4,117 @@ RSpec.describe Ruby2D::Text do
describe "#new" do
it "raises exception if font file doesn't exist" do
- expect { Text.new("hello", font: "bad_font.ttf") }.to raise_error(Ruby2D::Error)
+ expect { Text.new('hello', font: 'bad_font.ttf') }.to raise_error(Ruby2D::Error)
end
it "uses the system default font if one is not provided" do
- t = Text.new("hello")
- expect(t.font).to eq(Font.default)
+ txt = Text.new('hello')
+ expect(txt.font).to eq(Font.default)
+ end
+
+ it "creates text with a white filter by default" do
+ txt = Text.new('hello')
+ expect(txt.color).to be_a(Ruby2D::Color)
+ expect(txt.color.r).to eq(1)
+ expect(txt.color.g).to eq(1)
+ expect(txt.color.b).to eq(1)
+ expect(txt.color.a).to eq(1)
+ end
+
+ it "creates an image with options" do
+ txt = Text.new(
+ 'hello', font: 'test/media/bitstream_vera/vera.ttf',
+ x: 10, y: 20, z: 30,
+ size: 40, rotate: 50,
+ color: 'gray', opacity: 0.5
+ )
+
+ expect(txt.text).to eq('hello')
+ expect(txt.x).to eq(10)
+ expect(txt.y).to eq(20)
+ expect(txt.z).to eq(30)
+ expect(txt.size).to eq(40)
+ expect(txt.rotate).to eq(50)
+ expect(txt.color.r).to eq(2/3.0)
+ expect(txt.opacity).to eq(0.5)
+ end
+ end
+
+ describe "attributes" do
+ it "can be set and read" do
+ txt = Text.new('hello')
+ txt.x = 10
+ txt.y = 20
+ txt.z = 30
+ txt.size = 40
+ txt.rotate = 50
+ txt.color = 'gray'
+ txt.opacity = 0.5
+
+ expect(txt.x).to eq(10)
+ expect(txt.y).to eq(20)
+ expect(txt.z).to eq(30)
+ expect(txt.size).to eq(40)
+ expect(txt.rotate).to eq(50)
+ expect(txt.color.r).to eq(2/3.0)
+ expect(txt.opacity).to eq(0.5)
end
end
describe "#text=" do
it "maps Time to string" do
- t = Text.new("hello", font: "test/media/bitstream_vera/vera.ttf")
- t.text = Time.new(1, 1, 1, 1, 1, 1, 1)
- expect(t.text).to eq("0001-01-01 01:01:01 +0000")
+ txt = Text.new('hello', font: 'test/media/bitstream_vera/vera.ttf')
+ txt.text = Time.new(1, 1, 1, 1, 1, 1, 1)
+ expect(txt.text).to eq('0001-01-01 01:01:01 +0000')
end
it "maps Number to string" do
- t = Text.new("hello", font: "test/media/bitstream_vera/vera.ttf")
- t.text = 0
- expect(t.text).to eq("0")
+ txt = Text.new('hello', font: 'test/media/bitstream_vera/vera.ttf')
+ txt.text = 0
+ expect(txt.text).to eq('0')
end
end
describe "#width" do
it "is known after creation" do
- t = Text.new("Hello Ruby!", font: "test/media/bitstream_vera/vera.ttf")
- expect(t.width).to be_between(110, 120)
+ txt = Text.new('Hello Ruby!', font: 'test/media/bitstream_vera/vera.ttf')
+ expect(txt.width).to be_between(110, 120)
end
it "is known after updating" do
- t = Text.new("hello", font: "test/media/bitstream_vera/vera.ttf")
- t.text = "Hello!"
- expect(t.width).to eq(59)
+ txt = Text.new('hello', font: 'test/media/bitstream_vera/vera.ttf')
+ txt.text = 'Hello!'
+ expect(txt.width).to eq(59)
end
end
describe "#height" do
it "is known after creation" do
- t = Text.new("hello", font: "test/media/bitstream_vera/vera.ttf")
- expect(t.height).to eq(24)
+ txt = Text.new('hello', font: 'test/media/bitstream_vera/vera.ttf')
+ expect(txt.height).to eq(24)
end
it "is known after updating" do
- t = Text.new("hello", font: "test/media/bitstream_vera/vera.ttf")
- t.text = "Good morning world!"
- expect(t.height).to eq(24)
+ txt = Text.new('hello', font: 'test/media/bitstream_vera/vera.ttf')
+ txt.text = 'Good morning world!'
+ expect(txt.height).to eq(24)
end
end
describe "#contains?" do
it "returns true if point is inside the text" do
- t = Text.new("hello", font: "test/media/bitstream_vera/vera.ttf")
- t.text = "Hello world!"
- expect(t.contains?(t.width / 2, t.height / 2)).to be true
+ txt = Text.new('hello', font: 'test/media/bitstream_vera/vera.ttf')
+ txt.text = 'Hello world!'
+ expect(txt.contains?(txt.width / 2, txt.height / 2)).to be true
end
it "returns false if point is outside the text" do
- t = Text.new("hello", font: "test/media/bitstream_vera/vera.ttf")
- t.text = "Hello world!"
- expect(t.contains?( - t.width / 2, t.height / 2)).to be false
- expect(t.contains?( t.width / 2, - t.height / 2)).to be false
- expect(t.contains?(3 * t.width / 2, t.height / 2)).to be false
- expect(t.contains?( t.width / 2, 3 * t.height / 2)).to be false
+ txt = Text.new('hello', font: 'test/media/bitstream_vera/vera.ttf')
+ txt.text = 'Hello world!'
+ expect(txt.contains?( - txt.width / 2, txt.height / 2)).to be false
+ expect(txt.contains?( txt.width / 2, - txt.height / 2)).to be false
+ expect(txt.contains?(3 * txt.width / 2, txt.height / 2)).to be false
+ expect(txt.contains?( txt.width / 2, 3 * txt.height / 2)).to be false
end
end