Skip to main content

Stronger Combinatorial Generation and Faster Grid Workflows

· 5 min read
Alan Richardson
Creator of AnyWayData

The next release is centered on one theme: faster paths from existing data to realistic, constrained, exportable test sets.

This release adds broader combinatorial generation, schema authoring improvements, better import/export controls, and a few high-value grid usability upgrades.

1. N-wise combinatorial generation, not just pairwise

The biggest addition is that combinatorial generation now goes beyond pairwise.

Instead of stopping at 2-wise coverage, you can now choose stronger coverage levels for enum-driven schemas and compare strategies before generating.

Example schema:

Browser: Chrome,Firefox,Safari
Device: Desktop,Tablet,Mobile
Locale: en-GB,en-US,fr-FR
Theme: Light,Dark

With this schema you can choose:

  • 2-wise to cover every pair of enum values
  • 3-wise to cover every triplet
  • stronger levels when you need more interaction coverage

This is especially useful when pairwise is too light, but full Cartesian generation would explode the row count.

Docs:

N-wise combinations dialog

2. Schema constraints with PICT-style IF ... THEN ...

Schema constraints make generated combinations more realistic by filtering out invalid rows.

Example:

Priority
enum("High","Medium","Low")
Status
enum("Open","Queued","Closed")
Escalated
enum("Yes","No")

IF [Priority] = "High" THEN [Status] = "Open";
IF [Priority] IN {"High","Medium"} THEN [Escalated] = "Yes";

This means:

  • high-priority items must be open
  • high and medium priorities must be escalated

Constraints work well with enum-heavy decision tables and combinatorial generation, giving you more realistic output without manually cleaning results afterward.

Docs:

3. Grid to Enum Schema for turning existing tables into generators

If you already have representative data in the main grid, you can now turn that grid into an enum schema automatically.

Example grid:

Browser,Device,Theme
Chrome,Desktop,Light
Firefox,Mobile,Dark
Chrome,Tablet,Dark

Generated schema:

Browser
enum("Chrome","Firefox")
Device
enum("Desktop","Mobile","Tablet")
Theme
enum("Light","Dark")

This is one of the most practical workflow improvements in the release because it shortens the path from imported examples to reusable generation rules.

Docs:

Grid to enum schema in the app

4. PICT-style inline enum definitions such as Name: values

Schema text now fits more naturally with compact PICT-style authoring.

Example:

Browser: Chrome,Firefox,Safari
Theme: Light,Dark
Priority: enum("High","Medium","Low")
Owner: person.fullName

That means you can mix:

  • raw inline enum values
  • explicit enum(...)
  • other command-based field definitions

This makes it easier to paste or adapt schemas from existing combinatorial models instead of rewriting them into a stricter two-line format.

Docs:

5. Import trimming controls for cleaner amend and import workflows

Imported files and clipboard data can now be normalized during import.

You can trim:

  • every imported field value
  • only selected fields

Example selected fields list:

Name, Email

This helps when imported files contain accidental whitespace around values, but you do not want to aggressively rewrite every column.

Docs:

Import trim settings

6. File export settings for line endings and BOM

Downloads now support file transport settings without changing the preview text shown in the browser.

You can configure:

  • LF or Windows (CR/LF) line endings
  • optional UTF-8 BOM

This is useful when exporting for spreadsheets, Windows tooling, or downstream systems that are sensitive to file encoding details.

Docs:

Download encoding settings

7. Right-click context menu in the main data grid

The editable grid now has a right-click context menu for common grid actions.

This keeps more of the workflow close to the current selection and makes the app feel more like a direct data-work surface rather than a form with a grid attached to it.

Docs:

8. Always-visible total row counts in the data grid

The main grid now shows total row counts, and filtered views also show how many rows remain visible.

Examples:

Total rows: 125
Total rows: 125 | Filtered Visible: 12

It is a small change, but it removes friction during import checks, filtered analysis, and post-generation review.

Docs:

Why should you care?

Taken together, these features make the tool better at moving through the whole workflow:

  1. start with imported or hand-edited data
  2. convert it into a schema
  3. add constraints
  4. generate the right amount of combinatorial coverage
  5. export in the format and file encoding you actually need

The release adds more generation power, reduces setup time, and cleanup time around that generation.