Here's the code for the example table:
|!-fitbook.DiscountGroupsSetUp-!|
|future value|max balance|min purchase|discount %|
|low|0.00|0.00|0|
|medium|0.00|500.00|5|
----{{{public class DiscountGroupsSetUp extends fitlibrary.SetUpFixture {
    DiscountApplication app = new DiscountApplication();
    public void futureValueMaxBalanceMinPurchaseDiscountPercent(
            String futureValue, double maxBalance, double minPurchase,
            double discountPercent) {
        app.addDiscountGroup(futureValue,maxBalance,
                minPurchase,discountPercent);
    }
} }}}----
For each row of the table, the method ''futureValueMaxBalanceMinPurchaseDiscountPercent()'' is called with each of the values.
!3 In General
 * The method name is derived from concatenating all of the ''given'' labels and converting into a valid identifier using [[''extended camel casing''][.FitLibraryUserGuide.ExtendedCamelCase]].
 * The method ''setUp()'' may be overridden in a subclass; this is called before the rows are processed.
 * The method ''setUp()'' may also be overridden; this is called after all the rows have been processed.
 * As with [[''!-CalculateFixture-!''][.FitLibraryUserGuide.CalculateFixture.WritingFixtures]] and [[''!-DoFixture-!''][.FitLibraryUserGuide.DoFixture.FixtureDetails]], a ''!-SystemUnderTest-!'' object may be associated with a ''!-SetUpFixture-!''. If the fixture itself doesn't have a required method, the one in the ''!-SystemUnderTest-!'' is called instead. This means that the fixture acts as an adapter only when necessary, to map actions in the table into methods in the ''!-SystemUnderTest-!''.

|!-fitlibrary.DoFixture-!|
|''expected test results''|0|''right''|0|''wrong''|0|''ignored''|0|''exceptions''|
