class Ship
attr_reader :size, :x, :y, :axis
def initialize size
@size = size
end
def length
@size = size
end
def place x, y, axis
@x = x
@y = y
@axis = axis
end
def covers? a, b
x = @x
y = @y
if x == a and y == b
return true
else
(@size - 1).times do
if @axis
x += 1
else
y += 1
end
return true if x == a and y == b
end
false
end
end
端
def test_08_ship_can_be_placed_across
ship = Ship.new(4)
assert ship.place(2, 1, true)
assert ship.covers?(2, 1)
assert ship.covers?(3, 1)
assert ship.covers?(4, 1)
assert ship.covers?(5, 1)
refute ship.covers?(1, 1)
refute ship.covers?(6, 1)
refute ship.covers?(4, 2)
end
def test_09_ship_can_be_placed_down
ship = Ship.new(4)
assert ship.place(2, 2, false)
refute ship.covers?(2, 1)
assert ship.covers?(2, 2)
assert ship.covers?(2, 3)
assert ship.covers?(2, 4)
assert ship.covers?(2, 5)
refute ship.covers?(2, 6)
refute ship.covers?(3, 2)
end
如果我在ship.covers上绑定.pry?有了这些参数,我得到了正确的答案。由于某种原因,测试仍然不会通过......
1) Failure:
BattleshipTest#test_09_ship_can_be_placed_down [battleship_minitest.rb:73]:
Failed assertion, no message given.
[1] pry(main)> ship1.covers?(2, 1)
=> true
[2] pry(main)> ship1.covers?(3, 1)
=> true
[3] pry(main)> ship1.covers?(4, 1)
=> true
[4] pry(main)> ship1.covers?(5, 1)
=> true
[5] pry(main)> ship1.covers?(1, 1)
=> false
[6] pry(main)> ship1.covers?(6, 1)
=> false
[7] pry(main)> ship1.covers?(4, 2)
=> false
[1] pry(main)> ship2.covers?(2, 1)
=> false
[2] pry(main)> ship2.covers?(2, 2)
=> true
[3] pry(main)> ship2.covers?(2, 3)
=> true
[4] pry(main)> ship2.covers?(2, 4)
=> true
[5] pry(main)> ship2.covers?(2, 5)
=> true
[6] pry(main)> ship2.covers?(2, 6)
=> false
[7] pry(main)> ship2.covers?(3, 2)
=> false
答案 0 :(得分:0)
您正在断言测试准备方法(我认为):
assert ship.place(2, 1, false)
ship.place
返回轴的值,因为它在方法的最后分配。它适用于第一种情况,因为axis设置为true。