# Development

## Architecture

![Architecture Diagram](./img/architecture.svg?raw=true)

`package:cupertino_http` is organized into three components:
1. [bindings](lib/src/native_cupertino_bindings.dart) generated by
   [ffigen](https://pub.dev/packages/ffigen) to relevant
   [Foundation framework](https://developer.apple.com/documentation/foundation)
   functionality. Configured using [`ffigen.yaml`](ffigen.yaml).
2. A [native helper library](src/) that fills gaps in the generated bindings.
3. Dart source that provides a high-level interface to the
   [Foundation framework](https://developer.apple.com/documentation/foundation)
   [URL Loading System](https://developer.apple.com/documentation/foundation/url_loading_system).

## Running the tests

```shell
cd example
flutter test integration_test
```

