From 9c74466778afe290e4446c8b4bccbeb865a1e178 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Fri, 6 Mar 2026 21:34:20 +0100 Subject: [PATCH] Tests: build an link a test-support library MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is something I wanted to clean-up since a very long time indeed, but always postponed it, since it requires a lot of nasty clean-up and disentangling.... Several parts had been stashed away into `src/lib/test`, which are not really related: * the testrunner and testsuite builder * generic helper utilities * specialised test-support facilities, e.g. the EventLog This changeset introduces a new top-level test folder and a namespace `::test` Code from this folder is linked into a shared library `libtestsupport.so`, which resides in the linkage hierarchy between »Vessel« and »Vault«, yet is no longer part of the Lumiera application and only linked into the test-suite. --- doc/technical/infra/TestSupport.txt | 2 +- research/try.cpp | 8 +- src/SConscript | 6 +- src/lib/diff/test-mutation-target.hpp | 6 +- src/lib/format-obj.cpp | 2 +- src/lib/random.cpp | 21 +++ src/lib/random.hpp | 8 + src/stage/dialog/test-control.hpp | 4 +- src/steam/engine/feed-manifold.hpp | 2 +- src/steam/engine/weaving-pattern-builder.hpp | 2 +- src/steam/mobject/test-dummy-mobject.hpp | 2 +- src/test/DIR_INFO | 1 + src/{lib => }/test/diagnostic-output.hpp | 13 +- src/{lib => }/test/event-log.cpp | 6 +- src/{lib => }/test/event-log.hpp | 25 +-- src/{lib => }/test/microbenchmark-adaptor.hpp | 9 +- src/{lib => }/test/microbenchmark.hpp | 12 +- src/{lib => }/test/run.hpp | 10 +- src/{lib => }/test/suite.cpp | 5 +- src/{lib => }/test/suite.hpp | 6 +- src/{lib => }/test/temp-dir.hpp | 17 +- src/{lib => }/test/test-coll.hpp | 19 +-- src/{lib => }/test/test-helper.cpp | 24 +-- src/{lib => }/test/test-helper.hpp | 83 +++++---- src/{lib => }/test/test.h | 6 +- src/{lib => }/test/testoption.cpp | 4 +- src/{lib => }/test/testoption.hpp | 6 +- src/{lib => }/test/tracking-allocator.cpp | 9 +- src/{lib => }/test/tracking-allocator.hpp | 13 +- src/{lib => }/test/tracking-dummy.hpp | 15 +- src/{lib => }/test/transiently.hpp | 11 +- tests/00support.tests | 18 +- tests/15library.tests | 4 +- tests/16calculation.tests | 2 +- tests/43session.tests | 94 +++++------ tests/SConscript | 14 +- tests/basics/call-queue-test.cpp | 2 +- .../basics/dependency-configuration-test.cpp | 4 +- tests/basics/dependency-factory-test.cpp | 2 +- tests/basics/diagnostic-context-test.cpp | 4 +- tests/basics/singleton-subclass-test.cpp | 4 +- tests/basics/singleton-test.cpp | 2 +- tests/basics/singleton-testmock-test.cpp | 2 +- tests/basics/stream-type-basics-test.cpp | 2 +- tests/basics/stream-type-lifecycle-test.cpp | 2 +- tests/basics/test-target-obj.hpp | 2 +- .../time/digxel-configurations-test.cpp | 4 +- tests/basics/time/digxel-test.cpp | 4 +- tests/basics/time/format-support-test.cpp | 2 +- tests/basics/time/quantiser-basics-test.cpp | 5 +- tests/basics/time/time-basics-test.cpp | 4 +- tests/basics/time/time-control-test.cpp | 4 +- tests/basics/time/time-dropframe-test.cpp | 4 +- tests/basics/time/time-formats-test.cpp | 4 +- tests/basics/time/time-mutation-test.cpp | 4 +- tests/basics/time/time-parsing-test.cpp | 4 +- tests/basics/time/time-quantisation-test.cpp | 4 +- tests/basics/time/time-value-test.cpp | 4 +- tests/basics/typed-counter-test.cpp | 12 +- tests/basics/typed-family-member-id-test.cpp | 2 +- tests/basics/visitingtool-concept.cpp | 2 +- tests/basics/visitingtool-extended-test.cpp | 2 +- tests/basics/visitingtool-test.cpp | 2 +- tests/basics/zombie-check-test.cpp | 4 +- .../core/steam/asset/asset-category-test.cpp | 2 +- tests/core/steam/asset/basicpipetest.cpp | 2 +- tests/core/steam/asset/compoundmediatest.cpp | 2 +- tests/core/steam/asset/create-asset-test.cpp | 6 +- tests/core/steam/asset/deleteassettest.cpp | 2 +- .../steam/asset/dependent-assets-test.cpp | 2 +- tests/core/steam/asset/entry-id-test.cpp | 8 +- .../steam/asset/identity-of-assets-test.cpp | 2 +- tests/core/steam/asset/make-clip-test.cpp | 2 +- .../asset/media-structure-query-test.cpp | 2 +- .../asset/meta/time-grid-basics-test.cpp | 6 +- .../steam/asset/ordering-of-assets-test.cpp | 2 +- tests/core/steam/asset/testclipasset.hpp | 2 +- tests/core/steam/asset/typed-id-test.cpp | 8 +- .../control/argument-tuple-accept-test.cpp | 11 +- .../steam/control/command-argument-test.cpp | 11 +- .../core/steam/control/command-basic-test.cpp | 2 +- .../steam/control/command-binding-test.cpp | 2 +- .../control/command-clone-builder-test.cpp | 2 +- .../steam/control/command-equality-test.cpp | 4 +- .../control/command-instance-manager-test.cpp | 2 +- .../control/command-message-binding-test.cpp | 8 +- .../steam/control/command-mutation-test.cpp | 4 +- .../core/steam/control/command-queue-test.cpp | 2 +- .../steam/control/command-registry-test.cpp | 4 +- .../core/steam/control/command-setup-test.cpp | 2 +- .../core/steam/control/command-use1-test.cpp | 4 +- .../core/steam/control/command-use2-test.cpp | 4 +- .../core/steam/control/command-use3-test.cpp | 6 +- .../steam/control/dispatcher-looper-test.cpp | 2 +- .../control/handling-pattern-basics-test.cpp | 6 +- .../handling-pattern-standard-impl-test.cpp | 6 +- tests/core/steam/control/memento-tie-test.cpp | 4 +- .../control/session-command-function-test.cpp | 6 +- .../steam/control/test-dummy-commands.hpp | 2 +- .../steam/engine/buffer-metadata-key-test.cpp | 4 +- .../steam/engine/buffer-metadata-test.cpp | 6 +- .../engine/buffer-provider-protocol-test.cpp | 8 +- tests/core/steam/engine/calc-stream-test.cpp | 2 +- .../diagnostic-buffer-provider-test.cpp | 2 +- .../engine/dispatcher-interface-test.cpp | 2 +- tests/core/steam/engine/engine-ctx-test.cpp | 4 +- .../steam/engine/engine-interface-test.cpp | 2 +- tests/core/steam/engine/job-hash-test.cpp | 2 +- .../engine/job-planning-pipeline-test.cpp | 6 +- tests/core/steam/engine/job-planning-test.cpp | 2 +- tests/core/steam/engine/mock-dispatcher.cpp | 4 +- tests/core/steam/engine/mock-dispatcher.hpp | 2 +- tests/core/steam/engine/mock-support-test.cpp | 13 +- tests/core/steam/engine/node-base-test.cpp | 6 +- tests/core/steam/engine/node-builder-test.cpp | 3 +- tests/core/steam/engine/node-devel-test.cpp | 14 +- tests/core/steam/engine/node-feed-test.cpp | 8 +- tests/core/steam/engine/node-link-test.cpp | 2 +- tests/core/steam/engine/node-meta-test.cpp | 6 +- tests/core/steam/engine/node-opera-test.cpp | 2 +- tests/core/steam/engine/node-storage-test.cpp | 2 +- .../engine/output-proxy-provider-test.cpp | 4 +- .../steam/engine/scheduler-interface-test.cpp | 2 +- tests/core/steam/engine/testframe-test.cpp | 4 +- tests/core/steam/engine/timings-test.cpp | 4 +- .../fixture/fixture-change-detector-test.cpp | 4 +- .../steam/fixture/fixture-segment-test.cpp | 2 +- .../fixture/model-port-registry-test.cpp | 4 +- .../fixture/node-graph-attachment-test.cpp | 2 +- .../fixture/segmentation-integration-test.cpp | 4 +- .../mobject/builder/build-segment-test.cpp | 2 +- .../mobject/builder/builder-tool-test.cpp | 2 +- .../steam/mobject/mobject-interface-test.cpp | 6 +- tests/core/steam/mobject/mobject-ref-test.cpp | 6 +- .../steam/mobject/placement-basic-test.cpp | 2 +- .../mobject/placement-hierarchy-test.cpp | 6 +- .../placement-object-identity-test.cpp | 4 +- .../core/steam/mobject/placement-ref-test.cpp | 4 +- .../steam/mobject/session/add-clip-test.cpp | 2 +- .../session/defs-manager-impl-test.cpp | 2 +- .../mobject/session/defs-manager-test.cpp | 2 +- .../session/defs-registry-impl-test.cpp | 2 +- .../steam/mobject/session/deletecliptest.cpp | 2 +- .../mobject/session/output-mapping-test.cpp | 4 +- .../session/placement-index-query-test.cpp | 2 +- .../mobject/session/placement-index-test.cpp | 4 +- .../mobject/session/placement-scope-test.cpp | 4 +- .../session/query-focus-stack-test.cpp | 4 +- .../mobject/session/query-focus-test.cpp | 2 +- .../mobject/session/query-resolver-test.cpp | 6 +- .../mobject/session/rebuildfixturetest.cpp | 2 +- .../steam/mobject/session/scope-path-test.cpp | 4 +- .../mobject/session/scope-query-test.cpp | 2 +- .../session/session-element-query-test.cpp | 2 +- .../session/session-element-tracker-test.cpp | 2 +- .../mobject/session/session-manager-test.cpp | 2 +- .../session/session-modify-parts-test.cpp | 2 +- .../session/session-service-access-test.cpp | 2 +- .../session/session-structure-test.cpp | 2 +- .../timeline-sequence-handling-test.cpp | 2 +- .../steam/play/dummy-play-connection-test.cpp | 2 +- .../steam/play/output-slot-protocol-test.cpp | 2 +- .../steam/play/timing-constraints-test.cpp | 2 +- tests/core/steam/render-segment-test.cpp | 2 +- tests/core/vault/media-access-mock-test.cpp | 2 +- .../core/vessel/advice/advice-basics-test.cpp | 2 +- .../advice/advice-binding-pattern-test.cpp | 4 +- .../advice/advice-configuration-test.cpp | 8 +- .../core/vessel/advice/advice-index-test.cpp | 2 +- .../advice/advice-multiplicity-test.cpp | 8 +- .../vessel/advice/advice-situations-test.cpp | 4 +- tests/core/vessel/subsystem-runner-test.cpp | 4 +- tests/core/vessel/test-configloader.c | 2 +- tests/core/vessel/test-interfaces.c | 2 +- tests/library/allocation-cluster-test.cpp | 14 +- tests/library/app-config-test.cpp | 2 +- tests/library/branch-case-test.cpp | 9 +- .../builder-qualifier-support-test.cpp | 4 +- tests/library/c-lib/test-llist.c | 6 +- tests/library/c-lib/test-locking.c | 2 +- tests/library/c-lib/test-psplay.c | 6 +- tests/library/c-lib/test-safeclib.c | 2 +- tests/library/cmdline-wrapper-test.cpp | 2 +- tests/library/custom-shared-ptr-test.cpp | 4 +- tests/library/del-stash-test.cpp | 2 +- .../diff/diff-complex-application-test.cpp | 2 +- .../library/diff/diff-ignore-changes-test.cpp | 4 +- tests/library/diff/diff-index-table-test.cpp | 4 +- .../diff/diff-list-application-test.cpp | 2 +- .../diff/diff-list-generation-test.cpp | 2 +- .../diff-tree-application-simple-test.cpp | 2 +- .../diff/diff-tree-application-test.cpp | 2 +- .../diff/diff-tree-mutation-listener-test.cpp | 2 +- tests/library/diff/gen-node-test.cpp | 6 +- tests/library/diff/generic-record-test.cpp | 4 +- tests/library/diff/mutation-message-test.cpp | 4 +- .../diff/tree-mutator-binding-test.cpp | 4 +- tests/library/diff/tree-mutator-test.cpp | 4 +- tests/library/exception-error-test.cpp | 2 +- tests/library/file-support-test.cpp | 11 +- tests/library/format-cout-test.cpp | 2 +- tests/library/format-helper-test.cpp | 4 +- tests/library/format-string-test.cpp | 4 +- tests/library/fun-hash-dispatch-test.cpp | 6 +- tests/library/gnuplot-gen-test.cpp | 2 +- tests/library/hash-generator-test.cpp | 2 +- tests/library/hash-indexed-test.cpp | 2 +- .../hash-standard-to-boost-bridge-test.cpp | 4 +- tests/library/helloworldtest.cpp | 2 +- tests/library/hetero-data-test.cpp | 5 +- .../library/idi/generic-id-function-test.cpp | 4 +- tests/library/incidence-count-test.cpp | 8 +- tests/library/index-iter-test.cpp | 4 +- tests/library/ios-savepoint-test.cpp | 2 +- tests/library/item-wrapper-test.cpp | 28 ++-- tests/library/iter-adapter-stl-test.cpp | 21 ++- tests/library/iter-adapter-test.cpp | 4 +- tests/library/iter-chain-search-test.cpp | 4 +- tests/library/iter-core-adapter-test.cpp | 13 +- tests/library/iter-cursor-test.cpp | 4 +- tests/library/iter-explorer-test.cpp | 30 ++-- tests/library/iter-queue-test.cpp | 4 +- tests/library/iter-source-test.cpp | 9 +- tests/library/iter-stack-test.cpp | 4 +- tests/library/iter-zip-test.cpp | 7 +- tests/library/itertools-test.cpp | 4 +- tests/library/lazy-init-test.cpp | 4 +- tests/library/life-cycle-test.cpp | 2 +- tests/library/linked-elements-test.cpp | 19 +-- tests/library/meta/access-casted-test.cpp | 4 +- .../meta/duck-detector-extension-test.cpp | 2 +- tests/library/meta/duck-detector-test.cpp | 2 +- tests/library/meta/function-closure-test.cpp | 4 +- .../meta/function-composition-test.cpp | 6 +- tests/library/meta/function-erasure-test.cpp | 4 +- .../library/meta/function-signature-test.cpp | 2 +- .../meta/generator-combinations-test.cpp | 2 +- tests/library/meta/generator-test.cpp | 2 +- .../meta/iterable-classification-test.cpp | 2 +- .../library/meta/late-bind-instance-test.cpp | 8 +- tests/library/meta/meta-utils-test.cpp | 4 +- tests/library/meta/prop-builder-test.cpp | 10 +- tests/library/meta/tuple-closure-test.cpp | 6 +- tests/library/meta/tuple-diagnostics.hpp | 2 +- tests/library/meta/tuple-helper-test.cpp | 38 ++--- tests/library/meta/tuple-record-init-test.cpp | 4 +- tests/library/meta/type-demangling-test.cpp | 2 +- tests/library/meta/type-display-test.cpp | 4 +- tests/library/meta/typelist-diagnostics.hpp | 8 +- tests/library/meta/typelist-manip-test.cpp | 4 +- tests/library/meta/typelist-test.cpp | 2 +- tests/library/meta/typelist-util-test.cpp | 2 +- tests/library/meta/typeseq-manip-test.cpp | 2 +- .../library/meta/value-type-binding-test.cpp | 9 +- .../meta/variadic-argument-picker-test.cpp | 2 +- tests/library/meta/variadic-helper-test.cpp | 7 +- .../meta/virtual-copy-support-test.cpp | 4 +- tests/library/multifact-argument-test.cpp | 6 +- tests/library/multifact-singleton-test.cpp | 6 +- tests/library/multifact-test.cpp | 4 +- tests/library/null-value-test.cpp | 2 +- tests/library/opaque-holder-test.cpp | 6 +- .../library/opaque-unchecked-buffer-test.cpp | 6 +- tests/library/optional-ref-test.cpp | 12 +- tests/library/parse-test.cpp | 6 +- tests/library/path-array-test.cpp | 4 +- tests/library/polymorphic-value-test.cpp | 4 +- tests/library/query-text-test.cpp | 2 +- tests/library/query/query-utils-test.cpp | 2 +- tests/library/random-concurrent-test.cpp | 7 +- tests/library/random-draw-test.cpp | 7 +- tests/library/random-test.cpp | 3 +- tests/library/rational-test.cpp | 4 +- tests/library/removefromsettest.cpp | 2 +- tests/library/result-test.cpp | 6 +- tests/library/scoped-collection-test.cpp | 12 +- tests/library/scoped-ptrvect-test.cpp | 19 +-- tests/library/search-path-splitter-test.cpp | 5 +- tests/library/several-builder-test.cpp | 23 ++- tests/library/split-splice-test.cpp | 5 +- tests/library/stat/data-csv-test.cpp | 8 +- tests/library/stat/statistic-test.cpp | 12 +- tests/library/symbol-hashtable-test.cpp | 4 +- tests/library/symbol-test.cpp | 7 +- .../library/sync-barrier-performance-test.cpp | 5 +- tests/library/sync-barrier-test.cpp | 2 +- tests/library/sync-classlock-test.cpp | 2 +- tests/library/sync-locking-test.cpp | 2 +- tests/library/sync-timedwait-test.cpp | 2 +- tests/library/sync-waiting-test.cpp | 2 +- tests/library/test/event-log-test.cpp | 14 +- tests/library/test/temp-dir-test.cpp | 9 +- tests/library/test/test-helper-test.cpp | 12 +- .../test/test-helper-variadic-test.cpp | 7 +- tests/library/test/test-option-test.cpp | 6 +- tests/library/test/test-tracking-test.cpp | 19 ++- tests/library/text-template-test.cpp | 4 +- .../thread-wrapper-autonomous-test.cpp | 5 +- tests/library/thread-wrapper-join-test.cpp | 6 +- .../library/thread-wrapper-lifecycle-test.cpp | 6 +- .../thread-wrapper-self-recognition-test.cpp | 2 +- tests/library/thread-wrapper-test.cpp | 6 +- .../library/typed-allocation-manager-test.cpp | 2 +- tests/library/unique-malloc-owner-test.cpp | 4 +- tests/library/util-collection-test.cpp | 2 +- tests/library/util-floordiv-test.cpp | 2 +- tests/library/util-floorwrap-test.cpp | 4 +- tests/library/util-foreach-test.cpp | 2 +- tests/library/util-identity-test.cpp | 2 +- tests/library/util-parse-bool-test.cpp | 4 +- .../util-sanitised-identifier-test.cpp | 4 +- tests/library/util-tuple-test.cpp | 2 +- tests/library/variant-test.cpp | 6 +- tests/library/verb-function-dispatch-test.cpp | 2 +- tests/library/verb-visitor-dispatch-test.cpp | 2 +- tests/operation/bugs/hello-bug-test.cpp | 2 +- tests/stage/abstract-tangible-test.cpp | 8 +- tests/stage/bus-term-test.cpp | 10 +- .../ctrl/state-map-grouping-storage-test.cpp | 4 +- tests/stage/interact/cmd-context-test.cpp | 4 +- .../stage/interact/ui-coord-resolver-test.cpp | 4 +- tests/stage/interact/ui-coord-test.cpp | 4 +- .../interact/ui-location-solver-test.cpp | 4 +- tests/stage/interact/view-spec-dsl-test.cpp | 6 +- tests/stage/model/canvas-hook-test.cpp | 4 +- tests/stage/model/element-access-test.cpp | 6 +- tests/stage/model/view-hook-test.cpp | 4 +- tests/stage/model/w-link-test.cpp | 4 +- tests/stage/model/zoom-window-test.cpp | 4 +- tests/stage/test/mock-elm.hpp | 12 +- tests/stage/test/placeholder-command.hpp | 8 +- tests/stage/test/test-nexus.cpp | 8 +- tests/stage/test/test-nexus.hpp | 6 +- tests/testrunner.cpp | 4 +- tests/vault/gear/activity-detector-test.cpp | 8 +- tests/vault/gear/activity-detector.hpp | 26 +-- tests/vault/gear/block-flow-test.cpp | 14 +- tests/vault/gear/scheduler-activity-test.cpp | 6 +- .../vault/gear/scheduler-commutator-test.cpp | 6 +- .../vault/gear/scheduler-invocation-test.cpp | 2 +- .../gear/scheduler-load-control-test.cpp | 2 +- tests/vault/gear/scheduler-service-test.cpp | 8 +- tests/vault/gear/scheduler-stress-test.cpp | 4 +- tests/vault/gear/scheduler-usage-test.cpp | 2 +- tests/vault/gear/special-job-fun-test.cpp | 10 +- tests/vault/gear/stress-test-rig.hpp | 2 +- tests/vault/gear/test-chain-load-test.cpp | 4 +- tests/vault/gear/test-chain-load.hpp | 10 +- tests/vault/gear/work-force-test.cpp | 2 +- tests/vault/mem/extent-family-test.cpp | 2 +- wiki/thinkPad.ichthyo.mm | 157 +++++++++++++++--- 351 files changed, 1144 insertions(+), 1020 deletions(-) create mode 100644 src/test/DIR_INFO rename src/{lib => }/test/diagnostic-output.hpp (82%) rename src/{lib => }/test/event-log.cpp (99%) rename src/{lib => }/test/event-log.hpp (97%) rename src/{lib => }/test/microbenchmark-adaptor.hpp (96%) rename src/{lib => }/test/microbenchmark.hpp (97%) rename src/{lib => }/test/run.hpp (96%) rename src/{lib => }/test/suite.cpp (99%) rename src/{lib => }/test/suite.hpp (96%) rename src/{lib => }/test/temp-dir.hpp (92%) rename src/{lib => }/test/test-coll.hpp (81%) rename src/{lib => }/test/test-helper.cpp (76%) rename src/{lib => }/test/test-helper.hpp (88%) rename src/{lib => }/test/test.h (96%) rename src/{lib => }/test/testoption.cpp (98%) rename src/{lib => }/test/testoption.hpp (94%) rename src/{lib => }/test/tracking-allocator.cpp (98%) rename src/{lib => }/test/tracking-allocator.hpp (97%) rename src/{lib => }/test/tracking-dummy.hpp (95%) rename src/{lib => }/test/transiently.hpp (91%) diff --git a/doc/technical/infra/TestSupport.txt b/doc/technical/infra/TestSupport.txt index a4350baf7..59d134cbf 100644 --- a/doc/technical/infra/TestSupport.txt +++ b/doc/technical/infra/TestSupport.txt @@ -107,7 +107,7 @@ See the following .hello-world-test example [source,C] ---------------------------------------------------------------- -#include "lib/test/run.hpp" +#include "test/run.hpp" #include using std::cout; diff --git a/research/try.cpp b/research/try.cpp index b6e9d0a82..6fa4a24b9 100644 --- a/research/try.cpp +++ b/research/try.cpp @@ -19,8 +19,8 @@ #include "lib/format-cout.hpp" -#include "lib/test/test-helper.hpp" -#include "lib/test/diagnostic-output.hpp" +#include "test/test-helper.hpp" +#include "test/diagnostic-output.hpp" #include "lib/meta/tuple-helper.hpp" #include "lib/hetero-data.hpp" #include "lib/util.hpp" @@ -41,11 +41,11 @@ template void show() { - cout << "Tup!! "<< lib::test::showType() <() < ([](auto i) { using Elm = std::tuple_element_t; - cout <<" "<() <() < #include @@ -36,10 +36,9 @@ using std::string; -namespace lib { namespace test{ -}} // namespace lib::test +}// namespace test @@ -51,11 +50,11 @@ namespace test{ * using Lumiera's string conversion framework */ #define SHOW_TYPE(_TY_) \ - cout << "typeof( " << STRINGIFY(_TY_) << " )= " << lib::test::showType<_TY_>() <; @@ -103,7 +104,7 @@ namespace test{ buildSearchFilter(Log const& srcSeq) { using Cursor = lib::iter::CursorGear; - return iter::chainSearch (Cursor{srcSeq.begin(), srcSeq.end()}); + return lib::iter::chainSearch (Cursor{srcSeq.begin(), srcSeq.end()}); } } @@ -243,7 +244,7 @@ namespace test{ template EventMatch& on (const X *const targetObj) { - string targetID = idi::instanceTypeID (targetObj); + string targetID = instanceTypeID (targetObj); return this->on(targetID); } @@ -305,7 +306,7 @@ namespace test{ template explicit EventLog (const X *const obj) - : EventLog(idi::instanceTypeID (obj)) + : EventLog(instanceTypeID (obj)) { } @@ -337,7 +338,7 @@ namespace test{ EventLog& clear (const X *const obj) { - return clear (idi::instanceTypeID (obj)); + return clear (instanceTypeID (obj)); } @@ -387,7 +388,7 @@ namespace test{ EventLog& call (const X *const targetObj, string function, ARGS const& ...args) { - return call (idi::instanceTypeID (targetObj), function, args...); + return call (instanceTypeID (targetObj), function, args...); } template @@ -532,5 +533,5 @@ namespace test{ -}} // namespace lib::test -#endif /*LIB_TEST_EVENT_LOG_H*/ +} // namespace test +#endif /*TESTSUPPORT_EVENT_LOG_H*/ diff --git a/src/lib/test/microbenchmark-adaptor.hpp b/src/test/microbenchmark-adaptor.hpp similarity index 96% rename from src/lib/test/microbenchmark-adaptor.hpp rename to src/test/microbenchmark-adaptor.hpp index 3733d3a02..262783b2f 100644 --- a/src/lib/test/microbenchmark-adaptor.hpp +++ b/src/test/microbenchmark-adaptor.hpp @@ -27,14 +27,13 @@ */ -#ifndef LIB_TEST_MICROBENCHMARK_ADAPTOR_H -#define LIB_TEST_MICROBENCHMARK_ADAPTOR_H +#ifndef TEST_MICROBENCHMARK_ADAPTOR_H +#define TEST_MICROBENCHMARK_ADAPTOR_H #include "lib/meta/function.hpp" #include "lib/meta/util.hpp" -namespace lib { namespace test{ namespace microbenchmark { @@ -158,5 +157,5 @@ namespace microbenchmark { -}}} // namespace lib::test::microbenchmark -#endif /*LIB_TEST_MICROBENCHMARK_ADAPTOR_H*/ +}} // namespace test::microbenchmark +#endif /*TEST_MICROBENCHMARK_ADAPTOR_H*/ diff --git a/src/lib/test/microbenchmark.hpp b/src/test/microbenchmark.hpp similarity index 97% rename from src/lib/test/microbenchmark.hpp rename to src/test/microbenchmark.hpp index e8e4c5630..13c5ac6e2 100644 --- a/src/lib/test/microbenchmark.hpp +++ b/src/test/microbenchmark.hpp @@ -41,8 +41,8 @@ */ -#ifndef LIB_TEST_MICROBENCHMARK_H -#define LIB_TEST_MICROBENCHMARK_H +#ifndef TEST_MICROBENCHMARK_H +#define TEST_MICROBENCHMARK_H #include "lib/meta/function.hpp" @@ -50,13 +50,12 @@ #include "lib/sync-barrier.hpp" #include "lib/thread.hpp" -#include "lib/test/microbenchmark-adaptor.hpp" +#include "test/microbenchmark-adaptor.hpp" #include -namespace lib { namespace test{ namespace { @@ -146,6 +145,7 @@ namespace test{ inline auto threadBenchmark(FUN const& subject, const size_t repeatCnt = DEFAULT_RUNS) { + using lib::SyncBarrier; using std::chrono::steady_clock; using Dur = std::chrono::duration; @@ -195,5 +195,5 @@ namespace test{ -}} // namespace lib::test -#endif /*LIB_TEST_MICROBENCHMARK_H*/ +}// namespace test +#endif /*TESTSUPPORT_MICROBENCHMARK_H*/ diff --git a/src/lib/test/run.hpp b/src/test/run.hpp similarity index 96% rename from src/lib/test/run.hpp rename to src/test/run.hpp index 035633af9..b353b062c 100644 --- a/src/lib/test/run.hpp +++ b/src/test/run.hpp @@ -24,15 +24,15 @@ */ -#ifndef TESTHELPER_RUN_H -#define TESTHELPER_RUN_H +#ifndef TESTSUITE_RUN_H +#define TESTSUITE_RUN_H #include "lib/error.hpp" #include "lib/random.hpp" - -#include "lib/test/suite.hpp" #include "lib/util.hpp" +#include "test/suite.hpp" + #include #include @@ -118,4 +118,4 @@ using lib::defaultGen; Launch<_TEST_CLASS_> run_##_TEST_CLASS_##_(STRINGIFY(_TEST_CLASS_), _GROUPS_); -#endif /*TESTHELPER_RUN_H*/ +#endif /*TESTSUITE_RUN_H*/ diff --git a/src/lib/test/suite.cpp b/src/test/suite.cpp similarity index 99% rename from src/lib/test/suite.cpp rename to src/test/suite.cpp index 2f1a096d9..eaa0557f3 100644 --- a/src/lib/test/suite.cpp +++ b/src/test/suite.cpp @@ -22,12 +22,13 @@ #include "lib/symbol.hpp" #include "lib/random-reseed.hpp" #include "lib/format-cout.hpp" -#include "lib/test/suite.hpp" -#include "lib/test/run.hpp" #include "lib/cmdline.hpp" #include "lib/random.hpp" #include "lib/util.hpp" +#include "test/suite.hpp" +#include "test/run.hpp" + #include #include #include diff --git a/src/lib/test/suite.hpp b/src/test/suite.hpp similarity index 96% rename from src/lib/test/suite.hpp rename to src/test/suite.hpp index b7e7137e5..d072209f8 100644 --- a/src/lib/test/suite.hpp +++ b/src/test/suite.hpp @@ -28,8 +28,8 @@ */ -#ifndef TESTHELPER_SUITE_H -#define TESTHELPER_SUITE_H +#ifndef TEST_SUITE_H +#define TEST_SUITE_H #include #include @@ -75,4 +75,4 @@ namespace test { } // namespace test -#endif +#endif /*TEST_SUITE_H*/ diff --git a/src/lib/test/temp-dir.hpp b/src/test/temp-dir.hpp similarity index 92% rename from src/lib/test/temp-dir.hpp rename to src/test/temp-dir.hpp index 5c20aea88..ae2d995c6 100644 --- a/src/lib/test/temp-dir.hpp +++ b/src/test/temp-dir.hpp @@ -18,8 +18,8 @@ */ -#ifndef LIB_TEST_TEMP_DIR_H -#define LIB_TEST_TEMP_DIR_H +#ifndef TESTSUPPORT_TEMP_DIR_H +#define TESTSUPPORT_TEMP_DIR_H #include "lib/error.hpp" @@ -27,6 +27,7 @@ #include "lib/random.hpp" #include "include/limits.hpp" #include "lib/format-string.hpp" +#include "lib/format-obj.hpp" #include "lib/file.hpp" #include "lib/util.hpp" @@ -34,9 +35,7 @@ #include -namespace lib { namespace test{ - namespace error = lumiera::error; using util::_Fmt; @@ -44,7 +43,7 @@ namespace test{ using std::string; namespace { - Literal TEMPFILE_PREFIX = "Lux"; + lib::Literal TEMPFILE_PREFIX = "Lux"; } @@ -98,7 +97,7 @@ namespace test{ auto tmpDir = fs::temp_directory_path(); for (uint attempt=0; attempt @@ -27,8 +27,7 @@ #include -namespace lib { -namespace test{ +namespace test { typedef std::vector VecI; @@ -45,11 +44,11 @@ namespace test{ } - typedef std::map MapII; - typedef std::multimap MMapII; + using MapII = std::map; + using MMapII = std::multimap; - typedef std::unordered_map HMapII; - typedef std::unordered_multimap HMMapII; + using HMapII = std::unordered_map; + using HMMapII = std::unordered_multimap; template @@ -87,5 +86,5 @@ namespace test{ -}} // namespace lib::test -#endif /*LIB_TEST_TEST_COLL_H*/ +}// namespace test +#endif /*TESTSUPPORT_TEST_COLL_H*/ diff --git a/src/lib/test/test-helper.cpp b/src/test/test-helper.cpp similarity index 76% rename from src/lib/test/test-helper.cpp rename to src/test/test-helper.cpp index 891a71cdf..e53aa86fd 100644 --- a/src/lib/test/test-helper.cpp +++ b/src/test/test-helper.cpp @@ -21,8 +21,8 @@ */ -#include "lib/test/test-helper.hpp" -#include "lib/test/tracking-dummy.hpp" +#include "test/test-helper.hpp" +#include "test/tracking-dummy.hpp" #include "lib/unique-malloc-owner.hpp" #include "lib/format-string.hpp" #include "lib/format-cout.hpp" @@ -33,7 +33,6 @@ using util::_Fmt; using std::string; -namespace lib { namespace test{ @@ -55,23 +54,6 @@ namespace test{ - /** @todo probably this can be done in a more clever way. Anyone...? - */ - string - randStr (size_t len) - { - static const string alpha{"aaaabbccddeeeeffgghiiiijjkkllmmnnooooppqqrrssttuuuuvvwwxxyyyyzz0123456789"}; - static const size_t MAXAL{alpha.size()}; - - string garbage(len,'\0'); - size_t p = len; - while (p) - garbage[--p] = alpha[rani (MAXAL)]; - return garbage; - } - - - /** * @internal check equality and print difference * @remark defined here to avoid inclusion of `` in header @@ -92,4 +74,4 @@ namespace test{ } -}} // namespace lib::test +}// namespace test diff --git a/src/lib/test/test-helper.hpp b/src/test/test-helper.hpp similarity index 88% rename from src/lib/test/test-helper.hpp rename to src/test/test-helper.hpp index 4f3a73515..1aabfebf9 100644 --- a/src/lib/test/test-helper.hpp +++ b/src/test/test-helper.hpp @@ -27,14 +27,14 @@ */ -#ifndef LIB_TEST_TEST_HELPER_H -#define LIB_TEST_TEST_HELPER_H +#ifndef TESTSUPPORT_TEST_HELPER_H +#define TESTSUPPORT_TEST_HELPER_H #include "lib/symbol.hpp" #include "lib/meta/trait.hpp" #include "lib/time/timevalue.hpp" -#include "lib/test/transiently.hpp" +#include "test/transiently.hpp" #include "lib/format-obj.hpp" #include "lib/random.hpp" @@ -48,22 +48,25 @@ -namespace lib { namespace test{ using lib::Literal; using std::string; + using lib::randStr; using lib::rani; + using lib::meta::enable_if; + using lib::meta::disable_if; using lib::meta::demangleCxx; + using lib::meta::humanReadableTypeID; - constexpr auto ROUGH_PRECISION = pow (10, -3); - constexpr auto EPSILON_ULP = 5; + constexpr auto ROUGH_PRECISION = pow (10, -3); + constexpr auto EPSILON_ULP = 5; template - constexpr inline meta::enable_if< std::is_floating_point, - bool > + constexpr inline enable_if< std::is_floating_point, + bool > roughEQ (F val, N target, F limit =ROUGH_PRECISION) { REQUIRE (0 < limit); @@ -72,8 +75,8 @@ namespace test{ template - constexpr inline meta::enable_if< std::is_floating_point, - F > + constexpr inline enable_if< std::is_floating_point, + F > ulp (F val) { val = fabs (val); @@ -86,8 +89,8 @@ namespace test{ } template - constexpr inline meta::enable_if< std::is_floating_point, - bool > + constexpr inline enable_if< std::is_floating_point, + bool > epsEQ (F val, N target, uint ulps =EPSILON_ULP) { return abs (val - target) < ulps * ulp (target); @@ -112,8 +115,8 @@ namespace test{ } template - inline meta::disable_if, - string > // note:: force invocations with pointer to the first overload + inline disable_if, + string > // note:: force invocations with pointer to the first overload showSizeof (T const& obj, CStr name =nullptr) { return showSizeof (&obj, name); @@ -260,7 +263,7 @@ namespace test{ using Type = Case::Type; return Case::prefix - + meta::humanReadableTypeID (typeid(Type).name()) + + humanReadableTypeID (typeid(Type).name()) + Case::postfix; } @@ -304,17 +307,13 @@ namespace test{ - /** create a random but not insane Time value between 1s ... 10min + 500ms */ + /** create a random yet plausible Time value between 1s ... 10min + 500ms */ inline lib::time::Time randTime () { return lib::time::Time (500 * rani(2), 1 + rani(600)); } - /** create garbage string of given length - * @return string containing arbitrary lower case letters and numbers - */ - string randStr (size_t len); /** @@ -360,7 +359,7 @@ namespace test{ bool verify (std::string const& actual) const; }; -}} // namespace lib::test +}// namespace test @@ -374,10 +373,10 @@ namespace test{ * CHECK (result23 == "[-100..100]"_expect); * \endcode */ -inline lib::test::ExpectString +inline ::test::ExpectString operator""_expect (CStr lit, size_t siz) { - return lib::test::ExpectString{lit, siz}; + return ::test::ExpectString{lit, siz}; } @@ -390,24 +389,24 @@ operator""_expect (CStr lit, size_t siz) * an assertion failure. In case of exception, the #lumiera_error * state is checked, cleared and verified. */ -#define VERIFY_ERROR(ERROR_ID, ERRONEOUS_STATEMENT) \ - try \ - { \ - ERRONEOUS_STATEMENT ; \ - NOTREACHED("expected »%s« failure in: %s", \ - #ERROR_ID, #ERRONEOUS_STATEMENT); \ - } \ - catch (lumiera::Error& ex) \ - { \ - CHECK (ex.getID() \ - == lib::test::ExpectString{LUMIERA_ERROR_##ERROR_ID} );\ - lumiera_error(); \ - } \ - catch (...) \ - { \ - CHECK (lumiera_error_peek() \ - == lib::test::ExpectString{LUMIERA_ERROR_##ERROR_ID} ); \ - lumiera_error(); \ +#define VERIFY_ERROR(ERROR_ID, ERRONEOUS_STATEMENT) \ + try \ + { \ + ERRONEOUS_STATEMENT ; \ + NOTREACHED("expected »%s« failure in: %s", \ + #ERROR_ID, #ERRONEOUS_STATEMENT); \ + } \ + catch (lumiera::Error& ex) \ + { \ + CHECK (ex.getID() \ + == ::test::ExpectString{LUMIERA_ERROR_##ERROR_ID} );\ + lumiera_error(); \ + } \ + catch (...) \ + { \ + CHECK (lumiera_error_peek() \ + == ::test::ExpectString{LUMIERA_ERROR_##ERROR_ID} ); \ + lumiera_error(); \ } /** @@ -443,4 +442,4 @@ operator""_expect (CStr lit, size_t siz) #define MARK_TEST_FUN \ cout << "|" << endl << "| »"<<__FUNCTION__<<"«" < #include @@ -59,7 +59,7 @@ main (int argc, const char** argv) \ } -#endif +#endif /*TESTSUPPORT_TEST_H*/ /* // Local Variables: diff --git a/src/lib/test/testoption.cpp b/src/test/testoption.cpp similarity index 98% rename from src/lib/test/testoption.cpp rename to src/test/testoption.cpp index 5614ff8ec..0b69af2b6 100644 --- a/src/lib/test/testoption.cpp +++ b/src/test/testoption.cpp @@ -18,8 +18,8 @@ #include "lib/error.hpp" -#include "lib/test/testoption.hpp" -#include "lib/test/suite.hpp" +#include "test/testoption.hpp" +#include "test/suite.hpp" diff --git a/src/lib/test/testoption.hpp b/src/test/testoption.hpp similarity index 94% rename from src/lib/test/testoption.hpp rename to src/test/testoption.hpp index aa3914d05..54ed9272f 100644 --- a/src/lib/test/testoption.hpp +++ b/src/test/testoption.hpp @@ -17,8 +17,8 @@ */ -#ifndef TESTHELPER_TESTOPTION_H -#define TESTHELPER_TESTOPTION_H +#ifndef TESTSUPPORT_TESTOPTION_H +#define TESTSUPPORT_TESTOPTION_H #include "lib/cmdline.hpp" #include "lib/nocopy.hpp" @@ -74,4 +74,4 @@ namespace test { } // namespace test -#endif +#endif /*TESTSUPPORT_TESTOPTION_H*/ diff --git a/src/lib/test/tracking-allocator.cpp b/src/test/tracking-allocator.cpp similarity index 98% rename from src/lib/test/tracking-allocator.cpp rename to src/test/tracking-allocator.cpp index f9d761fc7..f013103fe 100644 --- a/src/lib/test/tracking-allocator.cpp +++ b/src/test/tracking-allocator.cpp @@ -30,7 +30,7 @@ */ -#include "lib/test/tracking-allocator.hpp" +#include "test/tracking-allocator.hpp" #include "lib/uninitialised-storage.hpp" #include "lib/iter-explorer.hpp" #include "lib/depend.hpp" @@ -46,9 +46,10 @@ using std::make_pair; using util::contains; using util::joinDash; using util::showAdr; +using lib::explore; +using lib::Depend; -namespace lib { namespace test{ @@ -69,7 +70,7 @@ namespace test{ struct Allocation : util::MoveOnly { - UninitialisedDynBlock buff{}; + lib::UninitialisedDynBlock buff{}; size_t entryID{0}; }; @@ -343,4 +344,4 @@ namespace test{ -}} // namespace lib::test +} // namespace test diff --git a/src/lib/test/tracking-allocator.hpp b/src/test/tracking-allocator.hpp similarity index 97% rename from src/lib/test/tracking-allocator.hpp rename to src/test/tracking-allocator.hpp index 42c7bfbea..896adfc3d 100644 --- a/src/lib/test/tracking-allocator.hpp +++ b/src/test/tracking-allocator.hpp @@ -43,26 +43,25 @@ */ -#ifndef LIB_TEST_TRACKING_ALLOCATOR_H -#define LIB_TEST_TRACKING_ALLOCATOR_H +#ifndef TESTSUPPORT_TRACKING_ALLOCATOR_H +#define TESTSUPPORT_TRACKING_ALLOCATOR_H #include "lib/error.hpp" #include "lib/symbol.hpp" #include "lib/nocopy.hpp" #include "lib/hash-value.h" -#include "lib/test/event-log.hpp" #include "lib/format-string.hpp" +#include "test/event-log.hpp" #include #include using std::byte; +using lib::HashVal; -namespace lib { namespace test { - namespace { const Symbol GLOBAL{"GLOBAL"}; } @@ -243,5 +242,5 @@ namespace test { -}} // namespace lib::test -#endif /*LIB_TEST_TRACKING_ALLOCATOR_H*/ +}// namespace test +#endif /*TESTSUPPORT_TRACKING_ALLOCATOR_H*/ diff --git a/src/lib/test/tracking-dummy.hpp b/src/test/tracking-dummy.hpp similarity index 95% rename from src/lib/test/tracking-dummy.hpp rename to src/test/tracking-dummy.hpp index a46bd1307..98a25a2cd 100644 --- a/src/lib/test/tracking-dummy.hpp +++ b/src/test/tracking-dummy.hpp @@ -20,12 +20,12 @@ */ -#ifndef LIB_TEST_TRACKING_DUMMY_H -#define LIB_TEST_TRACKING_DUMMY_H +#ifndef TESTSUPPORT_TRACKING_DUMMY_H +#define TESTSUPPORT_TRACKING_DUMMY_H #include "lib/nocopy.hpp" -#include "lib/test/event-log.hpp" +#include "test/event-log.hpp" #include "lib/format-string.hpp" #include "lib/random.hpp" #include "lib/util.hpp" @@ -34,8 +34,7 @@ #include -namespace lib { -namespace test{ +namespace test { /** @@ -147,7 +146,7 @@ namespace test{ */ struct Tracker { - static lib::test::EventLog log; + static EventLog log; static constexpr int DEFUNCT = std::numeric_limits::min(); static constexpr int DEAD = std::numeric_limits::max(); @@ -231,5 +230,5 @@ namespace test{ -}} // namespace lib::test -#endif /*LIB_TEST_TRACKING_DUMMY_H*/ +}// namespace test +#endif /*TESTSUPPORT_TRACKING_DUMMY_H*/ diff --git a/src/lib/test/transiently.hpp b/src/test/transiently.hpp similarity index 91% rename from src/lib/test/transiently.hpp rename to src/test/transiently.hpp index 074d2aaf4..256c19b23 100644 --- a/src/lib/test/transiently.hpp +++ b/src/test/transiently.hpp @@ -24,8 +24,8 @@ */ -#ifndef LIB_TEST_TRANSIENTLY_H -#define LIB_TEST_TRANSIENTLY_H +#ifndef TEST_TRANSIENTLY_H +#define TEST_TRANSIENTLY_H #include "lib/nocopy.hpp" @@ -34,7 +34,6 @@ #include -namespace lib { namespace test{ /** @@ -107,7 +106,7 @@ namespace test{ template>> Transiently (FUN&&) -> Transiently; -}} // namespace lib::test +}// namespace test @@ -119,7 +118,7 @@ namespace test{ * @remark use as `TRANSIENTLY(blah) = moo;` */ #define TRANSIENTLY(_OO_) \ - lib::test::Transiently PPMPL_CAT(transientlyManipulated_,__LINE__)(_OO_); PPMPL_CAT(transientlyManipulated_,__LINE__) + ::test::Transiently PPMPL_CAT(transientlyManipulated_,__LINE__)(_OO_); PPMPL_CAT(transientlyManipulated_,__LINE__) -#endif /*LIB_TEST_TRANSIENTLY_H*/ +#endif /*TEST_TRANSIENTLY_H*/ diff --git a/tests/00support.tests b/tests/00support.tests index 3e8fbc752..4dcc187b2 100644 --- a/tests/00support.tests +++ b/tests/00support.tests @@ -6,16 +6,16 @@ TEST "Test support functions" TestHelper_test < ) = 1 -out-lit: sizeof( test::Wrmrmpft ) = 2 -out-lit: sizeof( test::Wrmrmpft ) = 3 +out-lit: sizeof( Murpf ) = 1 +out-lit: sizeof( Wrmrmpft ) = 1 +out-lit: sizeof( Wrmrmpft ) = 2 +out-lit: sizeof( Wrmrmpft ) = 3 out-lit: sizeof( Universe ) = 42 -out-lit: sizeof( test::Wrmrmpft ) = 1 -out-lit: sizeof( test::Wrmrmpft ) = 1 -out-lit: sizeof( test::Wrmrmpft ) = 1 -out-lit: sizeof( test::Wrmrmpft ) = 1 -out-lit: sizeof( test::Wrmrmpft ) = 1 +out-lit: sizeof( Wrmrmpft ) = 1 +out-lit: sizeof( Wrmrmpft ) = 1 +out-lit: sizeof( Wrmrmpft ) = 1 +out-lit: sizeof( Wrmrmpft ) = 1 +out-lit: sizeof( Wrmrmpft ) = 1 return: 0 END diff --git a/tests/15library.tests b/tests/15library.tests index 262d6d227..44e7a267d 100644 --- a/tests/15library.tests +++ b/tests/15library.tests @@ -91,7 +91,7 @@ END TEST "Diff: Generic recursive mutation with closure binding" TreeMutator_test < > +out: concrete TreeMutator .+Builder > out-lit: "data" closure received something that would be acceptable out-lit: localData changed to: that would be acceptable out-lit: | @@ -355,7 +355,7 @@ END TEST "formatting by string template" FormatString_test < \) = [0-9]{2} -out: sizeof\( test::TestPlacement \) = [0-9]{2} -out: sizeof\( test::TestPlacement \) = [0-9]{2} -out: sizeof\( test::TestPlacement \) = [0-9]{2} +out: sizeof\( TestPlacement \) = [0-9]{2} +out: sizeof\( TestPlacement \) = [0-9]{2} +out: sizeof\( TestPlacement \) = [0-9]{2} +out: sizeof\( TestPlacement \) = [0-9]{2} out: sizeof\( Placement \) = [0-9]{2} -out: Placement ...................... use-cnt=1 ID.\w{16} -out: Placement ...................... use-cnt=1 ID.\w{16} -out: Placement ..................... use-cnt=2 ID.\w{16} +out: Placement ............................ use-cnt=1 ID.\w{16} +out: Placement ............................ use-cnt=1 ID.\w{16} +out: Placement ........................... use-cnt=2 ID.\w{16} out: Placement .................................. use-cnt=2 ID.\w{16} out: specialAPI() out: pID\(\w{6,16}\) @@ -115,22 +115,22 @@ END TEST "PlacementRef_test" PlacementRef_test < ..................... use-cnt=2 ID.\w{16} +out: Placement ........................... use-cnt=2 ID.\w{16} out: specialAPI() return: 0 END TEST "Placement Index" PlacementIndex_test < ........................ use-cnt=2 -out: ^::Placement ........................ use-cnt=6 -out: ^ ::Placement ........................ use-cnt=6 -out: ^ ::Placement ........................ use-cnt=6 +out: ^::Placement .............................. use-cnt=2 +out: ^::Placement .............................. use-cnt=6 +out: ^ ::Placement .............................. use-cnt=6 +out: ^ ::Placement .............................. use-cnt=6 out: ^ ...2 elements at Level 2 -out: ^ ::Placement ........................ use-cnt=6 +out: ^ ::Placement .............................. use-cnt=6 out: ^ ...3 elements at Level 1 -out: ^::Placement ........................ use-cnt=2 -out: ^ ::Placement ........................ use-cnt=1 +out: ^::Placement .............................. use-cnt=2 +out: ^ ::Placement .............................. use-cnt=1 out: ^ ...1 elements at Level 1 out: ^...3 elements at Level 0 return: 0 @@ -139,12 +139,12 @@ END TEST "Querying the index" PlacementIndexQuery_test < ...................... use-cnt=1 -out: Placement ...................... use-cnt=1 -out: Placement ......................... use-cnt=1 -out: Placement ..................... use-cnt=1 -out: path to root starting at Placement ...................... use-cnt=1 -out: Placement ...................... use-cnt=1 +out: Placement ............................ use-cnt=1 +out: Placement ............................ use-cnt=1 +out: Placement ............................... use-cnt=1 +out: Placement ........................... use-cnt=1 +out: path to root starting at Placement ............................ use-cnt=1 +out: Placement ............................ use-cnt=1 out: Placement