Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- https://pastebin.com/tphvJG4e
- turtle = nil
- if not textutils then
- require('lib.ale.mock.textutils')
- end
- require ('lib.ale.ale')
- function Assert(booltest, message)
- message = message or "Test failed."
- if not booltest then
- error(message)
- end
- end
- t = Miner:new(1,1,1, "South")
- t:printPosition()
- Assert(t.position:compare({x = 1, y = 1, z = 1, face = 2}), "Miner didn't start in the correct starting position.")
- t:save_position("start")
- print(t.saved_positions.start:toString())
- Assert(t.position:compare(t.saved_positions.start), "Saved position doesn't match starting turtle position.")
- t:goToPosition({x = 0, y = 0, z = 0, face = 0})
- Assert(t.position:compare({x = 0, y = 0, z = 0, face = 0}), "Turtle failed to find it's way to 0,0,0")
- print("Located: "..t.position:toString())
- print("Saved: "..t.saved_positions.start:toString())
- t:save_position("end")
- Assert(t.saved_positions['start']:compare({x = 1, y = 1, z = 1, face = 2}), "Turtle lost his saved \"start\" position.")
- Assert(t.saved_positions['end']:compare({x = 0, y = 0, z = 0, face = 0}), "Turtle lost his saved \"end\" position.")
- t:rewindToSavedPosition("start")
- t:printPosition()
- Assert(t.position:compare({x = 1, y = 1, z = 1, face = 2}), "Turtle failed to rewind to start.")
- t:replay(3)
- t:printPosition()
- Assert(t.position:compare({x = 1, y = 0, z = 1, face = 0}), "Replay 3 didn't get where it was going.")
- t:replayToSavedPosition("end")
- t:printPosition()
- Assert(t.position:compare({x = 0, y = 0, z = 0, face = 0}), "Replayed to save position end didn't work.")
- t:forward()
- Assert(t.position:compare(Position:new(0, 0, -1, 0)), "North didn't decrement z properly.")
- t:back()
- Assert(t.position:compare(Position:new(0, 0, 0, 0)), "North back didn't increment z properly.")
- t:turnRight()
- Assert(t.position:compare(Position:new(0, 0, 0, 1)), "Turning right didn't increment face properly.")
- t:turnLeft()
- Assert(t.position:compare(Position:new(0, 0, 0, 0)), "Turning left didn't decrement face properly.")
- t:turnRight()
- t:forward()
- Assert(t.position:compare(Position:new(1, 0, 0, 1)), "East didn't increment x properly.")
- t:back()
- Assert(t.position:compare(Position:new(0, 0, 0, 1)), "East back didn't decrement x properly.")
- t:forward()
- t:turnRight()
- t:forward()
- Assert(t.position:compare(Position:new(1, 0, 1, 2)), "South didn't increment z properly.")
- t:back()
- Assert(t.position:compare(Position:new(1, 0, 0, 2)), "South didn't increment z properly.")
- t:turnRight()
- t:turnRight(false)
- Assert(t.position:compare(Position:new(1, 0, 0, 0)), "Turning right past west didn't reset to 0 properly.")
- t:turnLeft(false)
- t:turnLeft()
- Assert(t.position:compare(Position:new(1, 0, 0, 2)), "Turning left past north didn't reset to 3 properly.")
- t:forward()
- Assert(t.position:compare(Position:new(1, 0, 1, 2)), "South forward didn't increment z.")
- t:up()
- Assert(t.position:compare(Position:new(1, 1, 1, 2)), "Up didn't increment y.")
- t:turnRight()
- t:back()
- Assert(t.position:compare(Position:new(2, 1, 1, 3)), "West back didn't increment x.")
- t:forward()
- Assert(t.position:compare(Position:new(1, 1, 1, 3)), "West didn't decrement x.")
- t:rewind(11)
- Assert(t.position:compare(Position:new(0, 0, 0, 1)), "Failed to rewind 11 positions to where I expected.")
- t:turnAround()
- Assert(t.position:compare(Position:new(0, 0, 0, 3)), "Failed to turnAround.")
- t:forward()
- t:forward()
- t:back()
- t:back()
- t:back()
- t:down()
- Assert(t.position:compare(Position:new(1, -1, 0, 3)), "After dancing, I'm not where I expected to be.")
- Slot = t.inventory:getSlot("minecraft:dirt")
- Slot:select()
- t.whitelist:addBlock('minecraft:iron_ore')
- t.whitelist:addBlock('minecraft:oak_log')
- t.whitelist:addTag('forge:ores')
- Assert(t:isValuable({name = 'minecraft:iron_ore', tags = {}}), "Iron ore isn't marked as valuable.")
- Assert(not t:isValuable({name = 'minecraft:god_mode', tags = {}}), "Untagged ore is whitelisting.")
- Assert(t:isValuable({name = 'minecraft:diamond', tags = {['forge:ores'] = true}}), "Tag forge ores isn't marked as valuable.")
- Assert(not t:isValuable({name = 'minecraft:diamond', tags = {['forge:not_ore'] = true}}), "Untagged ore is whitelisting.")
- t.filler:addBlock('minecraft:dirt')
- t.blacklist:addBlock('minecraft:dirt')
- t:delete_position("start")
- t:save_position("start")
- t:mineBlock()
- t:rewindToSavedPosition("start")
- Assert(t.position:compare(t.saved_positions["start"]), "Didn't rewind properly.")
- T = Miner:new(217, 4, -69, 1)
- print(T.position:toString())
- Target = Position:new(32, 15, 16, "North")
- Target:offsetByPosition(T.position)
- T:goToPosition(Target)
- -- for x = 0, 16, 1 do
- -- print("Mining")
- -- t:mineBlock()
- -- t:printPosition()
- -- end
Add Comment
Please, Sign In to add comment