Tenta is a property based testing framework for Swift, in development. Tenta is Swedish slang for "Test", typically used in a University setting.
// Assert that the reverse of any array keeps its length.
testProperty { (array: [Int]) in
array.count == array.reversed().count
}
or if you want to, add Tenta.TestObservation
as your NSPrincipalClass
and you should be able to write your tests like this:
// Assert that the reverse of any array keeps its length.
testPropertyWithXCTest { (array: [Int]) in
XCTAssertEqual(array.count, array.reversed().count)
}
When a test fails it will try to find the smallest example of a failing value and present you with an example of how to reproduce the error.
Tenta has some minor and some fundamental differences to SwiftCheck. The minor differences are a difference of philosophy regarding functional programming.
One major difference is the unification of generating values and shrinking in Tenta. When shrinking Tenta will use shrunken values conforming to the generator used. Whereby SwiftCheck will need a custom Shrinker to be explicitly added.
However Tenta draws inspiration heavily from SwiftCheck.
Tenta should be:
- Easy to understand.
- Easy to read.
- Provide sensible defaults.
- Have clear documentation driven by examples.
- Avoid unnecessary generalizations.
- Avoid the "M"-word (no Monads or Functors).
- Avoid custom operators
- Integrate well with XCTest.