Thanks for looking at Atrium, always good to see where people struggle and what they miss or in other words where Atrium should improve. For the readers, since the authors apparently missed a few points:
0. Atrium started in 2017 (first commit 08.01.2017) and not 2018
– take a look at https://github.com/robstoll/atrium/blob/main/apis/differences.md if you want to see the real difference between fluent and infix
– Atrium has no extra way to deal with exceptions, every time your subject is a lambda you can use toThrow/notToThrow
– in contrast to other assertion libraries you can fluently assert on the exception and don’t need to start over by extract the result to a variable. An exception is strikt which is not a surprise as strikt was heavily influenced by Atrium (exception syntax, narrowing, feature, grouping) — though they don’t mention it on their page anymore 🙁
2. Supported Types:
– There are out of the box functions for Comparables also in 0.17.0, you even used them in your toBeBetween example 😉
But you are right, we haven’t added support (yet) for types which we never use. But we provide conversion methods such asPath for File and I am going to do the same for Date (was not expecting that anyone is still using java.utilDate as it is pretty much discouraged by anyone). Please state your wishes here: https://github.com/robstoll/atrium/discussions/categories/ideas we happily implement more functions if needed
thanks for your comment, I’ve made some corrections, hopefully you’ll find the blog more accurate now.
To answer your specific points:
0. That’s fixed. I must’ve miscounted when looking at the numbers in the git log.
1. I’ve added a link to the api documentation. With exceptions I was more missing access to their fields. In hindsight I suppose that this could be arranged using “feature”, which I still think is a pretty heavy syntax if all I want is some custom error code or description from my Exception class.
2. That is an understandable point of view as a maintainer, but as a user I wouldn’t want to go through the process of opening an issue, waiting on an implementation, and then updating my dependencies. At least not for my work where I mostly deal with heavy enterprise projects, and not for something that in the end is as basic a component as an assertions library. Maybe a couple years ago, but I’ve got too many meetings nowadays 😛
I wouldn’t *want* to use Dates either, but sometimes that’s all you get, and in those cases I think it is very convenient to have a few extras beyond just Comparable, like an ‘isBetween(lo, hi)’.