moreover:
- also change description in reporting from `to be` to `to equal`
- don't provide a replacement for BigDecimal, it is a smell if someone
uses it.
moreover:
- make the distiction between toEqual and toBeEqualComparingTo clearer
- rewrite ComparableExpectationsSpec to new nameing and include test
cases for toBeLessThanOrEqualTo and toBeGreaterThanOrEqualTo where
the equals/compareTo contract is broken
moreover:
- do no longer provide an overload for Char for toStartWith and
toEndsWith. I prefer to have less API methods and less maintenance
compared to a nice to have. Which also means I prefer to force users
to write "a" over 'a' than more maintenance, more API methods
we cannot yet remove it because we still have addAssertion on Expect
and if we remove it, would also have one on AssertionContainer. Two
different definitions which would not work together. This also means:
- deprecate addAssertion/addAssertionsCreatedBy/createAndAddAssertion
in Expect, add append... to AssertionContainer
moreover:
- adjust packages.md, also remove deprecaed modules there and remove
documentation which is no longer used
- remove createRegisterJsServicesTask in build.gradle
- adjust bbc/bc due to breaking changes (removal of different types).
in the same go we have to forgive bc for infix as we no longer have
ReporterFactory and since we don't use ascii bullet points in infix
tests any more since 0.16.0 - we have established own tests for this
aspect
- rename RealTranslatorIntSpec to TranslatorIntSpec and remove the
existing TranslatorIntSpec which was intended for ReporterFactory
based implementations.
getImpl will be used in the future to create ProofFactory related types.
We will most likely rename it but it has a different purpose than
components. I think it will be much less likely that components are
actually exchanged where a user needs to define an own assertion verb to
do so. On the other hand, I could imagine that one wants to provide
an own implementation for a ProofFactory, e.g. to override one
particular expectation function, where with getImpl one is decoupled
from the assertion verb and instead provides an extension function
on the logic level.
instead of only one. Moreover, use an explanatory assertion group with
a warning group type. Looks then as follows:
expected that subject: /tmp/spek16789805802838758490/notEmpty (sun.nio.fs.UnixPath <1842823132>)
◆ is: an empty directory
❗❗ directory contains:
⚬ f5 (sun.nio.fs.UnixPath <1295966993>)
⚬ f2 (sun.nio.fs.UnixPath <878629898>)
⚬ f3 (sun.nio.fs.UnixPath <1318008636>)
⚬ f0 (sun.nio.fs.UnixPath <452118766>)
⚬ f1 (sun.nio.fs.UnixPath <552502986>)
⚬ f8 (sun.nio.fs.UnixPath <1657993305>)
⚬ f9 (sun.nio.fs.UnixPath <1439892968>)
⚬ f4 (sun.nio.fs.UnixPath <1508512260>)
⚬ f6 (sun.nio.fs.UnixPath <224794405>)
⚬ f7 (sun.nio.fs.UnixPath <2013476576>)
⚬ ...
moreover:
- cleanup samples, isNotEmptyDirectory should actually be in
isEmptyDirectory because we might have a isNotEmptyDirectory in the
future. Same same for isSymbolicLink.
- move PathAssertionSamples also to deprecated package
- rename toBeASymbolicLink to isSymbolicLink for now. Will do the rename
once we rename all
-
ComponentFactory because we need a way to say we want kind of a
singleton which is re-used in this ComponentFactoryContainer.
We cannot / don't want to make guarantees about creating a singleton
only once, i.e. use computeIfAbsent or similar, because it would mean
we cannot have a singleton component which depends on another
singleton component.
We try at least to create a singleton as less as possible. For this to
work:
- introduce ComponentFactory (as already mentioned)
- let ComponentFactoryContainer.getFactoryOrNull and
getFactoryForChainedOrNull return a ComponentFactory instead of a
simple function
- introduce ConcurrentMap as polyfill
moreover:
- deprecate get/setAtriumProperty and ReporterFactory
- deprecate all Translator and AssertionFormatter specific stuff in
core-robstoll-lib and move to core
- configure replacements in DefaultComponentFactoryContainer
- get rid off most ReporterFactories only keep DefaultReporterFactory
which we will remove with 0.17.0
- rename RemoveRunnerAtriumError to RemoveRunnerFromAtriumError
- move text specific AssertionFormatter to package `text` as preparation
for further AssertionFormatters (like html)
- introduce RealTranslatorIntSpec which makes use of
ComponentFactoryContainer instead of ReporterFactory
moreover:
- deprecate newMethodCallFormatter in CoreFactory
- introduce a descriptionProvider for Feature and FeatureWithCreator
in api-infix.
- deprecate the usage of `description` accordingly
moreover:
- rename collectForDifferentSubject to collectBasedOnSubject
- use DefaultComponentFactoryContainer only in RootExpectImpl and
deprecated which we don't intend to adjust
- no longer use atriumErrorAdjustor from Reporter but from the
ComponentFactoryContainer in all other places
In order that one is able to exchange a component which is part of
another component, we need to following to change:
- introduce a ComponentFactoryContainer which stores all factories
and provide a way to re-define factories
- add val components to AssertionContainer which returns the specified
ComponentFactoryContainer
- remove withReporter from RootExpectBuilder.OptionsChooser and instead
add a more generic withComponent (and withChainedComponent)
- use AtriumErrorAdjustor not from Reporter (deprecated the property)
but retrieve it from the ComponentFactoryContainer of the
corresponding AssertionContainer
moreover:
- introduce @ExperimentalComponentFactoryContainer
- deprecated the AtriumErrorAdjuster creating functions in CoreFactory
- replace usages accordingly