Moved the non-unit tests to the "deque_test" package. The tests <https://github.com/ef-ds/deque>, package-wise, look as they should now. Thanks Robert for the suggestion. :-)
On Mon, Nov 26, 2018 at 2:01 PM robert engels <reng...@ix.netcom.com> wrote: > It’s funny though, if you look at the container/ring tests, they test the > internal structure, but there are no tests of the behavior, so if the data > structure design is not correct, the tests will pass but the operations may > not work as expected (especially after a refactor). A case of I know what > should happen… > > And then some public methods like Do()/Move() are not tested at all. > > > On Nov 26, 2018, at 3:43 PM, robert engels <reng...@ix.netcom.com> wrote: > > My “none” looks to have been a little strong… Clearly whoever wrote the > container package believes in testing as the OP. A more in-depth review > shows other packages with similar “private tests”, but typically they seem > to be testing the public API only. Then there are packages like sync that > have no private tests… > > It appears there is no standard in the stdlib as far as this goes :) > > Like I said, it is my opinion, and I’m sure others feel differently. It’s > served me well - mileage may vary. > > On Nov 26, 2018, at 3:32 PM, Dan Kortschak <dan.kortsc...@adelaide.edu.au> > wrote: > > container/ring (a arguably non-idiomatic stdlib package does indeed > contain this kind of test). It also does not have in code asserts, > which are something that I've found to be very rare in Go code. > > On Mon, 2018-11-26 at 12:09 -0600, robert engels wrote: > > I am just offering, and many would disagree, that unit tests that > like are brittle and not worthwhile. I don’t see them in the Go > stdlib for major packages, but I could be wrong. > > My thought on this is that if you are testing the nitty details of > the implementation, you need to get that “correct” twice - and if it > is failing, you don’t really know which one is wrong… This is > especially problematic as things are refactored - all of those types > of tests break. > > I’m of the opinion - test the behavior comprehensively, and expose > the expected usage (and corresponding design) there. > > > On Nov 26, 2018, at 11:58 AM, Christian Petrin <christianpetrin@gma > il.com> wrote: > > Hi Robert, > > the deque has unit, integration and API tests. The unit tests, I > agree, are hard to follow as they have to check all internal > properties to make sure the code is doing what it is supposed to do > (keep a well formed ring linked list during all steps). Given their > nature (unit tests), the only way to access the internal deque > variables is to have them in the same package. > > Regarding the other, API and integration tests, I agree 100%. They > should be in the dequeue_test package as they are not supposed to > access (or know of) any of the deque internal variables. I'll move > these tests to a different file in the dequeue_test package. > > Really appreciate the suggestion (correction, really). > > Thanks, > Christian > > > > > On Mon, Nov 26, 2018 at 9:42 AM robert engels <reng...@ix.netcom.co > m <mailto:reng...@ix.netcom.com <reng...@ix.netcom.com>>> wrote: > Just an FYI, IMO your testing is incorrect. > > Your tests should be in a package dequeue_test so that they cannot > access the internal details. This makes them brittle and hard to > follow. > > For reference, look at the Go stdlib sync/map.go and > sync/map_test.go. All of the tests are in sync_test for all of the > structs/methods. > > > > On Nov 26, 2018, at 10:59 AM, Christian Petrin <christianpetrin@g > mail.com <mailto:christianpet...@gmail.com <christianpet...@gmail.com>>> > wrote: > > Hello, > > I'm working on a logging system called CloudLogger <https://githu > b.com/cloud-logger/docs> and to cut to the chase, CloudLogger > needs an unbounded in-memory queue. The idea is to use the queue > as a sequential data store. As there's no telling beforehand how > much data will need to be stored, the queue has to be able to > scale to support large amounts of data, so CloudLogger needs an > unbounded queue, a very fast and efficient one. > > Noticing Go doesn't offer an unbounded queue implementation, I > came up with an idea to build a queue based on linked slices. > > I was so impressed with the results that I decided to spend some > time researching about other queue designs and ways to improve > it. I'm finally done with the research and I feel like the new > queue is worth being considered to be part of the standard > library. > > So please take a look at the issue. All suggestions, questions, > comments, etc are most welcome! > > Due to many suggestions, I have deployed the deque as a proper > external package. In order to help validate the deque and get it > into the standard library, I need to somehow get people to start > using it. If you are using a queue/stack/deque, please consider > switching to the new deque. Also if you know someone who is using > a queue/stack/deque, please let them know about the deque. > > I'm extremely interested in improving the queue and I love > challenges. If you suspect there's a possibly better design or a > better, more performant and balanced deque implementation out > there, please let me know and I'm very glad to benchmark it > against deque. > > Proposal: https://github.com/golang/go/issues/27935 > <https://github.com/golang/go/issues/27935> > Deque package: https://github.com/ef-ds/deque > <https://github.com/ef-ds/deque> > > Thanks, > Christian > > -- > You received this message because you are subscribed to the > Google Groups "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, > send an email to golang-nuts+unsubscr...@googlegroups.com > <mailto:golang-nuts+unsubscr...@googlegroups.com > <golang-nuts+unsubscr...@googlegroups.com>>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > > > -- > Thanks, > Christian > > -- > CRICOS provider code 00123M > > > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > > > -- Thanks, Christian -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.