|
1 | 1 | # Release Notes # |
2 | 2 |
|
| 3 | +## 2.1.0 ## |
| 4 | + |
| 5 | +Following release 2.0.0, this release adds further improvements to the Tcases API. If your application uses the Tcases API, some minor changes will be required. |
| 6 | +But if you use Tcases only from the command line or with Maven, you won't see any differences. |
| 7 | + |
| 8 | + * Thanks to [Thibault Kruse](https://github.com/tkruse) for his suggestions and feedback on all of the key features of this release. |
| 9 | + |
| 10 | + * **The "name" of a variable value can be any Java object, including `null`** |
| 11 | + * The Java object that represents a variable value is no longer limited to a `String`. Accessor data types have changed from `String` to `Object`. |
| 12 | + Null values are now allowed. |
| 13 | + * This affects the public interface to `VarDef`, `VarValueDef`, and `VarBinding`. |
| 14 | + * When reading the XML representation of a system input definition (`*-Input.xml`), the `name` attribute of a `Value` element is automatically converted |
| 15 | + to an appropriate Java object. |
| 16 | + * A numeric value is converted to either an `Integer`, a `Long`, or a `BigDecimal` object. |
| 17 | + * The strings `"true"` and `"false"` (in any combination of upper- and lower-case) are converted to `Boolean` objects. |
| 18 | + * The string `"null"` is converted to a null `Object`. |
| 19 | + * All other values are converted to `String` objects. |
| 20 | + * When reading the XML representation of a system test definition (`*-Test.xml`), the same conversions are applied to the `value` attribute of a `Var` element. |
| 21 | + |
| 22 | + * **Reducer API** |
| 23 | + * The `Reducer` class now provides `reduce` methods that operate directly at the API level. |
| 24 | + * Command line support for the Reducer has been relocated to a new `ReducerCommand` class. |
| 25 | + * The command line option for defining a "generator factory" -- the `-G` option and corresponding Maven property `genFactory` -- is now obsolete and has been removed. |
| 26 | + |
| 27 | + * **Saving system input definitions** |
| 28 | + * The new `SystemInputDocWriter` class now makes it possible to save a system input definition as an XML document compatible with |
| 29 | + `SystemInputDocReader`. |
| 30 | + |
| 31 | + * **Builders! Matchers!** |
| 32 | + * For each of the major entities in the Tcases API there is now a `*Builder` class that provides a "fluent" API for simpler construction of a complex object. |
| 33 | + * Let's show some love for unit tests, too! For most Tcase entities, there is now a `*Matcher` class that enables more powerful test |
| 34 | + assertions. By using `Asserts.assertMatches()` with a `Matcher` instead of `assertEquals`, you get more than a yes/no answer. Instead, you |
| 35 | + see exactly which field in a complex object contains the discrepancy. By using `Asserts.assertSetEquals()` with a `Matcher`, you see exactly |
| 36 | + which elements of a collection of complex objects are wrong and why. |
| 37 | + * With detailed comparison now handled by the `Matcher` classes, the corresponding `equals` |
| 38 | + methods have changed to provide a narrower "primary key" definition of equality. |
| 39 | + |
3 | 40 | ## 2.0.0 ## |
4 | 41 |
|
5 | 42 | * This is a major release designed to open Tcases up to a much broader community of applications. The features included will be |
|
0 commit comments