Skip to content

Commit ababb7f

Browse files
committed
update README
1 parent c0d0684 commit ababb7f

File tree

4 files changed

+135
-203
lines changed

4 files changed

+135
-203
lines changed

README.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# Covertable
2+
3+
![covertable logo](./covertable.png)
4+
5+
Time is limited.
6+
7+
Creating a test case that satisfies all possible factors is often unrealistic and, more importantly, tedious.
8+
9+
Save time with Covertable, a flexible pairwise tool that generates combinations covering two (or more) factors.
10+
11+
## Implementations
12+
13+
Covertable is available in two implementations, with TypeScript as the primary focus and Python offered as a secondary option.
14+
15+
### TypeScript
16+
17+
[![NPM Version](https://badge.fury.io/js/covertable.svg)](https://badge.fury.io/js/covertable) [![Build Status](https://github.com/walkframe/covertable/actions/workflows/typescript.yaml/badge.svg)](https://github.com/walkframe/covertable/actions/workflows/typescript.yaml)
18+
19+
- [README](https://github.com/walkframe/covertable/blob/master/typescript)
20+
- [History](https://github.com/walkframe/covertable/blob/master/typescript/history.md)
21+
22+
### Python (Legacy Support)
23+
24+
[![PyPI Version](https://badge.fury.io/py/covertable.svg)](https://badge.fury.io/py/covertable) [![Build Status](https://github.com/walkframe/covertable/actions/workflows/python.yaml/badge.svg)](https://github.com/walkframe/covertable/actions/workflows/python.yaml)
25+
26+
- [README](https://github.com/walkframe/covertable/blob/master/python/README.rst)
27+
- [History](https://github.com/walkframe/covertable/blob/master/python/history.md)
28+
29+
30+
For more details, please refer to the links above.
31+
32+
## Performance
33+
34+
> **Note:**
35+
> The following data was measured in Python 3.7.7 on a `3.1 GHz 6-Core Intel Core i5`.
36+
> The coverage number is `2`.
37+
38+
| Combination | Default | Minimum case | Fastest case |
39+
|-------------------|-------------------------------------|---------------------------------------|------------------------------------|
40+
| **3^4** | num: `9` <br> time: `0.0006s` | num: `9` <br> time: `0.0006s` | num: `14` <br> time: `0.0005s` |
41+
| **3^13** | num: `19` <br> time: `0.03s` | num: `17` <br> time: `0.03s` | num: `21` <br> time: `0.003s` |
42+
| **4^15 + 3^17 + 2^29** | num: `36` <br> time: `7.41s` | num: `34` <br> time: `7.47s` | num: `42` <br> time: `0.40s` |
43+
| **4^1 + 3^39 + 2^35** | num: `27` <br> time: `15.19s` | num: `26` <br> time: `14.70s` | num: `30` <br> time: `0.51s` |
44+
| **2^100** | num: `14` <br> time: `23.97s` | num: `12` <br> time: `0.63s` | num: `13` <br> time: `0.48s` |
45+
| **10^20** | num: `198` <br> time: `14.28s` | num: `195` <br> time: `14.48s` | num: `284` <br> time: `0.53s` |
46+
47+
In general, as the number of elements or coverage increases, the number of combinations tends to increase significantly.
48+
49+
## Tolerance
50+
51+
If you use the `greedy` criterion and specify a positive integer for the `tolerance` option, you can increase speed at the expense of the number of combinations.
52+
53+
The greater the `tolerance`, the faster the speed and the larger the number of combinations.
54+
55+
### Example: 10^20 Test Cases
56+
57+
| Tolerance | num | time |
58+
|-----------|------|--------|
59+
| 0 (default) | `195` | `14.48s` |
60+
| 1 | `199` | `12.45s` |
61+
| 2 | `201` | `9.48s` |
62+
| 3 | `201` | `7.17s` |
63+
| 4 | `207` | `5.70s` |
64+
| 5 | `212` | `4.58s` |
65+
| 6 | `212` | `3.65s` |
66+
| 7 | `216` | `3.07s` |
67+
| 8 | `223` | `2.57s` |
68+
| 9 | `226` | `2.14s` |
69+
| 10 | `233` | `1.84s` |
70+
| 11 | `237` | `1.61s` |
71+
| 12 | `243` | `1.43s` |
72+
| 13 | `249` | `1.28s` |
73+
| 14 | `254` | `1.19s` |
74+
75+

README.rst

Lines changed: 0 additions & 203 deletions
This file was deleted.

python/history.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# History
2+
3+
## 2.1.x
4+
- Add `make_async` function to generate combinations sequentially.
5+
6+
## 2.0.x
7+
8+
- The `sorter` option was split into `sorter` and `criterion`.
9+
- e.g., greedy -> hash sorter + greedy criterion.
10+
- The `greedy` method is much faster than before.
11+
- The `greedy` method now includes a `tolerance` option to balance speed and results.
12+
- The sequential sorter was dropped.
13+
- Due to the potential for huge numbers of combinations in TypeScript.
14+
15+
## 1.1.x
16+
17+
- The greedy sorter was improved in both implementations.
18+
- Speed has been increased.
19+
20+
## 1.0.x
21+
22+
- First release 🎉

typescript/history.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# History
2+
3+
## 2.4.x
4+
- Fixed an issue where preFilter was evaluating and excluding incomplete elements. This is a minor upgrade due to the large scope of the impact.
5+
- Type names are now unified with the Type suffix.
6+
7+
## 2.3.x
8+
- PictConstraintsLexer was added. ([#37](https://github.com/walkframe/covertable/pull/37))
9+
- It is a lexer designed to parse PICT constraints.
10+
- It parses constraints written in the PICT format, enabling the evaluation of complex conditions.
11+
- The parsed constraints are then used in the make function to dynamically filter the generated combinations based on the specified rules.
12+
13+
## 2.2.x
14+
- Speed is increased by expressing combinations of elements as a product of prime numbers.
15+
- Added `SuggestRowType` to infer the row type.
16+
17+
## 2.1.x
18+
- Speed up processing speed by pre-sorting target pairs.
19+
- Added `makeAsync` function to generate combinations sequentially.
20+
21+
22+
## 2.0.x
23+
24+
- The `sorter` option was split into `sorter` and `criterion`.
25+
- e.g., greedy -> hash sorter + greedy criterion.
26+
- The `greedy` method is much faster than before.
27+
- The `greedy` method now includes a `tolerance` option to balance speed and results.
28+
- The sequential sorter was dropped.
29+
- Due to the potential for huge numbers of combinations in TypeScript.
30+
31+
## 1.1.x
32+
33+
- The greedy sorter was improved in both implementations.
34+
- Speed has been increased.
35+
36+
## 1.0.x
37+
38+
- First release 🎉

0 commit comments

Comments
 (0)