FYI, I have released deque version 1.0.1 <https://github.com/ef-ds/deque/blob/master/CHANGELOG.md>. Turns out there was a bug related to spared links. I really appreciate the help, Roger (@rogpeppe), for pointing out and helping fix the bug.
On Mon, Nov 26, 2018 at 8:07 PM robert engels <reng...@ix.netcom.com> wrote: > No problem, but just one last word on this… > > You have 748 lines of internal unit tests and only 295 lines of actual > code.. This IMO does not lend itself to maintainable & flexible code. If > your 295 lines needs 748 to verify its correctness something is wrong. You > have an additional 400 lines of integration tests - if those are full > coverage they should be more than enough IMO, but again, just something to > think about and to each his own. > > > > On Nov 26, 2018, at 9:56 PM, Christian Petrin <christianpet...@gmail.com> > wrote: > > 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 > > > -- 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.