An open API service indexing awesome lists of open source software.

https://github.com/ragmaanir/kontrakt

Simple design by contract for crystal
https://github.com/ragmaanir/kontrakt

assertions crystal design-by-contracts

Last synced: about 1 year ago
JSON representation

Simple design by contract for crystal

Awesome Lists containing this project

README

          

# kontrakt [![Build Status](https://travis-ci.org/Ragmaanir/kontrakt.svg?branch=master)](https://travis-ci.org/Ragmaanir/kontrakt)

Kontrakt provides two macros to implement very simple design-by-contract style checks.

## Installation

Add this to your application's `shard.yml`:

```yaml
dependencies:
kontrakt:
github: ragmaanir/kontrakt
```

## Usage

```crystal
require "kontrakt"

Kontrakt.precondition(1 == 5) # raises
Kontrakt.postcondition(3 == 3 && true != false) # passes
```

To disable the conditions set DISABLE_CONTRACTS env var:

```crystal
DISABLE_CONTRACTS=1 crystal spec
```

## TODO

- output the values of the variables used
- evaluate partial expressions like power_assert.cr. maybe only show leaf-values, e.g. dont show `x && y`, just show `x` and `y`