If the tests are internal, you technically needs tests for the tests - based on LOC there is more logic in the tests to “be correct” than actual lines of code.
That is a snowballing problem if you ask me… If the code needs 3x LOC for “internal tests”, its a sign that the actual code is too complex / poorly designed / structured. Public API tests are a completely different thing, as their logic is documented by the public API. Again, JMO. > On Nov 27, 2018, at 7:55 PM, Freddy Martinez <freddy311...@gmail.com> wrote: > > Sorry Chris, I haven’t seen the code + tests, I don’t think that having x > lines of code and 2x lines for test code is a problem, in fact, if you use > TDD this is very common because you’ll have a looot of line code in your > tests because this is how TDD works… > > Why is this an issue ? > > Again, I haven’t seen the code, but IMHO, I don’t think that there is a limit > in the number line of code in your tests. > > Regards > > > ============================================= > Freddy Martínez García > Software Engineer > B.S. Computer Science > LinkedIn: https://ar.linkedin.com/in/freddy-martinez-garcia-47157259 > <https://ar.linkedin.com/in/freddy-martinez-garcia-47157259> > > “If you give someone a program, you will frustrate them for a day; > if you teach them how to program, yo will frustrate them for a lifetime.” > > David Leinweber > > On 27 November 2018 at 22:20:25, Christian Petrin (christianpet...@gmail.com > <mailto:christianpet...@gmail.com>) wrote: > >> 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 >> <mailto: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 >>> <mailto: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 >>> <mailto: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 >>>> <mailto: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 >>>>> <mailto: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 <http://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 >>>>>>> <mailto:reng...@ix.netcom.co> >>>>>>> m <mailto:reng...@ix.netcom.com <mailto: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 <http://mail.com/> <mailto:christianpet...@gmail.com >>>>>>>> <mailto:christianpet...@gmail.com>>> wrote: >>>>>>>> >>>>>>>> Hello, >>>>>>>> >>>>>>>> I'm working on a logging system called CloudLogger <https://githu >>>>>>>> <https://githu/> >>>>>>>> b.com/cloud-logger/docs <http://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> >>>>>>>> <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> >>>>>>>> <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> >>>>>>>> <mailto:golang-nuts+unsubscr...@googlegroups.com >>>>>>>> <mailto:golang-nuts+unsubscr...@googlegroups.com>>. >>>>>>>> For more options, visit https://groups.google.com/d/optout >>>>>>>> <https://groups.google.com/d/optout> >>>>>>>> <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 >>>> <mailto:golang-nuts+unsubscr...@googlegroups.com>. >>>> For more options, visit https://groups.google.com/d/optout >>>> <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 >> <mailto:golang-nuts+unsubscr...@googlegroups.com>. >> For more options, visit https://groups.google.com/d/optout >> <https://groups.google.com/d/optout>. > -- 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.