{ "info": { "author": "Gary Wilson Jr.", "author_email": "gary.wilson@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "============\n``inputgen``\n============\n\n\nAbout\n=====\n\n``inputgen`` is a Python package that provides automated input generation,\nuseful for bounded exhaustive testing and the generation of complex data\nstructures for test inputs.\n\nThis tool was originally created as a class project |---| Verification and\nValidation of Software with professor `Sarfraz Khurshid`_ |---| and is largely\nmodeled after Korat_ and its `related research`_. Korat is an input generation\ntool for Java programs.\n\nOfficial documentation, other than this readme, is currently lacking; however,\nthe associated `class paper`_ provides a detailed description the\nimplementation and related research.\n\n.. _Sarfraz Khurshid: http://users.ece.utexas.edu/~khurshid/\n.. _Korat: http://korat.sourceforge.net/\n.. _related research: http://korat.sourceforge.net/publications.html\n.. _class paper: https://bitbucket.org/gdub/python-inputgen/raw/default/docs/paper.pdf\n\n\nFeatures\n========\n* Uses multiple processes to speed input generation.\n* Search space pruning:\n\n * *Backtracking* - The generated objects are instrumented to record the order\n of their field accesses, which occurs while checking the well-formedness of\n their structure in the defined predicate. Upon rejection of an input\n combination, alternative values are first tried on the last-accessed\n field(s).\n\n This feature is enabled by default, and can be disabled by setting\n ``enable_backtracking=False`` when instantiating a ``Factory`` object.\n\n * *Non-isomorphic generation* - Only objects with unique structure are\n generated. Two inputs are isomorphic_, or identical in structure, if their\n object graphs reachable from the root object are isomorphic.\n\n For example, if building a binary tree of size two, using five possible\n node objects, then there are only two possible valid, non-isomorphic\n structures |---| a root node and left child, or a root node and right\n child.\n\n This feature is enabled by default, and can be disabled by setting\n ``enable_iso_breaking=False`` when instantiating a ``Factory`` object.\n\n.. _isomorphic: http://en.wikipedia.org/wiki/Isomorphism\n\n\nRequirements and Installation\n=============================\n\n``inputgen`` requires Python 2.5 or later. If using Python 2.6, ``inputgen``\nwill install and make use of the `stand-alone ordereddict`_ package. If using\nPython 2.5, ``inputgen`` will additionally install and make use of the\n`stand-alone multiprocessing`_ package.\n\nTo install ``inputgen`` and required dependencies, run::\n\n pip install inputgen\n\nThe source can be found here: https://bitbucket.org/gdub/python-inputgen/\n\n\n.. _stand-alone ordereddict: http://pypi.python.org/pypi/ordereddict/\n.. _stand-alone multiprocessing: http://pypi.python.org/pypi/multiprocessing/\n\n\nExample\n=======\n\nBelow is a simple example. For more examples, see the ``inputgen/examples/``\ndirectory.\n\nGiven the following code::\n\n import inputgen\n\n class SquareTest(inputgen.TestCase):\n\n @staticmethod\n def repOK(factory):\n return True\n\n @staticmethod\n def fin(min=0, max=10):\n f = inputgen.Factory(enable_backtracking=False,\n enable_iso_breaking=False)\n f.set('number', range(min, max))\n return f\n\n def run_method(self, factory):\n num = factory.number\n self.assertEqual(num * num, num ** 2)\n\n if __name__ == \"__main__\":\n import unittest\n unittest.main()\n\nSave the code to a file named ``square.py`` and then run the unit test::\n\n python square.py\n\nWhen run, ``inputgen`` will generate all possible combinations of the\nfinitized fields. In the example above this will produce ten combinations,\nwith a single field (``number``) ranging from 0 to 9.\n\n\n.. |---| unicode:: U+2014 .. em dash, trimming surrounding whitespace\n :trim:", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/gdub/python-inputgen", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "inputgen", "package_url": "https://pypi.org/project/inputgen/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/inputgen/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://bitbucket.org/gdub/python-inputgen" }, "release_url": "https://pypi.org/project/inputgen/0.7.1/", "requires_dist": null, "requires_python": null, "summary": "Tool for automated input generation, useful for bounded exhaustive testing and the generation of complex data structures for test inputs.", "version": "0.7.1" }, "last_serial": 761353, "releases": { "0.7.1": [ { "comment_text": "", "digests": { "md5": "1d951440474056f0ce660cfa374a022a", "sha256": "782265845babd1560fe5469a8d635bd304262ff7c37372d2c079f3e4dc8d0c58" }, "downloads": -1, "filename": "inputgen-0.7.1.tar.gz", "has_sig": false, "md5_digest": "1d951440474056f0ce660cfa374a022a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 224751, "upload_time": "2011-07-12T19:20:50", "url": "https://files.pythonhosted.org/packages/52/9f/4de57c0a82fad47563c8a14e4c1dae3f75935a105f555d8fae31829d9c9a/inputgen-0.7.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1d951440474056f0ce660cfa374a022a", "sha256": "782265845babd1560fe5469a8d635bd304262ff7c37372d2c079f3e4dc8d0c58" }, "downloads": -1, "filename": "inputgen-0.7.1.tar.gz", "has_sig": false, "md5_digest": "1d951440474056f0ce660cfa374a022a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 224751, "upload_time": "2011-07-12T19:20:50", "url": "https://files.pythonhosted.org/packages/52/9f/4de57c0a82fad47563c8a14e4c1dae3f75935a105f555d8fae31829d9c9a/inputgen-0.7.1.tar.gz" } ] }