{"id":24380494,"url":"https://github.com/walkframe/covertable","last_synced_at":"2025-03-05T19:17:43.146Z","repository":{"id":34932465,"uuid":"192176703","full_name":"walkframe/covertable","owner":"walkframe","description":"makes combinations for testing.","archived":false,"fork":false,"pushed_at":"2024-08-31T20:20:35.000Z","size":2401,"stargazers_count":46,"open_issues_count":4,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-26T18:13:24.706Z","etag":null,"topics":["allpairs","covering-array","javascript","javascript-library","pairwise","pairwise-testing","python","testing","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/walkframe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-16T10:13:51.000Z","updated_at":"2024-12-20T11:02:45.000Z","dependencies_parsed_at":"2024-06-19T00:01:31.882Z","dependency_job_id":"361290e6-c6be-4bf0-9e81-7ebd27ed99d2","html_url":"https://github.com/walkframe/covertable","commit_stats":{"total_commits":84,"total_committers":4,"mean_commits":21.0,"dds":"0.45238095238095233","last_synced_commit":"2e66202c36318608dd03a6e73574a721d6a0f4b7"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walkframe%2Fcovertable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walkframe%2Fcovertable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walkframe%2Fcovertable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walkframe%2Fcovertable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/walkframe","download_url":"https://codeload.github.com/walkframe/covertable/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242087950,"owners_count":20069724,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["allpairs","covering-array","javascript","javascript-library","pairwise","pairwise-testing","python","testing","typescript"],"created_at":"2025-01-19T08:19:32.117Z","updated_at":"2025-03-05T19:17:43.121Z","avatar_url":"https://github.com/walkframe.png","language":"TypeScript","readme":"# CoverTable\n\n![covertable logo](./covertable.png)\n\nTime is limited.\n\nCreating a test case that satisfies all possible factors is often unrealistic and, more importantly, tedious.\n\nSave time with CoverTable, a flexible pairwise tool that generates combinations covering two (or more) factors.\n\n## Implementations\n\nCoverTable is available in two implementations, with TypeScript as the primary focus and Python offered as a secondary option.\n\n### TypeScript\n\n[![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)\n\n- [README](https://github.com/walkframe/covertable/blob/master/typescript/README.md)\n- [History](https://github.com/walkframe/covertable/blob/master/typescript/history.md)\n\n### Python (Legacy Support)\n\n[![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)\n\n- [README](https://github.com/walkframe/covertable/blob/master/python/README.rst)\n- [History](https://github.com/walkframe/covertable/blob/master/python/history.md)\n\n\nFor more details, please refer to the links above.\n\n## Performance\n\n\u003e **Note:**  \n\u003e The following data was measured in Python 3.7.7 on a `3.1 GHz 6-Core Intel Core i5`.  \n\u003e The coverage number is `2`.\n\n| Combination       | Default                             | Minimum case                          | Fastest case                       |\n|-------------------|-------------------------------------|---------------------------------------|------------------------------------|\n| **3^4**           | num: `9` \u003cbr\u003e time: `0.0006s`       | num: `9` \u003cbr\u003e time: `0.0006s`         | num: `14` \u003cbr\u003e time: `0.0005s`     |\n| **3^13**          | num: `19` \u003cbr\u003e time: `0.03s`        | num: `17` \u003cbr\u003e time: `0.03s`          | num: `21` \u003cbr\u003e time: `0.003s`      |\n| **4^15 + 3^17 + 2^29** | num: `36` \u003cbr\u003e time: `7.41s`   | num: `34` \u003cbr\u003e time: `7.47s`          | num: `42` \u003cbr\u003e time: `0.40s`       |\n| **4^1 + 3^39 + 2^35**  | num: `27` \u003cbr\u003e time: `15.19s`  | num: `26` \u003cbr\u003e time: `14.70s`         | num: `30` \u003cbr\u003e time: `0.51s`       |\n| **2^100**         | num: `14` \u003cbr\u003e time: `23.97s`       | num: `12` \u003cbr\u003e time: `0.63s`          | num: `13` \u003cbr\u003e time: `0.48s`       |\n| **10^20**         | num: `198` \u003cbr\u003e time: `14.28s`      | num: `195` \u003cbr\u003e time: `14.48s`        | num: `284` \u003cbr\u003e time: `0.53s`      |\n\nIn general, as the number of elements or coverage increases, the number of combinations tends to increase significantly.\n\n## Tolerance\n\nIf 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.\n\nThe greater the `tolerance`, the faster the speed and the larger the number of combinations.\n\n### Example: 10^20 Test Cases\n\n| Tolerance | num  | time   |\n|-----------|------|--------|\n| 0 (default) | `195` | `14.48s` |\n| 1         | `199` | `12.45s` |\n| 2         | `201` | `9.48s`  |\n| 3         | `201` | `7.17s`  |\n| 4         | `207` | `5.70s`  |\n| 5         | `212` | `4.58s`  |\n| 6         | `212` | `3.65s`  |\n| 7         | `216` | `3.07s`  |\n| 8         | `223` | `2.57s`  |\n| 9         | `226` | `2.14s`  |\n| 10        | `233` | `1.84s`  |\n| 11        | `237` | `1.61s`  |\n| 12        | `243` | `1.43s`  |\n| 13        | `249` | `1.28s`  |\n| 14        | `254` | `1.19s`  |\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwalkframe%2Fcovertable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwalkframe%2Fcovertable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwalkframe%2Fcovertable/lists"}