{ "info": { "author": "Kenn Knowles", "author_email": "kenn.knowles@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: Apache Software License", "Topic :: Software Development :: Testing" ], "description": "DoubleCheck\n===========\n\nA library for property-based testing in two different ways:\n\n1. \"QuickCheck\" - randomly generated inputs\n2. \"SmallCheck\" - exhaustively enumerated inputs\n\nThese testing approaches are named for the pioneering Haskell libraries. The two\napproaches truly shine when used together - once a property is found to be\nrefutable by some probably-huge-and-crazy random input, it is often worth investing \nthe CPU time to find the _smallest_ counterexample.\n\nThis library is a brand new work-in-progress (see commit log for dates) with known\nissues:\n\n - Does not have randomly generated strings just yet.\n - No existential quantification yet, but smallcheck does allow it!\n - Needs more thorough testing.\n - Needs to be able to test that a property always throws an exception.\n - Needs lots more combinators.\n - Needs one-liner interface rather than checking status of test cases.\n\n\nInstallation & Usage\n--------------------\n\n(TODO: Describe in more detail. For now, read doublecheck/gen.py and doublecheck/prop.py)\n\n $ pip install doublecheck\n $ python\n >>> from doublecheck import * \n >>> ForAll(lambda i: i > 0, PosInts()).quickcheck(100000).status\n 'Certain'\n\n\nFurther Reading & Related Projects\n----------------------------------\n\nThe original libraries.\n\n - [QuickCheck]() ([mirrored on github](https://github.com/darcs-mirrors/QuickCheck) if you'd like to fork it)\n - [SmallCheck and Lazy SmallCheck](http://www.cs.york.ac.uk/fp/smallcheck/) ([also on github](https://github.com/feuerbach/smallcheck))\n\nThere are also already a few python libraries inspired by QuickCheck. None seem to take\nthe approach of a full port, and certainly none include SmallCheck-style exhaustive testing.\n\n - [PayCheck](https://github.com/markchadwick/paycheck) \n - [qc.py](https://github.com/dbravender/qc)\n\nEssentially every language has multiple implementations.\nHere are some that I think are worth checking out.\n\n - [ScalaCheck](https://github.com/rickynils/scalacheck) (Scala)\n - [jsqc](https://github.com/sakari/jsqc) (JavaScript) \n - [QueenCheck](https://github.com/rosylilly/QueenCheck) (Ruby)\n - [Rantly](https://github.com/hayeah/rantly) (Ruby)\n - [Triq](https://github.com/krestenkrab/triq) (Erlang)\n\n\nCopyright & License\n-------------------\nCopyright 2012- Kenneth Knowles\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed\nunder the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the License for the\nspecific language governing permissions and limitations under the License.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kennknowles/python-doublecheck", "keywords": null, "license": "Apache 2.0", "maintainer": null, "maintainer_email": null, "name": "doublecheck", "package_url": "https://pypi.org/project/doublecheck/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/doublecheck/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/kennknowles/python-doublecheck" }, "release_url": "https://pypi.org/project/doublecheck/0.1pre2012-05-08T10-05-14/", "requires_dist": null, "requires_python": null, "summary": "Pythonic library for QuickCheck-style randomized testing and SmallCheck-style exhaustive testing of the same test suite.", "version": "0.1pre2012-05-08T10-05-14" }, "last_serial": 746976, "releases": { "0.1pre2012-05-08T09-56-16": [], "0.1pre2012-05-08T09-56-48": [], "0.1pre2012-05-08T09-57-07": [], "0.1pre2012-05-08T09-57-27": [ { "comment_text": "", "digests": { "md5": "de6c62a2159badab2f93f2cfdb163eba", "sha256": "5badc6704a8e1d6cadd2db5342086e8fd7e13117a33c29fbe1cbcedf9e7757c0" }, "downloads": -1, "filename": "doublecheck-0.1pre2012-05-08T09-57-27.tar.gz", "has_sig": false, "md5_digest": "de6c62a2159badab2f93f2cfdb163eba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4775, "upload_time": "2012-05-08T11:57:39", "url": "https://files.pythonhosted.org/packages/22/8f/a1098b3523c1130d8c5d1fefb2bdb9e243a5b8bf10d3867c21ad3e487b51/doublecheck-0.1pre2012-05-08T09-57-27.tar.gz" } ], "0.1pre2012-05-08T10-01-13": [ { "comment_text": "", "digests": { "md5": "53f8dd3e7006a84c11a763480aa93f9d", "sha256": "3317173e8d297d327bdff268e3b78c5ffb791d66dea3569abed25ff25765306c" }, "downloads": -1, "filename": "doublecheck-0.1pre2012-05-08T10-01-13.tar.gz", "has_sig": false, "md5_digest": "53f8dd3e7006a84c11a763480aa93f9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4806, "upload_time": "2012-05-08T12:01:13", "url": "https://files.pythonhosted.org/packages/08/77/c4a44bd4322e0df6bd5cf313c22d9dee9cfa7068626dc12706b3f0000972/doublecheck-0.1pre2012-05-08T10-01-13.tar.gz" } ], "0.1pre2012-05-08T10-05-14": [ { "comment_text": "", "digests": { "md5": "f82b287d670430836e823bbe3d2143f6", "sha256": "61a071e1f1e609607a8394a220a6ad09d290e504266c61328883646ca27bbe53" }, "downloads": -1, "filename": "doublecheck-0.1pre2012-05-08T10-05-14.tar.gz", "has_sig": false, "md5_digest": "f82b287d670430836e823bbe3d2143f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5057, "upload_time": "2012-05-08T12:05:14", "url": "https://files.pythonhosted.org/packages/af/1b/2c476929a1847655ff6c844585a9ba3d8acf5488cefdc162c4c690485bd7/doublecheck-0.1pre2012-05-08T10-05-14.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f82b287d670430836e823bbe3d2143f6", "sha256": "61a071e1f1e609607a8394a220a6ad09d290e504266c61328883646ca27bbe53" }, "downloads": -1, "filename": "doublecheck-0.1pre2012-05-08T10-05-14.tar.gz", "has_sig": false, "md5_digest": "f82b287d670430836e823bbe3d2143f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5057, "upload_time": "2012-05-08T12:05:14", "url": "https://files.pythonhosted.org/packages/af/1b/2c476929a1847655ff6c844585a9ba3d8acf5488cefdc162c4c690485bd7/doublecheck-0.1pre2012-05-08T10-05-14.tar.gz" } ] }