-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Affects: io7m-com/.github#3
- Loading branch information
Showing
18 changed files
with
130 additions
and
544 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
|
||
## jaffirm | ||
|
||
The `jaffirm` package provides simple and fast pre/postcondition and invariant | ||
checking functions. | ||
|
||
## Features | ||
|
||
* Static invocation, zero-allocation code paths for the common case of non-failing contracts. | ||
* Specialized and generic variants of all functions for use in low-latency software. | ||
* Detailed contract failure messages by construction. | ||
* Written in pure Java 21. | ||
* High coverage test suite. | ||
* [OSGi-ready](https://www.osgi.org/) | ||
* [JPMS-ready](https://en.wikipedia.org/wiki/Java_Platform_Module_System) | ||
* ISC license. | ||
|
||
## Usage | ||
|
||
Declare preconditions with the `Preconditions` class. | ||
Declare postconditions with the `Postconditions` class. | ||
Declare invariants with the `Invariants` class. | ||
|
||
``` | ||
import static com.io7m.jaffirm.core.Contracts.conditionI; | ||
import static com.io7m.jaffirm.core.Preconditions.checkPreconditionI; | ||
import static com.io7m.jaffirm.core.Preconditions.checkPreconditionsI; | ||
|
||
int exampleSingles(final int x) | ||
{ | ||
checkPreconditionI(x, x > 0, i -> "Input " + i + " must be > 0"); | ||
checkPreconditionI(x, x % 2 == 0, i -> "Input " + i + " must be even"); | ||
return x * 2; | ||
} | ||
|
||
int exampleMultis(final int x) | ||
{ | ||
checkPreconditionsI( | ||
x, | ||
conditionI(i -> i > 0, i -> "Input " + i + " must be > 0"), | ||
conditionI(i -> i % 2 == 0, i -> "Input " + i + " must be even")); | ||
return x * 2; | ||
} | ||
|
||
> exampleSingles(0) | ||
Exception in thread "main" com.io7m.jaffirm.core.PreconditionViolationException: Precondition violation. | ||
Received: 0 | ||
Violated conditions: | ||
[0]: Input 0 must be > 0 | ||
|
||
> exampleSingles(1) | ||
Exception in thread "main" com.io7m.jaffirm.core.PreconditionViolationException: Precondition violation. | ||
Received: 1 | ||
Violated conditions: | ||
[0]: Input 1 must be even | ||
|
||
> exampleMultis(-1) | ||
Exception in thread "main" com.io7m.jaffirm.core.PreconditionViolationException: Precondition violation. | ||
Received: -1 | ||
Violated conditions: | ||
[0]: Input -1 must be > 0 | ||
[1]: Input -1 must be even | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
20 changes: 0 additions & 20 deletions
20
com.io7m.jaffirm.documentation/src/main/assembly/documentation.xml
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.