# Generating test cases

## Randomly generate test cases

You can randomly generate test cases using the `generate` command and a generator script.

```bash
# Specify generator
cpg generate ./random.rb

# Or shorthand
cpg g ./random.rb

# Or specify directory to save the generated test cases
cpg generate --dir ./random ./random.rb

# Or specify full command to execute
cpg generate -- ruby ./random.rb
```

100 inputs are generated by default; `--count 10` generates ten inputs. The
default directory is `./random`. Files are named `random-0001.in`, incrementing
past existing `.in` or `.out` files.

After generating test cases, you can run naive solution against the generated test cases:

```bash
# Run naive solution against the generated test cases
cpg generate --answer ./naive.rb

# Or shorthand:
cpg g -a ./naive.rb

# Or specify full command to execute
cpg generate --answer -- ruby ./naive.rb
```

`--answer` processes every `.in` without a corresponding `.out`, preserving
existing answers. It cannot be combined with `--count`.

Use `--jobs N` (`-j N`) to run up to N generator or reference-solution processes
concurrently.

```bash
cpg generate -j 4 --count 100 ./random.rb
cpg generate --answer -j 4 ./naive.rb
```
