Torben, I will put together an eunit test for add in ec_dictionary by tomorrow. And then we can move from there.
Eric On Mon, Mar 21, 2011 at 5:57 PM, Torben Hoffmann <[email protected]> wrote: > Hi again, > > Manolis helped me debug a very stupid thing on my side, so now we have a > running property based test suite for ec_dictionary that tests ec_gb_trees > for now. > > Action plan - not necessarily in strict order, but close and some items can > be repeated as desired... > > receive a description of how to do a unit test of ec_dictionary:add/2. > write a description of how a property based test of ec_dictionary:add/2 > looks like and how it differs from unit testing. > receive suggestions for new properties from the group - I will help turn > them into correct properties. > make it possible to test different ec_dictionary implementations. > figure out (with the help of Manolis) how to use the Auto-ADT functionality. > enhance the description with how to use Auto-ADT. > support others in applying PropEr on selected modules in the Erlware suite. > be happy. > > Cheers, > Torben > > > On Mon, Mar 21, 2011 at 20:57, Torben Hoffmann <[email protected]> > wrote: >> >> >> On Mon, Mar 21, 2011 at 16:11, Eric Merritt <[email protected]> >> wrote: >>> >>> I went a bit nuts over the weekend and pulled Robert Virding's rbtree >>> implementation and changed it to be a native implementation of our >>> dictionary. I wanted something a bit more complex then the assoc list >>> stuff. >> >> Walking on fire... but that is also where the fun is!! >> >>> >>> Most of us don't have much experience with quick check, proper or >>> property based testing. We are using this opportunity to go through >>> and figure it all out so we can start using it. Is there any chance >>> you could go through this first test and give some specific >>> documentation of what is going on in each case? Then I will try to add >>> some tests to it myself and see how it goes. >> >> I have given a bit of thought to this too, and I think that if I get get a >> good explanation of how one of you guys would test the ec_dictionary:add/2 >> function then I could explain what the differences are when doing it with >> property based testing. I think that would be a good context for >> understanding how the two approaches differ and how property based testing >> provides more value. >> >> Does this make sense? >> >>> >>> More inline: >>> >>> On Sun, Mar 20, 2011 at 10:53:04PM +0100, Torben Hoffmann wrote: >>> > Hi, >>> > >>> > I have added more properties to test/ec_dictionary_proper - >>> > >>> > [1]https://github.com/lehoff/erlware_commons/blob/master/test/ec_dictionary_proper.erl >>> > >>> > I would encourage you all to go a and look and them and send me >>> > suggestions to new thing to be tested for a dictionary. >>> > >>> > I have run into a problem where it seems that PropEr is able to >>> > create a >>> > dictionary based on gb_trees where the same key is present more than >>> > once. >>> > That is bad(tm). >>> > Unfortunately I have not been able to work well enough with PropEr >>> > to get >>> > a sequence of operations out that shows how it actually created such >>> > an >>> > instance of gb_trees, but when I do I will explain the finding in >>> > details. >>> >>> Our 'add' maps to the gb_trees enter function. According to the docs >>> it should insert if the key doesn't exist or update if the key >>> exists. Could this be a key equality problem. That is =:= vs ==, I >>> suspect not since you are using integers for the keys but it doesn't >>> hurt to ask the obvious questions. >> >> Hmmm, that is actually something that I did not pay attention to. It won't >> do any harm with the integers I am using now, but for others it could be an >> issue, so I will think about how this is tested the best. >> >> Cheers, >> Torben >> >>> >>> > The failing property is called prop_to_list_mathes_get() and it >>> > tries to >>> > compare the output of ec_dictionary:to_list to the output of using >>> > ec_dictionary:get/2 on all the keys in the to_list output. >>> > They are not the same in some cases due to the gb_trees thing above. >>> > >>> > Most likely I am doing something extremely stupid, but it could be >>> > fun if >>> > there was a subtle bug in gb_trees... or maybe the right word is >>> > scary... >>> > >>> > Cheers, >>> > Torben >>> > -- >>> > [2]http://www.linkedin.com/in/torbenhoffmann >>> > >>> > References >>> > >>> > Visible links >>> > 1. >>> > https://github.com/lehoff/erlware_commons/blob/master/test/ec_dictionary_proper.erl >>> > 2. http://www.linkedin.com/in/torbenhoffmann >>> >>> -- >>> Eric Merritt >>> Erlang & OTP in Action (Manning) http://manning.com/logan >>> http://twitter.com/ericbmerritt >>> http://erlware.org >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "erlware-dev" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/erlware-dev?hl=en. >>> >> >> >> >> -- >> http://www.linkedin.com/in/torbenhoffmann > > > > -- > http://www.linkedin.com/in/torbenhoffmann > -- You received this message because you are subscribed to the Google Groups "erlware-dev" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/erlware-dev?hl=en.
