# IPOG

The In Parameter Order General algorithm (IPOG) [LKK+08] is a widely-used MCAC algorithm. IPOG is implemented in several CT libraries such as ACTS, which is used by more than 4000 corporate and university users.

In our implementation of IPOG we use SAT technology to efficiently handle SUT constraints. We show in our work A Benchmark Generator for Combinatorial Testing (under review) that this implementation is able to obtain better runtimes than the Constraint Programming version of IPOG in ACTS in most of the tested instances.

Here we show an example of its execution over the SUT presented in Hands-on CTLog for strength 2:

```ctlog IPOG sut.acts -t 2
```
```c Params domains: [5, 4, 4, 2]
c Fixing first parameters: [0, 1]
c Num tests: 14
c ***** Extending parameter '2' (3 of 4 params; domain: 4) *****
c Num tuples: 36
c Horizontal extension. Num covered: 25
c Vertical growth. Num fit: 0; New tests: 8; Num fit in new: 0; Num forbidden: 3
c ***** Extending parameter '3' (4 of 4 params; domain: 2) *****
c Num tuples: 26
c Horizontal extension. Num covered: 22
c Vertical growth. Num fit: 0; New tests: 0; Num fit in new: 0; Num forbidden: 4
c T: OS,Pl,Re,Or
c T: L,F,K,L
c T: L,C,F,L
c T: W,F,F,L
c T: W,C,K,L
c T: M,F,H,L
c T: M,S,K,L
c T: M,C,W,L
c T: i,F,W,P
c T: i,S,F,P
c T: i,C,H,P
c T: i,A,F,L
c T: A,F,F,P
c T: A,C,H,L
c T: A,A,W,P
c T: L,F,H,L
c T: L,F,W,L
c T: W,F,H,L
c T: W,F,W,L
c T: M,F,F,L
c T: M,S,H,L
c T: M,S,W,L
c T: i,A,H,L
Test suite size: 22
Validating MCAC...
VALIDATION OK
Num covered: 69
Num forbidden: 13
```

For a complete list of all the available parameters for the IPOG algorithm see the CLI Reference.