45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
## Development
 | 
						|
 | 
						|
### Quick start
 | 
						|
To get started create a `makefile` containing:
 | 
						|
```make
 | 
						|
include path/to/bpf.mk
 | 
						|
```
 | 
						|
and `src/program.c` containing:
 | 
						|
```c
 | 
						|
#include <solana_sdk.h>
 | 
						|
 | 
						|
bool entrypoint(const uint8_t *input) {
 | 
						|
  SolKeyedAccount ka[1];
 | 
						|
  uint8_t *data;
 | 
						|
  uint64_t data_len;
 | 
						|
 | 
						|
  if (!sol_deserialize(buf, ka, SOL_ARRAY_SIZE(ka), NULL, &data, &data_len)) {
 | 
						|
    return false;
 | 
						|
  }
 | 
						|
  print_params(1, ka, data, data_len);
 | 
						|
  return true;
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
Then run `make` to build `out/program.o`.
 | 
						|
Run `make help` for more details.
 | 
						|
 | 
						|
### Unit tests
 | 
						|
Built-in support for unit testing is provided by the
 | 
						|
[Criterion](https://criterion.readthedocs.io/en/master/index.html) test framework.
 | 
						|
To get started create the file `test/example.c` containing:
 | 
						|
```c
 | 
						|
#include <criterion/criterion.h>
 | 
						|
#include "../src/program.c"
 | 
						|
 | 
						|
Test(test_suite_name, test_case_name) {
 | 
						|
  cr_assert(true);
 | 
						|
}
 | 
						|
```
 | 
						|
Then run `make test`.
 | 
						|
 | 
						|
### Limitations
 | 
						|
* Programs must be fully contained within a single .c file
 | 
						|
* No libc is available but `solana_sdk.h` provides a minimal set of primitives
 |