diff --git a/subjects/corewar/audit/README.md b/subjects/corewar/audit/README.md new file mode 100644 index 000000000..bfc04af60 --- /dev/null +++ b/subjects/corewar/audit/README.md @@ -0,0 +1,85 @@ +#### Functional + +#### Initial Setup + +##### If at any moment or for any reason the evaluated Assembler or Virtual Machine crashes or have any memory leak the evaluation fails. + +##### Before to start the evaluation, download the [Playground](), it will contain a standard Assembler and Virtual Machine. + +###### Is the learner able to guide you installing and running the provided binaries? + +#### Assembler + +##### Run the learner Assembler without any argument. + +###### Does the Assembler prints a little introduction on how to use it? + +##### Run the Assembler with a path to a file that doesn't exist. + +###### Does the Assembler returns a meaningful error and exit? + +##### Use the learner Assembler to compile all the invalid players provided in `players_src/invalid`. + +###### Did the Assembler refused to create those players because invalid? + +###### Did the Assembler printed an error message explaining why the player was invalid? + +###### Did the Assembler exited without creating any `.cor`? + +##### Use the learner Assembler to compile all the valid players provided in `players_src/valid`. + +###### Did the Assembler compiled all the `.s` into `.cor` binaries? + +##### Before to procede you may want to copy or rename the generated `.cor` files otherwise they will be overwritten by the next compilation step. + +##### Use the standard Assembler provided in the playground to compile all the valid players provided in `players_src/valid`. + +##### Using `diff` and `hexdump` or any similar tool compare the two versions of each binary. + +###### Are the two versions of the binaries identical for every player? + +#### Virtual Machine + +##### Run the learner VM without any argument. + +###### Does the VM prints a little introduction on how to use it? + +##### Run the VM with a path to a file that doesn't exist. + +###### Does the VM returns a meaningful error and exit? + +###### Does the VM returns a meaningful error and exit? + +##### Run the VM with four valid players and the flag `-d 10`. + +###### Does the VM introduce each player by writing their name and description before to start the game? + +###### Does the VM exit at cycle 10 and dump the memory printing 32 bytes per row? + +##### Run the VM using four players with the name starting with `strong_*` and the flag `-d 40000`. + +##### Run also the same command on the standard VM. + +###### Are the two memory dumps identical (they can be formatted in a different way, but the bytes in the arena must match perfectly)? + +##### Run such games at least 4 more times mixing and matching the players to create new outputs. + +###### Are the two memory dumps identical for every game played? + +#### Beating ameba + +##### Use the standard Assembler to compile the player of the learner and the given `ameba.s`. + +##### Run those two players on the standard VM twice: once with ameba in the first position and another time with ameba in second position. + +###### Is the player of the learner winning both games? + +#### Bonus + +###### +Do the assembler have a working disassembly mode? + +###### +Do the assembler handles arithmetic operations? + +###### +Do the assembler implements a basic macro system? + +###### +Do the virtual machine have a visualizer?