https://github.com/leesheppard/toy_robot
The toy robot test.
https://github.com/leesheppard/toy_robot
ci github-actions ruby
Last synced: 2 months ago
JSON representation
The toy robot test.
- Host: GitHub
- URL: https://github.com/leesheppard/toy_robot
- Owner: leesheppard
- Created: 2024-06-07T03:30:01.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-09T12:04:13.000Z (about 2 years ago)
- Last Synced: 2025-03-29T13:51:20.263Z (over 1 year ago)
- Topics: ci, github-actions, ruby
- Language: Ruby
- Homepage:
- Size: 29.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://forthebadge.com)
# ToyRobot
A simulation of a toy robot moving on a square tabletop, of dimensions 5 units x 5 units.
* There are no other obstructions on the table surface.
* The robot is free to roam around the surface of the table, but must be prevented from falling to destruction. Any movement that would result in the robot falling from the table must be prevented, however further valid movement commands must still
be allowed.
[](https://github.com/leesheppard/toy_robot/actions/workflows/tests.yml)
Full specifications [here](#specification).
This project was written using ruby `3.3.0`. Tests are run against version `3.0` and `3.3`.
## Installation
Install the gem and add to the application's Gemfile by executing:
```bash
git clone https://github.com/leesheppard/toy_robot.git
cd toy_robot
bundle install
```
### Usage
```bash
bundle exec exe/toy_robot commands.txt
```
Simplified into a shorter command:
```bash
rake run
```
## Testing
Code quality and verification is tested using [RSpec](http://rspec.info/).
Run spec tests:
```bash
bundle exec rspec
```
## Specification
* The application is a simulation of a toy robot moving on a square tabletop, of dimensions 5 units x 5 units.
* There are no other obstructions on the table surface.
* The robot is free to roam around the surface of the table.
* Any movement that would result in the robot falling from the table is prevented, however further valid movement commands are still allowed.
The application reads a file using a name passed in the command line, the following commands are valid:
`PLACE X,Y,F`
`MOVE`
`LEFT`
`RIGHT`
`REPORT`
Here are some rules for these commands:
* `PLACE` will put the toy robot on the table in position `X,Y` and facing `NORTH`, `SOUTH`, `EAST` or `WEST`.
* The origin (`0,0`) is the `SOUTH WEST` most corner.
* All commands are ignored until a valid `PLACE` is made.
* `MOVE` will move the toy robot one unit forward in the direction it is currently facing.
* `LEFT` and `RIGHT` rotates the robot 90 degrees in the specified direction without changing the position of the robot.
* `REPORT` announces the `X,Y` and `F` of the robot.
The file is assumed to have `ASCII encoding`. It is assumed that the `PLACE` command has only one space, that is `PLACE 1, 2, NORTH` is an invalid command. All commands must be in upcase, all lower and mixed case commands will be ignored.