# StreamData: data generation and property testing for Elixir

**URL:** <https://forum.elixirforum.com/t/streamdata-data-generation-and-property-testing-for-elixir/7715>\
**Category:** Elixir News\
**Tags:** elixir-announcement\
**Created:** [August 11, 2017, 3:00pm UTC](https://forum.elixirforum.com/t/streamdata-data-generation-and-property-testing-for-elixir/7715 "2017-08-11T15:00:37Z")\
**Posts on this page:** 1\
**Showing post:** 11

<div class="post-metadata">

**Author:** ![whatyouhide](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/whatyouhide/32/28912_2.png) [@whatyouhide](https://forum.elixirforum.com/u/whatyouhide)\
**Post date:** [August 12, 2017, 6:13pm UTC](https://forum.elixirforum.com/t/streamdata-data-generation-and-property-testing-for-elixir/7715/11 "2017-08-12T18:13:01Z")

</div>

Sorry I forgot to answer the original 3 questions:

1. StreamData is pure Elixir, shrinks like Hypothesis/test.check (so the “good” way), it has a chance of getting merged into Elixir core, is integrated with ExUnit
2. There are many functions in `StreamData` to create custom generators. The basics are `bind/2`, `map/2`, `filter/3`, but there’s also `StreamData.gen all` which is syntactic sugar to create really easy to read generators.
3. The values are completely random but the testing is driven by a “generation size” (mentioned in the docs) which guarantees we start with smaller values which makes the chance of an empty list very very high

Let me know if you have more questions 🙂

---

_[View the full topic](https://forum.elixirforum.com/t/streamdata-data-generation-and-property-testing-for-elixir/7715)._
