{"_id":"tdt","_rev":"29-760bdfd0e7ddcd7b299fb6eb81cfb8dc","name":"tdt","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.1":{"name":"tdt","version":"0.0.1","keywords":["typescript","testing","test","testcase","typed","generics","generic types","software test","generate","decision table","pairwise testing"],"author":{"name":"casago"},"license":"MIT","_id":"tdt@0.0.1","maintainers":[{"name":"casago","email":"maeda2427@gmail.com"}],"homepage":"https://github.com/casagooo/tdt#readme","bugs":{"url":"https://github.com/casagooo/tdt/issues"},"dist":{"shasum":"9d8ce8090eda2d6a294705bdad649904f2384d63","tarball":"https://registry.npmjs.org/tdt/-/tdt-0.0.1.tgz","fileCount":12,"integrity":"sha512-rd6A3jUItb08DdoWgVzTUM9LhE+cWkzyn8T8W7M7MpA61pSihvzic41jnbKywjko3QAgMP0IA9BOqk1w7XkBFw==","signatures":[{"sig":"MEYCIQDJPzPfddaLUr01ugmgGbGz11oxLowSaLNt3pGAEdoG8AIhAOV+JTqKbCiqsDVPh5hODfUBnI3hq78tlgQ1fPipw1Qp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38422,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjC15NACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoxlg//SHMOV6+AyLKWqiRJJ+G661xYhoKArtVOQ0DXggrgJE4k/cUM\r\nTaNJog0Y1Jp/COe6gltJlLfO7d+nSNPT63OD6ZX8nwzbHaCJQ2SMuSAtxErm\r\nyzRYLE6LuCYwAou+80Gj0nSjNICdRl6dbM+ejYPEmN//5K6H4QK1XSuYyetj\r\nG4N3BraJdZQB6nsYh3FmNMOmtTJaaIp4xpLuh5C9NQD4OMAf8VR1N44NzpNb\r\nHk8YAu1aJwchWA6duCjhCB7TmM0UMFowoDhZj0fsIekvydVw0sANTUxOUHH6\r\nHBu4GdaRaKdsyBvYw9eO0qlPvPKGl12N9wU4L5hJkSHuzpfBZCj9Y9dDBUfQ\r\nyW9GRp8TdH9unV+slLFwETkwj7KZE1oHJ9sa3QcP05ibMvj8ZwapqkK5xAtc\r\nUCGrEm9hEDbZJ4qW0vPvMXsxyBWN1hNt/Rnr2ibEKOz2kXrf6czhfY6cV874\r\nN4iDe1zCuuqIZOBB1JUSaRNijiL6AHabzsQ/06x3hooT/D4MZqnwIcWQ8GvE\r\ncSWdRTV1gp43kbltJKB7F1wQgsvhIXkzZpy9y+wP74yW9hVlxBmxYzk2wnyQ\r\nKKSDX3N/hdNzZADGfyesHvBUtUEpnCAaj/ItjN60OCzpQ5QmnINeJGnmQsmq\r\ncPnqqjSznblbOBJH6b2K0yheWP9YOPeCU40=\r\n=zXUv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","types":"lib/index.d.ts","gitHead":"a481924b5c855b18474e6179b2d5908e2571cce2","scripts":{"build":"tsc -p .","start":"npm run build:live","build:live":"nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/index.ts","example:01":"npm run build; node ./lib/examples/01_basic/index.js","example:02":"npm run build; node ./lib/examples/02_not_typed_args/index.js","example:03":"npm run build; node ./lib/examples/03_regexp_exclusion/index.js","example:04":"npm run build; node ./lib/examples/04_covering_array_strength/index.js","example:input_files":"rm -rf ./lib;npm run build;mkdir ./lib/examples;mkdir ./lib/examples/input_files;cp ./examples/input_files/* ./lib/examples/input_files;cd ./lib;node index.js"},"_npmUser":{"name":"casago","email":"maeda2427@gmail.com"},"repository":{"url":"git+https://github.com/casagooo/tdt.git","type":"git"},"_npmVersion":"8.5.0","description":"Typed Decision Table","directories":{},"_nodeVersion":"16.14.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^2.0.15","ts-node":"^10.5.0","typescript":"^4.5.5","@types/node":"^17.0.19"},"_npmOperationalInternal":{"tmp":"tmp/tdt_0.0.1_1661689421108_0.264174624226013","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"tdt","version":"0.0.2","keywords":["typescript","testing","test","testcase","typed","generics","generic types","software test","generate","decision table","pairwise testing"],"author":{"name":"casago"},"license":"MIT","_id":"tdt@0.0.2","maintainers":[{"name":"casago","email":"maeda2427@gmail.com"}],"homepage":"https://github.com/casagooo/tdt#readme","bugs":{"url":"https://github.com/casagooo/tdt/issues"},"dist":{"shasum":"e08cd7d7843d86793393f287c18f381ecadb83ad","tarball":"https://registry.npmjs.org/tdt/-/tdt-0.0.2.tgz","fileCount":13,"integrity":"sha512-DjmSQabmcB93oqQB1tQmoB4f9343SPLzlW5Vw3qE1v2IaKN2hYNT46zGPMc1NvEvGmIxTxyhQcPv1og8N4GYSw==","signatures":[{"sig":"MEYCIQC7WtehmiFO1fNHn6cOi52kl98tEZ2grK342VCs2MRnRAIhAN9uBEGeocn0nMtgSkH8d56DtkThV9HRP/hMy/+BVHdI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39197,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjFDIAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo3lhAAklAIC6E7hBPOMdTYnIUM4Q8Pq2TAIRHFNUzaT0t3ZdLgmvvW\r\nMlPYb0KbpzUcf7oWFLxvQ6UeU/e5Gg97l16MmeybZs8ZsSsyv11yon7s4308\r\nxjJdti8Aaoq/YHDIP7Zjb4IFG6vea0rzeJaX0N+gALmmk0cBCcbZFlB7Dj28\r\nOXPKW4sq9vjtMjysbYus+xB0/AIuzdnd5RlZ4ShPiWv/wy8Nrj4xQMsyrvVT\r\nLwyScGXB5eFVzZbbv/WARetIty/z2mM2fm+BgGZCDOq0Vk6HkbXDm28n5yY0\r\nEnwdvqCV8MFsM2XIfIq/QThqrlqWOHX/2zRQyraxne/eWFvw+5H8bBpLkWRC\r\nbbLzwmctsFvt2Hm/yUQNV66/lwZsnVGDYmoKt8V5SaNX4fONuyQlDVOMu+Vo\r\ni1jDgObn6cArPmDprCzR4fkS2zkRdoVGd+jwGbIXNw4W7Qg5PpxV1n0y4tMn\r\n2RAKBMSw+sZPkgPC3Pn/pQOXY5nbcHGv2A6sI7qL6FvFiiKs6T4I8a2UxDoH\r\nsl63WmTMgPQoseR+VCLY0j2HJBh0AGUYZRFCrBts8ZPTwyg4FlakUc7tc/4z\r\nJEoSIFkyvGN5WjqYRrBqXfhyrBNuiu4rQaV0Opp61mo3bbNZQSDhtoYFgZpc\r\nldwqsSowhNLnJNqbVJnB/i4iFQF6hip+bTk=\r\n=St7O\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","types":"lib/index.d.ts","gitHead":"b927879c41b2a9cc2911b15f0761ec3f5bcdfb27","scripts":{"build":"tsc -p .","start":"npm run build:live","build:live":"nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/index.ts","example:01":"npm run build; node ./lib/examples/01_basic/index.js","example:02":"npm run build; node ./lib/examples/02_not_typed_args/index.js","example:03":"npm run build; node ./lib/examples/03_regexp_exclusion/index.js","example:04":"npm run build; node ./lib/examples/04_covering_array_strength/index.js","example:input_files":"rm -rf ./lib;npm run build;mkdir ./lib/examples;mkdir ./lib/examples/input_files;cp ./examples/input_files/* ./lib/examples/input_files;cd ./lib;node index.js"},"_npmUser":{"name":"casago","email":"maeda2427@gmail.com"},"repository":{"url":"git+https://github.com/casagooo/tdt.git","type":"git"},"_npmVersion":"8.5.0","description":"Typed Decision Table","directories":{},"_nodeVersion":"16.14.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^2.0.15","ts-node":"^10.5.0","typescript":"^4.5.5","@types/node":"^17.0.19"},"_npmOperationalInternal":{"tmp":"tmp/tdt_0.0.2_1662267903890_0.18988685818982454","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"tdt","version":"0.0.3","keywords":["typescript","testing","test","testcase","typed","generics","generic types","software test","generate","decision table","pairwise testing"],"author":{"name":"casago"},"license":"MIT","_id":"tdt@0.0.3","maintainers":[{"name":"casago","email":"casagoooo@yahoo.co.jp"}],"homepage":"https://github.com/casagooo/tdt#readme","bugs":{"url":"https://github.com/casagooo/tdt/issues"},"dist":{"shasum":"e4b9bd089d0f7d5a9070e1fd2129bc3657118e22","tarball":"https://registry.npmjs.org/tdt/-/tdt-0.0.3.tgz","fileCount":13,"integrity":"sha512-Ox6+Z5oXge757ceSdEM1kVV/u3Z3PrY2vKI7VJGid9XBM5KDq5kHd1C9pTHvTS7IpiiT0QapFDQkXJtH7R9U4A==","signatures":[{"sig":"MEUCIQC3p6TW0XTLcbJKBmIFy4o+UzWFrqE9nlyjK+BrdwQ10AIgIhA8BFp1+W3Ml5c1Pz7ij1UMhDhgvY0fSW/3I8I9lZ0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39691},"main":"lib/index.js","types":"lib/index.d.ts","gitHead":"7cf3c0027c7549e343589bd246ebde6ba2a8a148","scripts":{"build":"tsc -p .","start":"npm run build:live","build:live":"nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/index.ts","example:01":"npm run build; node ./lib/examples/01_basic/index.js","example:02":"npm run build; node ./lib/examples/02_not_typed_args/index.js","example:03":"npm run build; node ./lib/examples/03_regexp_exclusion/index.js","example:04":"npm run build; node ./lib/examples/04_covering_array_strength/index.js","example:input_files":"rm -rf ./lib;npm run build;mkdir ./lib/examples;mkdir ./lib/examples/input_files;cp ./examples/input_files/* ./lib/examples/input_files;cd ./lib;node index.js"},"_npmUser":{"name":"casago","email":"casagoooo@yahoo.co.jp"},"repository":{"url":"git+https://github.com/casagooo/tdt.git","type":"git"},"_npmVersion":"6.14.15","description":"Typed Decision Table","directories":{},"_nodeVersion":"14.18.2","dependencies":{"got":"^12.5.3"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^2.0.20","ts-node":"^10.9.1","typescript":"^4.9.4","@types/node":"^18.11.18"},"_npmOperationalInternal":{"tmp":"tmp/tdt_0.0.3_1721113537790_0.6779889553283178","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"tdt","version":"0.0.4","keywords":["typescript","testing","test","testcase","typed","generics","generic types","software test","generate","decision table","pairwise testing"],"author":{"name":"casago"},"license":"MIT","_id":"tdt@0.0.4","maintainers":[{"name":"casago","email":"casagoooo@yahoo.co.jp"}],"homepage":"https://github.com/casagooo/tdt#readme","bugs":{"url":"https://github.com/casagooo/tdt/issues"},"dist":{"shasum":"83645f40eebc5747da92de476dc6ee9bc425c0c8","tarball":"https://registry.npmjs.org/tdt/-/tdt-0.0.4.tgz","fileCount":13,"integrity":"sha512-2eYJIdiN4iiV3pDnRszD7dI7hhxcXaBnq0wDiQlkhCzdrw9aBu5s4Z4h8kQRo+Jf1H1YxeUTw0M+B/9h/BTc0A==","signatures":[{"sig":"MEQCIGu66JyEVyvnzwafhhfhDAMJ66BVuLvqCUfMhf9s5PHzAiAT2k7mTzUUIdRV6TwPC+xVmHsb6UTN3YREioNDBxP1lA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39691},"main":"lib/index.js","types":"lib/index.d.ts","gitHead":"f5285059117f6b230a3ee5bf8625146a7187b33a","scripts":{"build":"tsc -p .","start":"npm run build:live","build:live":"nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/index.ts","example:01":"npm run build; node ./lib/examples/01_basic/index.js","example:02":"npm run build; node ./lib/examples/02_not_typed_args/index.js","example:03":"npm run build; node ./lib/examples/03_regexp_exclusion/index.js","example:04":"npm run build; node ./lib/examples/04_covering_array_strength/index.js","example:input_files":"rm -rf ./lib;npm run build;mkdir ./lib/examples;mkdir ./lib/examples/input_files;cp ./examples/input_files/* ./lib/examples/input_files;cd ./lib;node index.js"},"_npmUser":{"name":"casago","email":"casagoooo@yahoo.co.jp"},"repository":{"url":"git+https://github.com/casagooo/tdt.git","type":"git"},"_npmVersion":"6.14.15","description":"Typed Decision Table","directories":{},"_nodeVersion":"14.18.2","dependencies":{"got":"^12.5.3"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^2.0.20","ts-node":"^10.9.1","typescript":"^4.9.4","@types/node":"^18.11.18"},"_npmOperationalInternal":{"tmp":"tmp/tdt_0.0.4_1722822846643_0.4736971852448968","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"tdt","version":"0.0.5","keywords":["typescript","testing","test","testcase","typed","generics","generic types","software test","generate","decision table","pairwise testing"],"author":{"name":"casago"},"license":"MIT","_id":"tdt@0.0.5","maintainers":[{"name":"casago","email":"casagoooo@yahoo.co.jp"}],"homepage":"https://github.com/casagooo/tdt#readme","bugs":{"url":"https://github.com/casagooo/tdt/issues"},"dist":{"shasum":"aa0dff907b31033576683b4d60b358d5579a9e91","tarball":"https://registry.npmjs.org/tdt/-/tdt-0.0.5.tgz","fileCount":13,"integrity":"sha512-zS8Zp5M0ru2WcuxtcfLDvjVzVXHtXA3+1PXaNXbLqNDwBqfU4jNh/wMGs58DtOu1zwd88QF6kZhg8FK6bA+0DQ==","signatures":[{"sig":"MEUCIQD1exzHAyLWMaWO6ZN9UyX5SNfRAB6XcXK16of6Qql7UQIgaRGMoLkjma5GC7EiYKoIa296z0Zul0gD/ERt1v/rps4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38657},"main":"lib/index.js","types":"lib/index.d.ts","gitHead":"ad653528e83f664371caccb6d453f5110352e5d1","scripts":{"build":"tsc -p .","start":"npm run build:live","build:live":"nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/index.ts","example:01":"npm run build; node ./lib/examples/01_basic/index.js","example:02":"npm run build; node ./lib/examples/02_not_typed_args/index.js","example:03":"npm run build; node ./lib/examples/03_regexp_exclusion/index.js","example:04":"npm run build; node ./lib/examples/04_covering_array_strength/index.js","example:input_files":"rm -rf ./lib;npm run build;mkdir ./lib/examples;mkdir ./lib/examples/input_files;cp ./examples/input_files/* ./lib/examples/input_files;cd ./lib;node index.js"},"_npmUser":{"name":"casago","email":"casagoooo@yahoo.co.jp"},"repository":{"url":"git+https://github.com/casagooo/tdt.git","type":"git"},"_npmVersion":"6.14.15","description":"Typed Decision Table","directories":{},"_nodeVersion":"14.18.2","dependencies":{"got":"^12.5.3"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^2.0.20","ts-node":"^10.9.1","typescript":"^4.9.4","@types/node":"^18.11.18"},"_npmOperationalInternal":{"tmp":"tmp/tdt_0.0.5_1722824499697_0.0747462893411468","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"tdt","version":"0.0.6","keywords":["typescript","testing","test","testcase","typed","generics","generic types","software test","generate","decision table","pairwise testing"],"author":{"name":"casago"},"license":"MIT","_id":"tdt@0.0.6","maintainers":[{"name":"casago","email":"casagoooo@yahoo.co.jp"}],"homepage":"https://github.com/casagooo/tdt#readme","bugs":{"url":"https://github.com/casagooo/tdt/issues"},"dist":{"shasum":"4c1dc99288ea8fc4baa4cdfced36ee4a108477ef","tarball":"https://registry.npmjs.org/tdt/-/tdt-0.0.6.tgz","fileCount":13,"integrity":"sha512-oPsBQ3j7eBEFh2hCZJG9/k66/6U6TStouDEkQz+yHjsIWp/wBXwinPy1SUDnC6U5bpLKw+/Srh3DqUkUgyXrMA==","signatures":[{"sig":"MEQCIA2AXHZLe2D7QUTdLqPKVTKFBJJRj+IQLkHEyTIyiNv4AiByq1uBDHW3OcIyP2m3TKzLqYoChu97JwOuc/m3ARVA4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40276},"main":"lib/index.js","types":"lib/index.d.ts","gitHead":"637c38e80475118fbb50ca7ed19d4aefaeb2c75e","scripts":{"build":"tsc -p .","start":"npm run build:live","build:live":"nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/index.ts","example:01":"npm run build; node ./lib/examples/01_basic/index.js","example:02":"npm run build; node ./lib/examples/02_not_typed_args/index.js","example:03":"npm run build; node ./lib/examples/03_regexp_exclusion/index.js","example:04":"npm run build; node ./lib/examples/04_covering_array_strength/index.js","example:input_files":"rm -rf ./lib;npm run build;mkdir ./lib/examples;mkdir ./lib/examples/input_files;cp ./examples/input_files/* ./lib/examples/input_files;cd ./lib;node index.js"},"_npmUser":{"name":"casago","email":"casagoooo@yahoo.co.jp"},"repository":{"url":"git+https://github.com/casagooo/tdt.git","type":"git"},"_npmVersion":"10.2.4","description":"Typed Decision Table","directories":{},"_nodeVersion":"18.19.1","dependencies":{"got":"^12.5.3"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.10","ts-node":"^10.9.1","typescript":"^4.9.4","@types/node":"^18.11.18"},"_npmOperationalInternal":{"tmp":"tmp/tdt_0.0.6_1756947269383_0.5625503973715678","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"tdt","version":"0.0.7","description":"Typed Decision Table","main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/casagooo/tdt.git"},"keywords":["typescript","testing","test","testcase","typed","generics","generic types","software test","generate","decision table","pairwise testing"],"bugs":{"url":"https://github.com/casagooo/tdt/issues"},"homepage":"https://github.com/casagooo/tdt#readme","devDependencies":{"@types/node":"^18.11.18","nodemon":"^3.1.10","ts-node":"^10.9.1","typescript":"^4.9.4"},"scripts":{"start":"npm run build:live","build":"tsc -p .","build:live":"nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/index.ts","example:01":"npm run build; node ./lib/examples/01_basic/index.js","example:02":"npm run build; node ./lib/examples/02_not_typed_args/index.js","example:03":"npm run build; node ./lib/examples/03_regexp_exclusion/index.js","example:04":"npm run build; node ./lib/examples/04_covering_array_strength/index.js","example:input_files":"rm -rf ./lib;npm run build;mkdir ./lib/examples;mkdir ./lib/examples/input_files;cp ./examples/input_files/* ./lib/examples/input_files;cd ./lib;node index.js"},"author":{"name":"casago"},"license":"MIT","dependencies":{"got":"^12.5.3"},"_id":"tdt@0.0.7","gitHead":"052ea068e33a442e56c4cfe84cc9689d37be9981","_nodeVersion":"18.19.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-JC30A/qRuiWiDZukpZ6r1a97PnzNDjGdJBe9VylP6IqCG7K5HtGajLrbioeQ3f34g7mpvJPFp//o40bepIXj6A==","shasum":"538b292c5247e916cc4c84b8b9155cf22e83084d","tarball":"https://registry.npmjs.org/tdt/-/tdt-0.0.7.tgz","fileCount":15,"unpackedSize":103930,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDSM4XTc2qYh/wA9qfZjReVlnvQNFzJBlycGzQvvMVcaAiBYRikA7pG9w5SpWd6uCPZy4FgKT6VK/kbUnAWeFpBk0A=="}]},"_npmUser":{"name":"casago","email":"casagoooo@yahoo.co.jp"},"directories":{},"maintainers":[{"name":"casago","email":"casagoooo@yahoo.co.jp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tdt_0.0.7_1756956982432_0.9321303555126466"},"_hasShrinkwrap":false}},"time":{"created":"2022-08-28T12:23:41.031Z","modified":"2025-09-04T03:36:22.782Z","0.1.1":"2017-07-24T00:10:03.372Z","0.1.2":"2017-07-24T00:14:32.583Z","0.1.3":"2017-07-25T12:41:41.971Z","0.1.4":"2017-07-25T13:03:24.884Z","0.1.5":"2017-11-14T00:10:19.787Z","0.1.6":"2017-11-15T13:14:11.472Z","0.1.7":"2017-12-18T08:31:55.956Z","0.1.8":"2017-12-18T09:31:08.568Z","0.1.11":"2018-03-21T00:11:29.087Z","0.1.12":"2018-03-25T08:17:57.430Z","0.1.13":"2018-03-25T15:05:47.605Z","0.1.14":"2018-03-26T14:35:38.671Z","0.1.15":"2018-04-11T00:52:05.404Z","0.1.16":"2018-04-11T01:06:33.248Z","0.1.17":"2018-04-11T01:24:27.669Z","0.1.18":"2018-04-11T01:26:25.118Z","0.1.19":"2018-04-28T00:42:56.053Z","0.0.1":"2022-08-28T12:23:41.346Z","0.0.2":"2022-09-04T05:05:04.172Z","0.0.3":"2024-07-16T07:05:37.931Z","0.0.4":"2024-08-05T01:54:06.794Z","0.0.5":"2024-08-05T02:21:40.023Z","0.0.6":"2025-09-04T00:54:29.573Z","0.0.7":"2025-09-04T03:36:22.613Z"},"bugs":{"url":"https://github.com/casagooo/tdt/issues"},"author":{"name":"casago"},"license":"MIT","homepage":"https://github.com/casagooo/tdt#readme","keywords":["typescript","testing","test","testcase","typed","generics","generic types","software test","generate","decision table","pairwise testing"],"repository":{"type":"git","url":"git+https://github.com/casagooo/tdt.git"},"description":"Typed Decision Table","maintainers":[{"name":"casago","email":"casagoooo@yahoo.co.jp"}],"readme":"# Typed Decision Table\n## Overview\nThis tool, written in Typescript, automates the generation of test cases in the form of a [Decision Table](https://www.visual-paradigm.com/product/articles/decision-table-explained/) from minimal inputs. There's no need to manually input each cell in the table.\n\nLeveraging the power of Typescript generics, the tool ensures that the generated test cases are typed according to your specifications. This feature facilitates the accurate handling of keys and values in any test code you write.\n\nFurthermore, not just the outputs but also some of the inputs are typed using generics, streamlining the process of preparing the necessary inputs.\n\nAdditional features of this tool include:\n\n- File output in JSON or Markdown format.\n- Support for the strength of the [Covering Array](https://math.nist.gov/coveringarrays/coveringarray.html).\n\n## Install\n`npm install tdt`\n\n## Example\nGenerate test cases as shown in the example below. The output is an array of objects, with each object representing a single test case.\n\n###### Example:\n```\nconst tests = generateTests({\n\tdomain,\n\tdefaults,\n\texclusions,\n\tperspectives,\n});\n\nconsole.log(tests)\n/*\n[\n\t{\n\t\t'Condition.User.IsRegistered': 'True',\n\t\t'Condition.User.IsAdmin': 'True',\n\t\t'Condition.Device': 'Mobile',\n\t\tExpectedResult: 'Failure',\n\t\tPerspective: 'Only registered users accessed from PC can access.',\n\t\tID: '1'\n\t},\n\t{\n\t\t'Condition.User.IsRegistered': 'True',\n\t\t'Condition.User.IsAdmin': 'True',\n\t\t'Condition.Device': 'PC',\n\t\tExpectedResult: 'Success',\n\t\tPerspective: 'Only registered users accessed from PC can access.',\n\t\tID: '2'\n\t},\n\t{\n\t\t'Condition.User.IsRegistered': 'True',\n\t\t'Condition.User.IsAdmin': 'False',\n\t\t'Condition.Device': 'Mobile',\n\t\tExpectedResult: 'Failure',\n\t\tPerspective: 'Only registered users accessed from PC can access.',\n\t\tID: '3'\n\t},\n\t{\n\t\t'Condition.User.IsRegistered': 'True',\n\t\t'Condition.User.IsAdmin': 'False',\n\t\t'Condition.Device': 'PC',\n\t\tExpectedResult: 'Success',\n\t\tPerspective: 'Only registered users accessed from PC can access.',\n\t\tID: '4'\n\t},\n\t{\n\t\t'Condition.User.IsRegistered': 'False',\n\t\t'Condition.User.IsAdmin': 'False',\n\t\t'Condition.Device': 'Mobile',\n\t\tExpectedResult: 'Failure',\n\t\tPerspective: 'Only registered users accessed from PC can access.',\n\t\tID: '5'\n\t},\n\t{\n\t\t'Condition.User.IsRegistered': 'False',\n\t\t'Condition.User.IsAdmin': 'False',\n\t\t'Condition.Device': 'PC',\n\t\tExpectedResult: 'Failure',\n\t\tPerspective: 'Only registered users accessed from PC can access.',\n\t\tID: '6'\n\t}\n]\n*/\n```\n\n## Usage\nTo generate test cases, you'll need the following inputs:\n\n1. Prepare arguments of `generateTests` function.\n\t1-1. Parameter domains (all potential values for the parameters).\n\t1-2. Default values for the parameters.\n\t1-3. Combinations of values to exclude.\n\t1-4. Testing perspectives.\n2. Call `generateTests` function.\n\n### 1. Prepare arguments of `generateTests` function\n#### 1-1. Parameter Domains\nList all potential values for every parameter associated with the test condition. This should also encompass expected results.\n\n###### Example:\n```\nconst domain = {\n\t\"Condition\":{\n\t\t\"User\":{\n\t\t\t\"IsRegistered\":[\n\t\t\t\t\"True\",\n\t\t\t\t\"False\"\n\t\t\t],\n\t\t\t\"IsAdmin\":[\n\t\t\t\t\"True\",\n\t\t\t\t\"False\"\n\t\t\t]\n\t\t},\n\t\t\"Device\":[\n\t\t\t\"Mobile\",\n\t\t\t\"PC\"\n\t\t]\n\t},\n\t\"ExpectedResult\":[\n\t\t\"Success\",\n\t\t\"Failure\",\n\t\t\"Any\"\n\t]\n} as const;\ntype ExampleDomain = typeof domain;\n```\nUnlike other inputs, this one isn't typed as a generic type. You have the flexibility to define its structure, provided it meets the necessary criteria. Based on this structure, the subsequent inputs (items `2.`, `3.`, and `4.`) will be automatically typed.\n\n#### 1-2. Default Values for the Parameters\nSpecify the default values for the parameters outlined in section `1.`. For each parameter, select a value from the list of potential values. These defaults are used when a parameter value isn't explicitly set in a test case.\n###### Example:\n```\nconst defaults : Defaults<ExampleDomain> = {\n\t\"Condition\":{\n\t\t\"User\":{\n\t\t\t\"IsRegistered\" : \"True\",\n\t\t\t\"IsAdmin\" : \"False\"\n\t\t},\n\t\t\"Device\":\"Mobile\"\n\t},\n\t\"ExpectedResult\":\"Any\"\n} as const;\n```\n\n#### 1-3. Combinations of Values to Exclude\nUse this to omit combinations of parameter values that are either impossible or lack significance. Multiple combinations can be excluded.\n###### Example:\n```\nconst exclusions:Exclusions<ExampleDomain> = [\n\t{\n\t\t\"Condition.User.IsRegistered\" : \"False\",\n\t\t\"Condition.User.IsAdmin\" : \"True\"\n\t}\n] as const;\n```\n\n#### 1-4. Testing Perspectives\nThis determines the approach for generating test cases. Typically, test cases should be formulated based on a specific perspective or focus. Hence, this tool generates all test cases in alignment with the provided perspectives.\n\n###### Example:\n```\nconst perspectives:Perspectives<ExampleDomain> = [\n\t{\n\t\t\"title\": \"Only registered users accessed from PC can access.\",\n\t\t\"constants\": {},\n\t\t\"variables\": [\n\t\t\t\"Condition.User.IsRegistered\",\n\t\t\t\"Condition.User.IsAdmin\",\n\t\t\t\"Condition.Device\",\n\t\t],\n\t\t\"expect\": (test:Test<ExampleDomain>)=>{\n\t\t\tif(\n\t\t\t\ttest[\"Condition.User.IsRegistered\"] === \"True\" &&\n\t\t\t\ttest[\"Condition.Device\"] === \"PC\"\n\t\t\t){\n\t\t\t\ttest[\"ExpectedResult\"] = \"Success\";\n\t\t\t}else{\n\t\t\t\ttest[\"ExpectedResult\"] = \"Failure\";\n\t\t\t}\n\t\t\treturn test\n\t\t},\n\t}\n] as const;\n```\n### 2. Call `generateTests` function\n```\nconst tests = generateTests({\n    domain,\n    defaults,\n    exclusions,\n    perspectives,\n});\nconsole.log(tests)\n```\n\n## Features\n### Export in JSON or Markdown Format\nBy setting certain options in the `generateTests` arguments, you can export the test cases to files.\n\n###### Example of setting an option:\n```:diff\nconst tests = generateTests({\n\tdomain,\n\tdefaults,\n\texclusions,\n\tperspectives,\n+\texport_option: {\n+\t\tjson:{\n+\t\t\tfile_path: '01.json',\n+\t\t},\n+\t\tmarkdown:{\n+\t\t\tfile_path: '01.md',\n+\t\t\ttrue_symbol: 'X',\n+\t\t\tfalse_symbol: '-'\n+\t\t}\n+\t}\n});\n```\n###### Example of a JSON file:\n```\n[\n\t{\n\t\t\"Condition.User.IsRegistered\": \"True\",\n\t\t\"Condition.User.IsAdmin\": \"True\",\n\t\t\"Condition.Device\": \"Mobile\",\n\t\t\"ExpectedResult\": \"Failure\",\n\t\t\"Perspective\": \"Only registered users accessed from PC can access.\",\n\t\t\"ID\": \"1\"\n\t},\n\t{\n\t\t\"Condition.User.IsRegistered\": \"True\",\n\t\t\"Condition.User.IsAdmin\": \"True\",\n\t\t\"Condition.Device\": \"PC\",\n\t\t\"ExpectedResult\": \"Success\",\n\t\t\"Perspective\": \"Only registered users accessed from PC can access.\",\n\t\t\"ID\": \"2\"\n\t},\n\t{\n\t\t\"Condition.User.IsRegistered\": \"True\",\n\t\t\"Condition.User.IsAdmin\": \"False\",\n\t\t\"Condition.Device\": \"Mobile\",\n\t\t\"ExpectedResult\": \"Failure\",\n\t\t\"Perspective\": \"Only registered users accessed from PC can access.\",\n\t\t\"ID\": \"3\"\n\t},\n\t{\n\t\t\"Condition.User.IsRegistered\": \"True\",\n\t\t\"Condition.User.IsAdmin\": \"False\",\n\t\t\"Condition.Device\": \"PC\",\n\t\t\"ExpectedResult\": \"Success\",\n\t\t\"Perspective\": \"Only registered users accessed from PC can access.\",\n\t\t\"ID\": \"4\"\n\t},\n\t{\n\t\t\"Condition.User.IsRegistered\": \"False\",\n\t\t\"Condition.User.IsAdmin\": \"False\",\n\t\t\"Condition.Device\": \"Mobile\",\n\t\t\"ExpectedResult\": \"Failure\",\n\t\t\"Perspective\": \"Only registered users accessed from PC can access.\",\n\t\t\"ID\": \"5\"\n\t},\n\t{\n\t\t\"Condition.User.IsRegistered\": \"False\",\n\t\t\"Condition.User.IsAdmin\": \"False\",\n\t\t\"Condition.Device\": \"PC\",\n\t\t\"ExpectedResult\": \"Failure\",\n\t\t\"Perspective\": \"Only registered users accessed from PC can access.\",\n\t\t\"ID\": \"6\"\n\t}\n]\n```\n###### Example of a Markdown file:\n|||#1|#2|#3|#4|#5|#6|\n|--|--|--|--|--|--|--|--|\n|Condition.User.IsRegistered|True|X|X|X|X|-|-|\n||False|-|-|-|-|X|X|\n|Condition.User.IsAdmin|True|X|X|-|-|-|-|\n||False|-|-|X|X|X|X|\n|Condition.Device|Mobile|X|-|X|-|X|-|\n||PC|-|X|-|X|-|X|\n|ExpectedResult|Success|-|X|-|X|-|-|\n||Failure|X|-|X|-|X|X|\n||Any|-|-|-|-|-|-|\n\n\n### Support for `strength` in Covering Array\nBy default, this tool generates all possible combinations of the `variables` defined in the `perspectives`. However, this can result in a significantly large number of test cases.\n\nTo mitigate this, you can set the `strength` for each `perspective`. By adjusting the `strength`, less relevant test cases will be filtered out. The `strength` value can range from `2` up to the total number of `variables` in the perspective. A lower `strength` value will yield fewer test cases.\n\nFor instance, if the `perspective` is structured as below, and there are `3` `variables`, the `strength` can be set anywhere between `2` and `3`.\n\n###### Example of setting the `strength`:\n```:diff\n{\n\t\"title\": \"Only registered users accessed from PC can access.\",\n\t\"constants\": {},\n\t\"variables\": [\n\t\t\"Condition.User.IsRegistered\",\n\t\t\"Condition.User.IsAdmin\",\n\t\t\"Condition.Device\",\n\t],\n\t\"expect\": (test:Test<ExampleDomain>)=>{\n\t\tif(\n\t\t\ttest[\"Condition.User.IsRegistered\"] === \"True\" &&\n\t\t\ttest[\"Condition.Device\"] === \"PC\"\n\t\t){\n\t\t\ttest[\"ExpectedResult\"] = \"Success\";\n\t\t}else{\n\t\t\ttest[\"ExpectedResult\"] = \"Failure\";\n\t\t}\n\t\treturn test\n\t},\n+\t\"strength\" : 2,\n}\n```\n","readmeFilename":"README.md"}