From dc22e2d77f8cbb0124954bd61df2e158cacd9067 Mon Sep 17 00:00:00 2001 From: Miguel de Benito Delgado Date: Fri, 2 Oct 2026 14:35:31 +0200 Subject: [PATCH] :construction: WIP Step 21 Refactor namespaces --- frontend/shadow-cljs.edn | 6 +- .../{browser.cljs => browser/bridge.cljs} | 18 +-- .../render_wasm/{ => browser}/pilot.html | 0 .../render_wasm/{ => browser}/upload.cljs | 6 +- .../render_wasm/{scenes => }/builder.clj | 76 ++++----- .../render_wasm/{scenes => }/builder.cljs | 4 +- frontend/test/benches/render_wasm/cases.cljs | 24 +-- .../{scenes/core.clj => declarations.clj} | 10 +- .../{scenes/core.cljs => declarations.cljs} | 4 +- .../benches/render_wasm/{ => node}/pilot.cljs | 4 +- .../render_wasm/{ => node}/runner.cljs | 2 +- .../{scenes => runtime}/camera.cljs | 8 +- .../render_wasm/{ => runtime}/protocol.cljs | 2 +- .../benches/render_wasm/scenes/masks.cljs | 14 +- .../benches/render_wasm/scenes/paths.cljs | 14 +- .../test/benches/render_wasm/scenes/plus.cljs | 14 +- .../benches/render_wasm/scenes/rects.cljs | 16 +- .../{scenes/common.cljs => snapshot.cljs} | 2 +- .../frontend_tests/benches/boolean_test.cljs | 4 +- .../frontend_tests/benches/builder_test.cljs | 4 +- .../benches/containers_test.cljs | 2 +- .../benches/contracts_test.cljs | 152 +++++++++--------- .../benches/geometry_scenes_test.cljs | 2 +- .../benches/lifecycle_test.cljs | 20 +-- .../frontend_tests/benches/protocol_test.cljs | 4 +- .../benches/scene_snapshot_test.cljs | 2 +- .../frontend_tests/benches/test_helpers.cljs | 2 +- .../frontend_tests/benches/upload_test.cljs | 8 +- 28 files changed, 212 insertions(+), 212 deletions(-) rename frontend/test/benches/render_wasm/{browser.cljs => browser/bridge.cljs} (97%) rename frontend/test/benches/render_wasm/{ => browser}/pilot.html (100%) rename frontend/test/benches/render_wasm/{ => browser}/upload.cljs (91%) rename frontend/test/benches/render_wasm/{scenes => }/builder.clj (73%) rename frontend/test/benches/render_wasm/{scenes => }/builder.cljs (99%) rename frontend/test/benches/render_wasm/{scenes/core.clj => declarations.clj} (88%) rename frontend/test/benches/render_wasm/{scenes/core.cljs => declarations.cljs} (99%) rename frontend/test/benches/render_wasm/{ => node}/pilot.cljs (99%) rename frontend/test/benches/render_wasm/{ => node}/runner.cljs (98%) rename frontend/test/benches/render_wasm/{scenes => runtime}/camera.cljs (94%) rename frontend/test/benches/render_wasm/{ => runtime}/protocol.cljs (99%) rename frontend/test/benches/render_wasm/{scenes/common.cljs => snapshot.cljs} (99%) diff --git a/frontend/shadow-cljs.edn b/frontend/shadow-cljs.edn index 4215d3b7a3..7d6b84b46e 100644 --- a/frontend/shadow-cljs.edn +++ b/frontend/shadow-cljs.edn @@ -181,7 +181,7 @@ {:target :node-script :output-to "target/renderer-benchmarks/runner.cjs" :output-dir "target/renderer-benchmarks/runner/" - :main benches.render-wasm.runner/-main + :main benches.render-wasm.node.runner/-main :devtools {:autoload false} :compiler-options @@ -199,7 +199,7 @@ {:target :node-script :output-to "target/renderer-benchmarks/pilot.cjs" :output-dir "target/renderer-benchmarks/pilot/" - :main benches.render-wasm.pilot/-main + :main benches.render-wasm.node.pilot/-main :devtools {:autoload false} :compiler-options @@ -223,7 +223,7 @@ :modules {:browser - {:exports {default benches.render-wasm.browser/bridge}}} + {:exports {default benches.render-wasm.browser.bridge/bridge}}} :compiler-options {:output-feature-set :es2020 diff --git a/frontend/test/benches/render_wasm/browser.cljs b/frontend/test/benches/render_wasm/browser/bridge.cljs similarity index 97% rename from frontend/test/benches/render_wasm/browser.cljs rename to frontend/test/benches/render_wasm/browser/bridge.cljs index 2c07135a95..e76f2dbe6b 100644 --- a/frontend/test/benches/render_wasm/browser.cljs +++ b/frontend/test/benches/render_wasm/browser/bridge.cljs @@ -4,7 +4,7 @@ ;; ;; Copyright (c) KALEIDOS SUBSIDIARY SL -(ns benches.render-wasm.browser +(ns benches.render-wasm.browser.bridge "Browser bridge for the benchmarks. Lifecycle here mirrors the editor cold-load path @@ -27,12 +27,12 @@ ;; at load [app.render-wasm.api.enums] [app.render-wasm.api.webgl :as webgl] + [benches.render-wasm.browser.upload :as upload] [benches.render-wasm.cases] + [benches.render-wasm.declarations :as decl] [benches.render-wasm.failures :as fail] - [benches.render-wasm.protocol :as protocol] - [benches.render-wasm.scenes.common :as scenes] - [benches.render-wasm.scenes.core :as core] - [benches.render-wasm.upload :as upload])) + [benches.render-wasm.runtime.protocol :as protocol] + [benches.render-wasm.snapshot :as scenes])) ;; Forward decls (declare now guard-current! read-graphics) @@ -346,9 +346,9 @@ {:error (fail/fail-data {:phase "invalid-args" :message "load-scene needs a Transit request with case"})} (let [case-desc (:case params) - checked (core/check-collected-case case-desc) - scene (core/registered-scene (:scene checked)) - local (core/registered-case (:id checked))] + checked (decl/check-collected-case case-desc) + scene (decl/registered-scene (:scene checked)) + local (decl/registered-case (:id checked))] (when (nil? scene) (throw (ex-info (str "unknown scene: " (:scene checked)) {:phase "invalid-args"}))) @@ -373,7 +373,7 @@ (let [epoch (swap! owner-epoch* inc)] (release-owner-resources!) (reset! module-promise* nil) - (let [viewport (core/resolve-viewport (:view case-desc))] + (let [viewport (decl/resolve-viewport (:view case-desc))] {:epoch epoch :dims viewport :hooks (browser-hooks epoch (+ (now) attempt-ms-budget)) diff --git a/frontend/test/benches/render_wasm/pilot.html b/frontend/test/benches/render_wasm/browser/pilot.html similarity index 100% rename from frontend/test/benches/render_wasm/pilot.html rename to frontend/test/benches/render_wasm/browser/pilot.html diff --git a/frontend/test/benches/render_wasm/upload.cljs b/frontend/test/benches/render_wasm/browser/upload.cljs similarity index 91% rename from frontend/test/benches/render_wasm/upload.cljs rename to frontend/test/benches/render_wasm/browser/upload.cljs index 603cb62460..cc09ca9268 100644 --- a/frontend/test/benches/render_wasm/upload.cljs +++ b/frontend/test/benches/render_wasm/browser/upload.cljs @@ -4,7 +4,7 @@ ;; ;; Copyright (c) KALEIDOS SUBSIDIARY SL -(ns benches.render-wasm.upload +(ns benches.render-wasm.browser.upload "Benchmark scene upload. In order to emulate editor behaviour, `upload-scene!` derives @@ -18,7 +18,7 @@ (`benches.render-wasm.cases`)" (:require [app.common.render-wasm.serialize-shape :as serialize-shape] - [benches.render-wasm.scenes.common :as common])) + [benches.render-wasm.snapshot :as common])) (defn prepare-scene "Derives the parent-before-child shape vector from a validated `snapshot`. @@ -32,7 +32,7 @@ - `snapshot` is `{:objects {uuid shape} :refs {label uuid}}` per the ticket02 contract; it must already be validated (see - `benches.render-wasm.scenes.common/validate!`). + `benches.render-wasm.snapshot/validate!`). - `opts` carries `:include-layout?` and `:include-fills-strokes?` through to the batch writer. diff --git a/frontend/test/benches/render_wasm/scenes/builder.clj b/frontend/test/benches/render_wasm/builder.clj similarity index 73% rename from frontend/test/benches/render_wasm/scenes/builder.clj rename to frontend/test/benches/render_wasm/builder.clj index d62e56bf62..cfb690734c 100644 --- a/frontend/test/benches/render_wasm/scenes/builder.clj +++ b/frontend/test/benches/render_wasm/builder.clj @@ -4,7 +4,7 @@ ;; ;; Copyright (c) KALEIDOS SUBSIDIARY SL -(ns benches.render-wasm.scenes.builder +(ns benches.render-wasm.builder "Construction macros for renderer benchmark scenes. Runtime helpers and scope state live in the sibling `builder.cljs`. @@ -40,11 +40,11 @@ "Runs `body` in a scene scope and returns the validated snapshot." [params & body] `(let [params# ~params - state# (benches.render-wasm.scenes.builder/start params#)] - (binding [benches.render-wasm.scenes.builder/*state* state# - benches.render-wasm.scenes.builder/*defaults* (:defaults params#)] + state# (benches.render-wasm.builder/start params#)] + (binding [benches.render-wasm.builder/*state* state# + benches.render-wasm.builder/*defaults* (:defaults params#)] ~@body - (benches.render-wasm.scenes.builder/finish! state#)))) + (benches.render-wasm.builder/finish! state#)))) (defmacro rect "Adds one rectangle to the current scene scope and returns its uuid. @@ -55,23 +55,23 @@ the instance `:refs`; duplicates and other label types are rejected. `attrs` override the defaults attribute by attribute." ([] - `(benches.render-wasm.scenes.builder/rect! - benches.render-wasm.scenes.builder/*state* - benches.render-wasm.scenes.builder/*defaults* + `(benches.render-wasm.builder/rect! + benches.render-wasm.builder/*state* + benches.render-wasm.builder/*defaults* nil {})) ([label-or-attrs] - `(benches.render-wasm.scenes.builder/rect! - benches.render-wasm.scenes.builder/*state* - benches.render-wasm.scenes.builder/*defaults* + `(benches.render-wasm.builder/rect! + benches.render-wasm.builder/*state* + benches.render-wasm.builder/*defaults* ~label-or-attrs {})) ([label attrs] - `(benches.render-wasm.scenes.builder/rect! - benches.render-wasm.scenes.builder/*state* - benches.render-wasm.scenes.builder/*defaults* + `(benches.render-wasm.builder/rect! + benches.render-wasm.builder/*state* + benches.render-wasm.builder/*defaults* ~label ~attrs))) @@ -85,21 +85,21 @@ override the defaults attribute by attribute. " ([] - `(benches.render-wasm.scenes.builder/path! - benches.render-wasm.scenes.builder/*state* - benches.render-wasm.scenes.builder/*defaults* + `(benches.render-wasm.builder/path! + benches.render-wasm.builder/*state* + benches.render-wasm.builder/*defaults* nil {})) ([label-or-attrs] - `(benches.render-wasm.scenes.builder/path! - benches.render-wasm.scenes.builder/*state* - benches.render-wasm.scenes.builder/*defaults* + `(benches.render-wasm.builder/path! + benches.render-wasm.builder/*state* + benches.render-wasm.builder/*defaults* ~label-or-attrs {})) ([label attrs] - `(benches.render-wasm.scenes.builder/path! - benches.render-wasm.scenes.builder/*state* - benches.render-wasm.scenes.builder/*defaults* + `(benches.render-wasm.builder/path! + benches.render-wasm.builder/*state* + benches.render-wasm.builder/*defaults* ~label ~attrs))) @@ -112,23 +112,23 @@ the instance `:refs`; duplicates and other label types are rejected. `attrs` override the defaults attribute by attribute." ([] - `(benches.render-wasm.scenes.builder/circle! - benches.render-wasm.scenes.builder/*state* - benches.render-wasm.scenes.builder/*defaults* + `(benches.render-wasm.builder/circle! + benches.render-wasm.builder/*state* + benches.render-wasm.builder/*defaults* nil {})) ([label-or-attrs] - `(benches.render-wasm.scenes.builder/circle! - benches.render-wasm.scenes.builder/*state* - benches.render-wasm.scenes.builder/*defaults* + `(benches.render-wasm.builder/circle! + benches.render-wasm.builder/*state* + benches.render-wasm.builder/*defaults* ~label-or-attrs {})) ([label attrs] - `(benches.render-wasm.scenes.builder/circle! - benches.render-wasm.scenes.builder/*state* - benches.render-wasm.scenes.builder/*defaults* + `(benches.render-wasm.builder/circle! + benches.render-wasm.builder/*state* + benches.render-wasm.builder/*defaults* ~label ~attrs))) @@ -142,12 +142,12 @@ coordinates. Empty frames are allowed." [label-or-attrs & body] (if (or (keyword? label-or-attrs) (vector? label-or-attrs)) - `(benches.render-wasm.scenes.builder/with-container + `(benches.render-wasm.builder/with-container :frame ~(first body) ~label-or-attrs (fn [] ~@(rest body))) - `(benches.render-wasm.scenes.builder/with-container + `(benches.render-wasm.builder/with-container :frame ~label-or-attrs nil @@ -164,12 +164,12 @@ one child." [label-or-attrs & body] (if (or (keyword? label-or-attrs) (vector? label-or-attrs)) - `(benches.render-wasm.scenes.builder/with-container + `(benches.render-wasm.builder/with-container :group ~(first body) ~label-or-attrs (fn [] ~@(rest body))) - `(benches.render-wasm.scenes.builder/with-container + `(benches.render-wasm.builder/with-container :group ~label-or-attrs nil @@ -191,12 +191,12 @@ frames." [label-or-attrs & body] (if (or (keyword? label-or-attrs) (vector? label-or-attrs)) - `(benches.render-wasm.scenes.builder/with-container + `(benches.render-wasm.builder/with-container :bool ~(first body) ~label-or-attrs (fn [] ~@(rest body))) - `(benches.render-wasm.scenes.builder/with-container + `(benches.render-wasm.builder/with-container :bool ~label-or-attrs nil diff --git a/frontend/test/benches/render_wasm/scenes/builder.cljs b/frontend/test/benches/render_wasm/builder.cljs similarity index 99% rename from frontend/test/benches/render_wasm/scenes/builder.cljs rename to frontend/test/benches/render_wasm/builder.cljs index 02e674e61a..a764aa228f 100644 --- a/frontend/test/benches/render_wasm/scenes/builder.cljs +++ b/frontend/test/benches/render_wasm/builder.cljs @@ -4,7 +4,7 @@ ;; ;; Copyright (c) KALEIDOS SUBSIDIARY SL -(ns benches.render-wasm.scenes.builder +(ns benches.render-wasm.builder "Construction of benchmark scenes. A `scene` consists of one seeded generator, one object map, and one label @@ -41,7 +41,7 @@ [app.common.types.shape :as cts] [app.common.types.shape-tree :as ctst] [app.common.uuid :as uuid] - [benches.render-wasm.scenes.common :as common])) + [benches.render-wasm.snapshot :as common])) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Poor-man's seeded PRNG diff --git a/frontend/test/benches/render_wasm/cases.cljs b/frontend/test/benches/render_wasm/cases.cljs index 09d002a036..206bd7557b 100644 --- a/frontend/test/benches/render_wasm/cases.cljs +++ b/frontend/test/benches/render_wasm/cases.cljs @@ -39,7 +39,7 @@ {:id :rects/zoom ...}]" (:require [app.common.schema :as sm] - [benches.render-wasm.scenes.core :as core] + [benches.render-wasm.declarations :as decl] benches.render-wasm.scenes.masks benches.render-wasm.scenes.paths benches.render-wasm.scenes.plus @@ -64,7 +64,7 @@ (thunk) (catch :default cause (let [data (ex-data cause)] - (if (contains? #{::core/invalid-case ::core/non-serializable-case} (:type data)) + (if (contains? #{::decl/invalid-case ::decl/non-serializable-case} (:type data)) (throw (ex-info (ex-message cause) (assoc data :type ::invalid-case) cause)) @@ -95,7 +95,7 @@ {:type ::invalid-case :id id :scene scene}))) - (as-invalid-case! #(core/check-registered-case! registered)) + (as-invalid-case! #(decl/check-registered-case! registered)) (check-params! id scene (:params-schema entry) params) registered)) @@ -104,23 +104,23 @@ version/description/seed attached, internal keys stripped, transit wire checked." [master-seed registered scene-entry] - (let [projected (-> (core/project-case registered) + (let [projected (-> (decl/project-case registered) (assoc :scene-version (:version scene-entry) :scene-description (:description scene-entry) - :scene-seed (core/derive-seed master-seed + :scene-seed (decl/derive-seed master-seed (:scene registered) (:params registered))))] - (as-invalid-case! #(core/check-collected-case projected)))) + (as-invalid-case! #(decl/check-collected-case projected)))) (defn scene-ids "Registered scene ids in declaration order." [] - (mapv :id (core/scenes))) + (mapv :id (decl/scenes))) (defn case-ids "Registered case ids in declaration order." [] - (mapv :id (core/cases))) + (mapv :id (decl/cases))) (defn collect-cases "Selected benchmark cases as plain data. @@ -130,10 +130,10 @@ [{:keys [master-seed] :as options}] (check-master-seed! master-seed) (let [pattern (:filter options) - scene-by-id (into {} (map (juxt :id identity)) (core/scenes))] - (doseq [scene (core/scenes)] - (core/check-registered-scene! scene)) - (let [selected (->> (core/cases) + scene-by-id (into {} (map (juxt :id identity)) (decl/scenes))] + (doseq [scene (decl/scenes)] + (decl/check-registered-scene! scene)) + (let [selected (->> (decl/cases) (map #(validate-case! % scene-by-id)) (filter (fn [registered] (or (str/blank? pattern) diff --git a/frontend/test/benches/render_wasm/scenes/core.clj b/frontend/test/benches/render_wasm/declarations.clj similarity index 88% rename from frontend/test/benches/render_wasm/scenes/core.clj rename to frontend/test/benches/render_wasm/declarations.clj index b2fa6b3bd8..e43cf66c3c 100644 --- a/frontend/test/benches/render_wasm/scenes/core.clj +++ b/frontend/test/benches/render_wasm/declarations.clj @@ -4,11 +4,11 @@ ;; ;; Copyright (c) KALEIDOS SUBSIDIARY SL -(ns benches.render-wasm.scenes.core +(ns benches.render-wasm.declarations "Registration macros for renderer benchmark scenes and cases. The macros expand to calls to `register-scene!`/`register-case!` in - `core.cljs`. Registration is done there so it can be inspected and tested.") + `declarations.cljs`. Registration is done there so it can be inspected and tested.") (defmacro defscene "Registers a scene and returns its id. @@ -18,7 +18,7 @@ `:params-schema`. - `build` resolves to a one-argument function of the scene parameters." [id opts build] - `(benches.render-wasm.scenes.core/register-scene! + `(benches.render-wasm.declarations/register-scene! (assoc ~opts :id ~id :ns ~(str *ns*) :build ~build))) (defn- one-argument-fn-form? @@ -43,9 +43,9 @@ `(let [~options ~opts] (when (contains? ~options :run!) (throw (ex-info (str "defcase " ~id " requires its run function as the fourth argument") - {:type :benches.render-wasm.scenes.core/invalid-run-function + {:type :benches.render-wasm.declarations/invalid-run-function :id ~id}))) - (benches.render-wasm.scenes.core/register-case! + (benches.render-wasm.declarations/register-case! (assoc ~options :id ~id :scene ~scene :ns ~(str *ns*) ~@(when run-fn [:run! run-fn])))))) diff --git a/frontend/test/benches/render_wasm/scenes/core.cljs b/frontend/test/benches/render_wasm/declarations.cljs similarity index 99% rename from frontend/test/benches/render_wasm/scenes/core.cljs rename to frontend/test/benches/render_wasm/declarations.cljs index b44f799eef..584480ecbe 100644 --- a/frontend/test/benches/render_wasm/scenes/core.cljs +++ b/frontend/test/benches/render_wasm/declarations.cljs @@ -4,11 +4,11 @@ ;; ;; Copyright (c) KALEIDOS SUBSIDIARY SL -(ns benches.render-wasm.scenes.core +(ns benches.render-wasm.declarations "Registry and contract for renderer benchmark scenes and cases. Scene namespaces register themselves through the `defscene` and - `defcase` macros in `core.clj`. This namespace imports no browser or + `defcase` macros in `declarations.clj`. This namespace imports no browser or renderer code. - A scene declares an id, a version, a human description, a closed diff --git a/frontend/test/benches/render_wasm/pilot.cljs b/frontend/test/benches/render_wasm/node/pilot.cljs similarity index 99% rename from frontend/test/benches/render_wasm/pilot.cljs rename to frontend/test/benches/render_wasm/node/pilot.cljs index bfacaf85b1..e59a9ff20e 100644 --- a/frontend/test/benches/render_wasm/pilot.cljs +++ b/frontend/test/benches/render_wasm/node/pilot.cljs @@ -4,7 +4,7 @@ ;; ;; Copyright (c) KALEIDOS SUBSIDIARY SL -(ns benches.render-wasm.pilot +(ns benches.render-wasm.node.pilot "Interim diagnostic: loads `:rects/load` in headless Chromium and prints a Transit record with the bridge result on stdout. @@ -146,7 +146,7 @@ root (frontend-root) bundle (path/join root "target" "renderer-benchmarks" "browser") js-dir (path/join root "resources" "public" "js") - html (path/join root "test" "benches" "render_wasm" "pilot.html") + html (path/join root "test" "benches" "render_wasm" "browser" "pilot.html") seed (:seed opts) selected (some #(when (= (:id %) (:case-id opts)) %) (cases/collect-cases {:master-seed seed})) diff --git a/frontend/test/benches/render_wasm/runner.cljs b/frontend/test/benches/render_wasm/node/runner.cljs similarity index 98% rename from frontend/test/benches/render_wasm/runner.cljs rename to frontend/test/benches/render_wasm/node/runner.cljs index d051f3cf97..0721154a33 100644 --- a/frontend/test/benches/render_wasm/runner.cljs +++ b/frontend/test/benches/render_wasm/node/runner.cljs @@ -4,7 +4,7 @@ ;; ;; Copyright (c) KALEIDOS SUBSIDIARY SL -(ns benches.render-wasm.runner +(ns benches.render-wasm.node.runner "Node CLI entry for the CLJS renderer benchmark suite. Scaffolding only. Commands, options, result reporting and failure diff --git a/frontend/test/benches/render_wasm/scenes/camera.cljs b/frontend/test/benches/render_wasm/runtime/camera.cljs similarity index 94% rename from frontend/test/benches/render_wasm/scenes/camera.cljs rename to frontend/test/benches/render_wasm/runtime/camera.cljs index 7a5073e925..69b7392e97 100644 --- a/frontend/test/benches/render_wasm/scenes/camera.cljs +++ b/frontend/test/benches/render_wasm/runtime/camera.cljs @@ -4,7 +4,7 @@ ;; ;; Copyright (c) KALEIDOS SUBSIDIARY SL -(ns benches.render-wasm.scenes.camera +(ns benches.render-wasm.runtime.camera "Standard load, pan and zoom bodies for renderer benchmark cases. ## Concepts @@ -46,14 +46,14 @@ ## Related code Scene declarations such as `scenes/rects.cljs` call these functions from - their `:run!` bodies. `scenes/core.cljs` registers those bodies. - `browser.cljs` supplies `rtx` and prepares reused cases. `protocol.cljs` + their `:run!` bodies. `declarations.cljs` registers those bodies. + `browser/bridge.cljs` supplies `rtx` and prepares reused cases. `runtime/protocol.cljs` owns the render drain and camera session; its `Metrics reported` section defines the measurement fields. Node reads case declarations without running their bodies. This namespace loads there because renderer effects come through the browser-supplied `:hooks`." (:require - [benches.render-wasm.protocol :as protocol])) + [benches.render-wasm.runtime.protocol :as protocol])) (defn load! "Drains the uploaded scene until the renderer reports Full completion. diff --git a/frontend/test/benches/render_wasm/protocol.cljs b/frontend/test/benches/render_wasm/runtime/protocol.cljs similarity index 99% rename from frontend/test/benches/render_wasm/protocol.cljs rename to frontend/test/benches/render_wasm/runtime/protocol.cljs index 34218f1fcf..160848167d 100644 --- a/frontend/test/benches/render_wasm/protocol.cljs +++ b/frontend/test/benches/render_wasm/runtime/protocol.cljs @@ -4,7 +4,7 @@ ;; ;; Copyright (c) KALEIDOS SUBSIDIARY SL -(ns benches.render-wasm.protocol +(ns benches.render-wasm.runtime.protocol "Shared render-completion protocol for the renderer benchmarks. The WASM renderer finishes progressively in tile budgets: one `_render` diff --git a/frontend/test/benches/render_wasm/scenes/masks.cljs b/frontend/test/benches/render_wasm/scenes/masks.cljs index c4fe33d874..76be4ac023 100644 --- a/frontend/test/benches/render_wasm/scenes/masks.cljs +++ b/frontend/test/benches/render_wasm/scenes/masks.cljs @@ -7,9 +7,9 @@ (ns benches.render-wasm.scenes.masks "Fixed grid of masked groups with circle masks and ordered descendants." (:require - [benches.render-wasm.scenes.builder :as sb :include-macros true] - [benches.render-wasm.scenes.camera :as camera] - [benches.render-wasm.scenes.core :as core :include-macros true])) + [benches.render-wasm.builder :as sb :include-macros true] + [benches.render-wasm.declarations :as decl :include-macros true] + [benches.render-wasm.runtime.camera :as camera])) (def ^:private default-params {:width 1920 :height 1080}) @@ -37,7 +37,7 @@ :height 205 :fills [{:fill-color (if (even? j) "#1254b8" "#ff8b38")}]})))))))) -(core/defscene :masks +(decl/defscene :masks {:version 1 :description "Twenty-four circle masks with ordered striped descendants" :params-schema schema:params} @@ -45,16 +45,16 @@ (def ^:private base-view {:scale 1 :x 0 :y 0}) -(core/defcase :masks/load :masks +(decl/defcase :masks/load :masks {:params default-params :view base-view :context :fresh} (fn [rtx] (camera/load! rtx))) -(core/defcase :masks/pan :masks +(decl/defcase :masks/pan :masks {:params default-params :view base-view :context :reuse :operation {:steps 20 :dx 120 :dy 40 :settle-ms 100}} (fn [rtx] (camera/pan! rtx))) -(core/defcase :masks/zoom :masks +(decl/defcase :masks/zoom :masks {:params default-params :view base-view :context :reuse :operation {:steps 20 :factor 1.6 :settle-ms 100}} (fn [rtx] (camera/zoom! rtx))) diff --git a/frontend/test/benches/render_wasm/scenes/paths.cljs b/frontend/test/benches/render_wasm/scenes/paths.cljs index 800f07e9f5..535015da15 100644 --- a/frontend/test/benches/render_wasm/scenes/paths.cljs +++ b/frontend/test/benches/render_wasm/scenes/paths.cljs @@ -9,9 +9,9 @@ (:require [app.common.schema :as sm] [app.common.types.path :as path] - [benches.render-wasm.scenes.builder :as sb :include-macros true] - [benches.render-wasm.scenes.camera :as camera] - [benches.render-wasm.scenes.core :as core :include-macros true])) + [benches.render-wasm.builder :as sb :include-macros true] + [benches.render-wasm.declarations :as decl :include-macros true] + [benches.render-wasm.runtime.camera :as camera])) (def ^:private default-params {:count 1000 :width 1920 :height 1080}) @@ -49,7 +49,7 @@ (doseq [_ (range (:count params))] (sb/path))))) -(core/defscene :paths +(decl/defscene :paths {:version 1 :description "Curved paths" :params-schema schema:params} @@ -57,16 +57,16 @@ (def ^:private base-view {:scale 1 :x 0 :y 0}) -(core/defcase :paths/load :paths +(decl/defcase :paths/load :paths {:params default-params :view base-view :context :fresh} (fn [rtx] (camera/load! rtx))) -(core/defcase :paths/pan :paths +(decl/defcase :paths/pan :paths {:params default-params :view base-view :context :reuse :operation {:steps 20 :dx 160 :dy 40 :settle-ms 100}} (fn [rtx] (camera/pan! rtx))) -(core/defcase :paths/zoom :paths +(decl/defcase :paths/zoom :paths {:params default-params :view base-view :context :reuse :operation {:steps 20 :factor 1.5 :settle-ms 100}} (fn [rtx] (camera/zoom! rtx))) diff --git a/frontend/test/benches/render_wasm/scenes/plus.cljs b/frontend/test/benches/render_wasm/scenes/plus.cljs index 9113d4fca2..5e9d705592 100644 --- a/frontend/test/benches/render_wasm/scenes/plus.cljs +++ b/frontend/test/benches/render_wasm/scenes/plus.cljs @@ -8,9 +8,9 @@ "Plus signs made of two open line subpaths" (:require [app.common.types.path :as path] - [benches.render-wasm.scenes.builder :as sb :include-macros true] - [benches.render-wasm.scenes.camera :as camera] - [benches.render-wasm.scenes.core :as core :include-macros true])) + [benches.render-wasm.builder :as sb :include-macros true] + [benches.render-wasm.declarations :as decl :include-macros true] + [benches.render-wasm.runtime.camera :as camera])) (def ^:private default-params {:count 1000 :width 1920 :height 1080}) @@ -44,7 +44,7 @@ (doseq [_ (range (:count params))] (sb/path))))) -(core/defscene :plus +(decl/defscene :plus {:version 1 :description "Plus signs made of two open line subpaths" :params-schema schema:params} @@ -52,16 +52,16 @@ (def ^:private base-view {:scale 1 :x 0 :y 0}) -(core/defcase :plus/load :plus +(decl/defcase :plus/load :plus {:params default-params :view base-view :context :fresh} (fn [rtx] (camera/load! rtx))) -(core/defcase :plus/pan :plus +(decl/defcase :plus/pan :plus {:params default-params :view base-view :context :reuse :operation {:steps 20 :dx 140 :dy 60 :settle-ms 100}} (fn [rtx] (camera/pan! rtx))) -(core/defcase :plus/zoom :plus +(decl/defcase :plus/zoom :plus {:params default-params :view base-view :context :reuse :operation {:steps 20 :factor 1.4 :settle-ms 100}} (fn [rtx] (camera/zoom! rtx))) diff --git a/frontend/test/benches/render_wasm/scenes/rects.cljs b/frontend/test/benches/render_wasm/scenes/rects.cljs index 1cf6b02e52..fbf4f7e1ac 100644 --- a/frontend/test/benches/render_wasm/scenes/rects.cljs +++ b/frontend/test/benches/render_wasm/scenes/rects.cljs @@ -15,14 +15,14 @@ browser executor; collection keeps only plain descriptors." (:require [app.common.schema :as sm] - [benches.render-wasm.scenes.builder :as sb :include-macros true] - [benches.render-wasm.scenes.camera :as camera] - [benches.render-wasm.scenes.core :as core :include-macros true])) + [benches.render-wasm.builder :as sb :include-macros true] + [benches.render-wasm.declarations :as decl :include-macros true] + [benches.render-wasm.runtime.camera :as camera])) ;; This namespace is also loaded by Node discovery. Keep operation helpers ;; portable: browser API/helper imports belong in browser adapters supplied ;; through rtx, not in this require list or its transitive dependencies. -;; See scenes.core's dependency contract before adding a capability. +;; See declarations' dependency contract before adding a capability. (def ^:private default-params {:count 1000 @@ -74,7 +74,7 @@ (doseq [_ (range (:count params))] (sb/rect))))) -(core/defscene :rects +(decl/defscene :rects {:version 1 :description "Seeded rectangles with translucent fills and centered strokes" :params-schema schema:params} @@ -83,13 +83,13 @@ (def ^:private base-view {:scale 1 :x 0 :y 0}) -(core/defcase :rects/load :rects +(decl/defcase :rects/load :rects {:params default-params :view base-view :context :fresh} (fn [rtx] (camera/load! rtx))) -(core/defcase :rects/pan :rects +(decl/defcase :rects/pan :rects {:params default-params :view base-view :context :reuse @@ -97,7 +97,7 @@ :operation {:steps 20 :dx 200 :dy 0 :settle-ms 100}} (fn [rtx] (camera/pan! rtx))) -(core/defcase :rects/zoom :rects +(decl/defcase :rects/zoom :rects {:params default-params :view base-view :context :reuse diff --git a/frontend/test/benches/render_wasm/scenes/common.cljs b/frontend/test/benches/render_wasm/snapshot.cljs similarity index 99% rename from frontend/test/benches/render_wasm/scenes/common.cljs rename to frontend/test/benches/render_wasm/snapshot.cljs index 757b3dfc3d..11f21fbeae 100644 --- a/frontend/test/benches/render_wasm/scenes/common.cljs +++ b/frontend/test/benches/render_wasm/snapshot.cljs @@ -4,7 +4,7 @@ ;; ;; Copyright (c) KALEIDOS SUBSIDIARY SL -(ns benches.render-wasm.scenes.common +(ns benches.render-wasm.snapshot "Utilities shared by generated and saved-page scenes. A scene snapshot is diff --git a/frontend/test/frontend_tests/benches/boolean_test.cljs b/frontend/test/frontend_tests/benches/boolean_test.cljs index 969b3d285e..02797adaf1 100644 --- a/frontend/test/frontend_tests/benches/boolean_test.cljs +++ b/frontend/test/frontend_tests/benches/boolean_test.cljs @@ -11,8 +11,8 @@ [app.common.types.path :as path] [app.common.types.path.segment :as segm] [app.common.uuid :as uuid] - [benches.render-wasm.scenes.builder :as b :include-macros true] - [benches.render-wasm.scenes.common :as common] + [benches.render-wasm.builder :as b :include-macros true] + [benches.render-wasm.snapshot :as common] [cljs.test :as t :include-macros true] [frontend-tests.benches.test-helpers :as helpers])) diff --git a/frontend/test/frontend_tests/benches/builder_test.cljs b/frontend/test/frontend_tests/benches/builder_test.cljs index f60eeeb716..ced46f93bf 100644 --- a/frontend/test/frontend_tests/benches/builder_test.cljs +++ b/frontend/test/frontend_tests/benches/builder_test.cljs @@ -7,9 +7,9 @@ (ns frontend-tests.benches.builder-test (:require [app.common.uuid :as uuid] - [benches.render-wasm.scenes.builder :as b :include-macros true] - [benches.render-wasm.scenes.common :as common] + [benches.render-wasm.builder :as b :include-macros true] [benches.render-wasm.scenes.rects :as rects] + [benches.render-wasm.snapshot :as common] [cljs.test :as t :include-macros true] [frontend-tests.benches.test-helpers :as helpers])) diff --git a/frontend/test/frontend_tests/benches/containers_test.cljs b/frontend/test/frontend_tests/benches/containers_test.cljs index 095ca5e45d..3d9f842f33 100644 --- a/frontend/test/frontend_tests/benches/containers_test.cljs +++ b/frontend/test/frontend_tests/benches/containers_test.cljs @@ -7,7 +7,7 @@ (ns frontend-tests.benches.containers-test (:require [app.common.uuid :as uuid] - [benches.render-wasm.scenes.builder :as builder :include-macros true] + [benches.render-wasm.builder :as builder :include-macros true] [cljs.test :as t :include-macros true] [frontend-tests.benches.test-helpers :as helpers])) diff --git a/frontend/test/frontend_tests/benches/contracts_test.cljs b/frontend/test/frontend_tests/benches/contracts_test.cljs index 1c1d8e750a..c9969e6136 100644 --- a/frontend/test/frontend_tests/benches/contracts_test.cljs +++ b/frontend/test/frontend_tests/benches/contracts_test.cljs @@ -9,7 +9,7 @@ [app.common.schema :as sm] [app.common.transit :as transit] [benches.render-wasm.cases :as cases] - [benches.render-wasm.scenes.core :as core :include-macros true] + [benches.render-wasm.declarations :as decl :include-macros true] [cljs.test :as t :include-macros true])) (defrecord Point [x y]) @@ -22,13 +22,13 @@ (swap! body-calls conj :touched) rtx) -(core/defscene :contracts-scene +(decl/defscene :contracts-scene {:version 1 :description "Synthetic scene for contract tests" :params-schema [:map {:closed true}]} (fn [params] params)) -(core/defcase :contracts-scene/case :contracts-scene +(decl/defcase :contracts-scene/case :contracts-scene {:params {} :view {:scale 1 :x 0 :y 0} :context :fresh} @@ -51,13 +51,13 @@ "Registers a synthetic scene and case under `scene-id`, runs `f`, then unregisters both so the live registry survives." [scene-id case-params f] - (core/register-scene! {:id scene-id + (decl/register-scene! {:id scene-id :ns "contracts-test" :version 1 :description "synthetic" :params-schema [:map {:closed true} [:count [:int {:min 1 :max 100000}]]] :build (fn [params] params)}) - (core/register-case! {:id (keyword (name scene-id) "case") + (decl/register-case! {:id (keyword (name scene-id) "case") :scene scene-id :ns "contracts-test" :params case-params @@ -66,11 +66,11 @@ (try (f) (finally - (core/unregister-case! (keyword (name scene-id) "case")) - (core/unregister-scene! scene-id)))) + (decl/unregister-case! (keyword (name scene-id) "case")) + (decl/unregister-scene! scene-id)))) (t/deftest defscene-registers-metadata-and-build - (let [scene (core/registered-scene :rects)] + (let [scene (decl/registered-scene :rects)] (t/is (= :rects (:id scene))) (t/is (= "benches.render-wasm.scenes.rects" (:ns scene))) (t/is (= 1 (:version scene))) @@ -85,7 +85,7 @@ (t/deftest real-rectangle-bodies-stay-out-of-node-descriptors (let [ids [:rects/load :rects/pan :rects/zoom]] - (t/is (every? #(fn? (:run! (core/registered-case %))) ids)) + (t/is (every? #(fn? (:run! (decl/registered-case %))) ids)) (t/is (= ids (mapv :id (rect-cases))) "collection succeeds with the executable bodies present") (t/is (every? #(not (contains? % :run!)) (rect-cases))))) @@ -94,7 +94,7 @@ (doseq [case-desc (rect-cases)] (t/is (not (contains? case-desc :run!)) (str (:id case-desc))) (t/is (not (contains? case-desc :ns)) (str (:id case-desc))) - (t/is (core/transit-round-trips? case-desc) (str (:id case-desc))))) + (t/is (decl/transit-round-trips? case-desc) (str (:id case-desc))))) (t/deftest rects-cases-carry-declared-view-context-and-completion (let [collected (rect-cases)] @@ -122,19 +122,19 @@ (t/deftest derive-seed-depends-on-scene-and-params-only (let [params {:count 1000 :width 1920 :height 1080 :min-size 20 :max-size 100} - base (core/derive-seed 42 :rects params)] + base (decl/derive-seed 42 :rects params)] (t/is (= 2602546180 base)) - (t/is (= base (core/derive-seed 42 :rects (into {} (reverse (seq params)))))) - (t/is (= 2993218129 (core/derive-seed 43 :rects params))) - (t/is (not= base (core/derive-seed 42 :rects (assoc params :count 10)))) - (t/is (not= base (core/derive-seed 42 :paths params))))) + (t/is (= base (decl/derive-seed 42 :rects (into {} (reverse (seq params)))))) + (t/is (= 2993218129 (decl/derive-seed 43 :rects params))) + (t/is (not= base (decl/derive-seed 42 :rects (assoc params :count 10)))) + (t/is (not= base (decl/derive-seed 42 :paths params))))) (t/deftest derive-seed-rejects-keys-it-cannot-tell-apart - (t/is (= ::core/invalid-params - (:type (failure-data #(core/derive-seed 42 :rects {"count" 1}))))) - (t/is (= ::core/invalid-params - (:type (failure-data #(core/derive-seed 42 :rects {:rects/count 1}))))) - (t/is (= :rects (:scene (failure-data #(core/derive-seed 42 :rects {"count" 1})))))) + (t/is (= ::decl/invalid-params + (:type (failure-data #(decl/derive-seed 42 :rects {"count" 1}))))) + (t/is (= ::decl/invalid-params + (:type (failure-data #(decl/derive-seed 42 :rects {:rects/count 1}))))) + (t/is (= :rects (:scene (failure-data #(decl/derive-seed 42 :rects {"count" 1})))))) (t/deftest unknown-params-are-rejected (with-synthetic-scene :contracts-unknown-params {:count 1 :bogus 2} @@ -155,7 +155,7 @@ (t/is (some? (::sm/explain data))))))) (t/deftest rects-workload-ranges-are-rejected - (let [schema (:params-schema (core/registered-scene :rects)) + (let [schema (:params-schema (decl/registered-scene :rects)) good {:count 1000 :width 1920 :height 1080 :min-size 20 :max-size 100}] (t/is (true? (sm/validate schema good))) (t/testing "reversed size range" @@ -169,16 +169,16 @@ (t/deftest view-coordinates-are-finite (let [good {:scale 1 :x 0 :y 0}] - (t/is (true? (sm/validate core/schema:view good))) + (t/is (true? (sm/validate decl/schema:view good))) (doseq [bad [(assoc good :scale js/Infinity) (assoc good :x js/NaN) (assoc good :y js/Infinity) (assoc good :viewport {:width js/NaN})]] - (t/is (false? (sm/validate core/schema:view bad)) (pr-str bad))))) + (t/is (false? (sm/validate decl/schema:view bad)) (pr-str bad))))) (t/deftest transit-rejects-unencodable-values - (t/is (false? (core/transit-round-trips? {:v (fn [] 1)}))) - (t/is (false? (core/transit-round-trips? {:point (->Point 1 2)})))) + (t/is (false? (decl/transit-round-trips? {:v (fn [] 1)}))) + (t/is (false? (decl/transit-round-trips? {:point (->Point 1 2)})))) (t/deftest transit-wire-preserves-json-lossy-shapes (doseq [value [{:foo 1 "foo" 2} @@ -198,21 +198,21 @@ (t/is (js/Number.isNaN (:nan decoded))) (t/is (= js/Infinity (:positive decoded))) (t/is (= js/-Infinity (:negative decoded))) - (t/is (core/transit-round-trips? value)) - (t/is (nil? (failure-data #(core/check-collected-case case-desc)))))) + (t/is (decl/transit-round-trips? value)) + (t/is (nil? (failure-data #(decl/check-collected-case case-desc)))))) (t/deftest unencodable-collected-values-are-rejected (let [good (first (rect-cases))] (doseq [bad [(assoc good :operation {:run (fn [] 1)}) (assoc good :operation {:point (->Point 1 2)})]] - (t/is (= ::core/non-serializable-case - (:type (failure-data #(core/check-collected-case bad)))) + (t/is (= ::decl/non-serializable-case + (:type (failure-data #(decl/check-collected-case bad)))) (pr-str bad))))) (t/deftest duplicate-scene-id-from-another-namespace-is-rejected - (t/is (= ::core/duplicate-scene + (t/is (= ::decl/duplicate-scene (:type (failure-data - #(core/register-scene! {:id :rects + #(decl/register-scene! {:id :rects :ns "another-namespace" :version 1 :description "x" @@ -221,51 +221,51 @@ (t/deftest same-namespace-registration-replaces (try - (core/register-scene! {:id :contracts-replaced + (decl/register-scene! {:id :contracts-replaced :ns "contracts-test" :version 1 :description "first" :params-schema [:map] :build (fn [params] params)}) - (core/register-scene! {:id :contracts-replaced + (decl/register-scene! {:id :contracts-replaced :ns "contracts-test" :version 2 :description "second" :params-schema [:map] :build (fn [params] params)}) - (t/is (= "second" (:description (core/registered-scene :contracts-replaced)))) + (t/is (= "second" (:description (decl/registered-scene :contracts-replaced)))) (finally - (core/unregister-scene! :contracts-replaced)))) + (decl/unregister-scene! :contracts-replaced)))) (t/deftest duplicate-case-id-from-another-namespace-is-rejected (try - (core/register-scene! {:id :contracts-dup + (decl/register-scene! {:id :contracts-dup :ns "contracts-test" :version 1 :description "x" :params-schema [:map] :build (fn [params] params)}) - (core/register-case! {:id :contracts-dup/case + (decl/register-case! {:id :contracts-dup/case :scene :contracts-dup :ns "contracts-test" :params {} :view {:scale 1 :x 0 :y 0} :context :fresh}) - (t/is (= ::core/duplicate-case + (t/is (= ::decl/duplicate-case (:type (failure-data - #(core/register-case! {:id :contracts-dup/case + #(decl/register-case! {:id :contracts-dup/case :scene :contracts-dup :ns "another-namespace" :params {} :view {:scale 1 :x 0 :y 0} :context :fresh}))))) (finally - (core/unregister-case! :contracts-dup/case) - (core/unregister-scene! :contracts-dup)))) + (decl/unregister-case! :contracts-dup/case) + (decl/unregister-scene! :contracts-dup)))) (t/deftest unknown-scene-reference-is-rejected (try - (core/register-case! {:id :contracts-missing/case + (decl/register-case! {:id :contracts-missing/case :scene :contracts-missing :ns "contracts-test" :params {} @@ -276,17 +276,17 @@ #(cases/collect-cases {:master-seed 42 :filter "contracts-missing/"}))))) (finally - (core/unregister-case! :contracts-missing/case)))) + (decl/unregister-case! :contracts-missing/case)))) (t/deftest case-id-must-be-namespaced-by-its-scene (try - (core/register-scene! {:id :contracts-other + (decl/register-scene! {:id :contracts-other :ns "contracts-test" :version 1 :description "x" :params-schema [:map] :build (fn [params] params)}) - (core/register-case! {:id :contracts-other/case + (decl/register-case! {:id :contracts-other/case :scene :rects :ns "contracts-test" :params {} @@ -297,47 +297,47 @@ #(cases/collect-cases {:master-seed 42 :filter "contracts-other/"}))))) (finally - (core/unregister-case! :contracts-other/case) - (core/unregister-scene! :contracts-other)))) + (decl/unregister-case! :contracts-other/case) + (decl/unregister-scene! :contracts-other)))) (t/deftest scene-without-params-schema-is-rejected (try - (core/register-scene! {:id :contracts-noschema + (decl/register-scene! {:id :contracts-noschema :ns "contracts-test" :version 1 :description "x" :build (fn [params] params)}) - (t/is (= ::core/invalid-scene + (t/is (= ::decl/invalid-scene (:type (failure-data #(cases/collect-cases {:master-seed 42}))))) (finally - (core/unregister-scene! :contracts-noschema)))) + (decl/unregister-scene! :contracts-noschema)))) (t/deftest malformed-params-schema-is-rejected (try - (core/register-scene! {:id :contracts-badschema + (decl/register-scene! {:id :contracts-badschema :ns "contracts-test" :version 1 :description "x" :params-schema [:map [:count]] :build (fn [params] params)}) (let [data (failure-data #(cases/collect-cases {:master-seed 42}))] - (t/is (= ::core/invalid-scene (:type data))) + (t/is (= ::decl/invalid-scene (:type data))) (t/is (= :contracts-badschema (:id data)))) (finally - (core/unregister-scene! :contracts-badschema)))) + (decl/unregister-scene! :contracts-badschema)))) (t/deftest qualified-scene-id-is-rejected (try - (core/register-scene! {:id :contracts-ns/scene + (decl/register-scene! {:id :contracts-ns/scene :ns "contracts-test" :version 1 :description "x" :params-schema [:map] :build (fn [params] params)}) - (t/is (= ::core/invalid-scene + (t/is (= ::decl/invalid-scene (:type (failure-data #(cases/collect-cases {:master-seed 42}))))) (finally - (core/unregister-scene! :contracts-ns/scene)))) + (decl/unregister-scene! :contracts-ns/scene)))) (t/deftest invalid-declarations-fail-outside-the-filter (with-synthetic-scene :contracts-global {:count 1 :bogus 2} @@ -348,13 +348,13 @@ (t/deftest incomplete-case-declaration-is-rejected (try - (core/register-scene! {:id :contracts-incomplete + (decl/register-scene! {:id :contracts-incomplete :ns "contracts-test" :version 1 :description "x" :params-schema [:map] :build (fn [params] params)}) - (core/register-case! {:id :contracts-incomplete/case + (decl/register-case! {:id :contracts-incomplete/case :scene :contracts-incomplete :ns "contracts-test" :params {} @@ -363,41 +363,41 @@ (:type (failure-data #(cases/collect-cases {:master-seed 42 :filter "contracts-incomplete/"}))))) (finally - (core/unregister-case! :contracts-incomplete/case) - (core/unregister-scene! :contracts-incomplete)))) + (decl/unregister-case! :contracts-incomplete/case) + (decl/unregister-scene! :contracts-incomplete)))) (t/deftest records-do-not-survive-the-wire (let [point (->Point 1 2)] - (t/is (false? (core/transit-round-trips? point))) - (t/is (false? (core/transit-round-trips? {:point point}))))) + (t/is (false? (decl/transit-round-trips? point))) + (t/is (false? (decl/transit-round-trips? {:point point}))))) (t/deftest case-replacement-preserves-order-and-unregister-removes (try - (core/register-scene! {:id :contracts-replacecase + (decl/register-scene! {:id :contracts-replacecase :ns "contracts-test" :version 1 :description "x" :params-schema [:map] :build (fn [params] params)}) - (core/register-case! {:id :contracts-replacecase/case + (decl/register-case! {:id :contracts-replacecase/case :scene :contracts-replacecase :ns "contracts-test" :params {} :view {:scale 1 :x 0 :y 0} :context :fresh}) - (core/register-case! {:id :contracts-replacecase/case + (decl/register-case! {:id :contracts-replacecase/case :scene :contracts-replacecase :ns "contracts-test" :params {} :view {:scale 2 :x 0 :y 0} :context :fresh}) - (t/is (= 1 (count (filter #(= :contracts-replacecase/case (:id %)) (core/cases))))) - (t/is (= {:scale 2 :x 0 :y 0} (:view (core/registered-case :contracts-replacecase/case)))) - (core/unregister-case! :contracts-replacecase/case) - (t/is (nil? (core/registered-case :contracts-replacecase/case))) + (t/is (= 1 (count (filter #(= :contracts-replacecase/case (:id %)) (decl/cases))))) + (t/is (= {:scale 2 :x 0 :y 0} (:view (decl/registered-case :contracts-replacecase/case)))) + (decl/unregister-case! :contracts-replacecase/case) + (t/is (nil? (decl/registered-case :contracts-replacecase/case))) (finally - (core/unregister-case! :contracts-replacecase/case) - (core/unregister-scene! :contracts-replacecase)))) + (decl/unregister-case! :contracts-replacecase/case) + (decl/unregister-scene! :contracts-replacecase)))) (t/deftest invalid-master-seed-is-rejected (doseq [seed [-1 4294967296 "42"]] @@ -420,17 +420,17 @@ (let [collected (cases/collect-cases {:master-seed 42 :filter "contracts-scene/"})] (t/is (= [:contracts-scene/case] (mapv :id collected))) (t/is (not (contains? (first collected) :run!))) - (t/is (core/transit-round-trips? (first collected)))) + (t/is (decl/transit-round-trips? (first collected)))) (t/is (empty? @body-calls)) - (let [entry (core/registered-case :contracts-scene/case)] + (let [entry (decl/registered-case :contracts-scene/case)] (t/is (= "frontend-tests.benches.contracts-test" (:ns entry))) (t/is (fn? (:run! entry))) (t/is (= :runtime ((:run! entry) :runtime))) (t/is (= [:touched] @body-calls)))) (t/deftest defcase-rejects-run-function-in-options - (t/is (= :benches.render-wasm.scenes.core/invalid-run-function + (t/is (= :benches.render-wasm.declarations/invalid-run-function (:type (failure-data - #(core/defcase :contracts-scene/unchecked :contracts-scene + #(decl/defcase :contracts-scene/unchecked :contracts-scene {:run! (fn [x y] [x y])}))))) - (t/is (nil? (core/registered-case :contracts-scene/unchecked)))) + (t/is (nil? (decl/registered-case :contracts-scene/unchecked)))) diff --git a/frontend/test/frontend_tests/benches/geometry_scenes_test.cljs b/frontend/test/frontend_tests/benches/geometry_scenes_test.cljs index fe5a3c95ab..581357e665 100644 --- a/frontend/test/frontend_tests/benches/geometry_scenes_test.cljs +++ b/frontend/test/frontend_tests/benches/geometry_scenes_test.cljs @@ -9,10 +9,10 @@ [app.common.types.path :as path] [app.common.uuid :as uuid] [benches.render-wasm.cases :as cases] - [benches.render-wasm.scenes.common :as common] [benches.render-wasm.scenes.masks :as masks] [benches.render-wasm.scenes.paths :as paths] [benches.render-wasm.scenes.plus :as plus] + [benches.render-wasm.snapshot :as common] [cljs.test :as t :include-macros true] [frontend-tests.benches.test-helpers :as helpers])) diff --git a/frontend/test/frontend_tests/benches/lifecycle_test.cljs b/frontend/test/frontend_tests/benches/lifecycle_test.cljs index b8d162e225..7ca297cf6a 100644 --- a/frontend/test/frontend_tests/benches/lifecycle_test.cljs +++ b/frontend/test/frontend_tests/benches/lifecycle_test.cljs @@ -13,9 +13,9 @@ (:require [app.common.render-wasm.wasm :as wasm] [app.common.transit :as transit] - [benches.render-wasm.browser :as browser] + [benches.render-wasm.browser.bridge :as browser] [benches.render-wasm.cases :as cases] - [benches.render-wasm.scenes.core :as core] + [benches.render-wasm.declarations :as decl] [cljs.test :as t :include-macros true])) ;; Forward declaration: entry-test helpers below build args against the @@ -96,14 +96,14 @@ (t/deftest wrong-scene-body-fails-before-claim (let [id :rects/wrong-scene descriptor (load-case)] - (core/register-case! {:id id :scene :other :ns "lifecycle-test" + (decl/register-case! {:id id :scene :other :ns "lifecycle-test" :run! (fn [_] nil)}) (try (let [request (transit/encode-str {:case (assoc descriptor :id id)}) parsed (@#'browser/parse-load-request request)] (t/is (= "invalid-args" (get-in parsed [:error :phase])))) (finally - (core/unregister-case! id))))) + (decl/unregister-case! id))))) (t/deftest non-finite-view-values-fail-before-timers (t/async done @@ -119,9 +119,9 @@ (t/deftest viewport-defaults-apply-at-use (t/is (= {:width 1920 :height 1080 :dpr 2} - (core/resolve-viewport {:scale 1 :x 0 :y 0}))) + (decl/resolve-viewport {:scale 1 :x 0 :y 0}))) (t/is (= {:width 800 :height 600 :dpr 2} - (core/resolve-viewport {:scale 1 :x 0 :y 0 + (decl/resolve-viewport {:scale 1 :x 0 :y 0 :viewport {:width 800 :height 600}})))) (t/deftest dispose-resets-lifecycle-state @@ -470,7 +470,7 @@ vector, wire contract, failing fn name, fake message and WASM code." [cause fn-name message-pattern] (t/is (vector? cause) "cause is plain-data vector") - (t/is (core/transit-round-trips? cause) "cause satisfies wire contract") + (t/is (decl/transit-round-trips? cause) "cause satisfies wire contract") (t/is (some #(= fn-name (:fn %)) cause) "cause names the failing WASM fn") (t/is (some #(and (string? (:message %)) (re-find message-pattern (:message %))) @@ -539,7 +539,7 @@ (t/is (= "aborted" (:phase m))) (t/is (= "boom" (:message m)) "top message stays as-is") (t/is (vector? cause) "cause is plain-data vector") - (t/is (core/transit-round-trips? cause) "hostile values become strings") + (t/is (decl/transit-round-trips? cause) "hostile values become strings") (t/is (every? (fn [entry] (every? (fn [[_ v]] (or (not (string? v)) (<= (count v) 500))) @@ -568,7 +568,7 @@ cause (:cause m) outer (first cause)] (t/is (= "failed" (:status m))) - (t/is (core/transit-round-trips? cause) "throwing value still crosses the wire") + (t/is (decl/transit-round-trips? cause) "throwing value still crosses the wire") (t/is (= "unrenderable value" (:fn outer)) "stringification failure falls back"))) (t/testing "causes pr-str cannot render fall back to plain strings" @@ -583,7 +583,7 @@ m result cause (:cause m)] (t/is (= "failed" (:status m))) - (t/is (core/transit-round-trips? cause) "throwing cause still crosses the wire") + (t/is (decl/transit-round-trips? cause) "throwing cause still crosses the wire") (t/is (= "unrenderable cause" (:message (first cause))) "level fallback holds")))) diff --git a/frontend/test/frontend_tests/benches/protocol_test.cljs b/frontend/test/frontend_tests/benches/protocol_test.cljs index 00cbc72e3f..950ea6cd46 100644 --- a/frontend/test/frontend_tests/benches/protocol_test.cljs +++ b/frontend/test/frontend_tests/benches/protocol_test.cljs @@ -9,7 +9,7 @@ Browser entry tests cover load and warm pan with a fake module." (:require [app.common.render-wasm.wasm :as wasm] - [benches.render-wasm.protocol :as protocol] + [benches.render-wasm.runtime.protocol :as protocol] [cljs.test :as t :include-macros true])) (defn- fake-clock @@ -114,7 +114,7 @@ (t/is false (str "must reject for frame type " bad)) (done))) (.catch (fn [cause] - (t/is (= :benches.render-wasm.protocol/unexpected-frame-type + (t/is (= :benches.render-wasm.runtime.protocol/unexpected-frame-type (:type (ex-data cause))) (str "frame type " bad)) (step (rest remaining))))))))] diff --git a/frontend/test/frontend_tests/benches/scene_snapshot_test.cljs b/frontend/test/frontend_tests/benches/scene_snapshot_test.cljs index eecd92ba9e..fb484ead4d 100644 --- a/frontend/test/frontend_tests/benches/scene_snapshot_test.cljs +++ b/frontend/test/frontend_tests/benches/scene_snapshot_test.cljs @@ -9,7 +9,7 @@ [app.common.schema :as sm] [app.common.types.shape :as cts] [app.common.uuid :as uuid] - [benches.render-wasm.scenes.common :as common] + [benches.render-wasm.snapshot :as common] [cljs.test :as t :include-macros true])) (defn- sample-snapshot diff --git a/frontend/test/frontend_tests/benches/test_helpers.cljs b/frontend/test/frontend_tests/benches/test_helpers.cljs index 605050d398..5eec3e4bb9 100644 --- a/frontend/test/frontend_tests/benches/test_helpers.cljs +++ b/frontend/test/frontend_tests/benches/test_helpers.cljs @@ -6,7 +6,7 @@ test namespace tells a complete story without copying bodies." (:require [app.common.uuid :as uuid] - [benches.render-wasm.scenes.builder :as builder])) + [benches.render-wasm.builder :as builder])) (defn failure-data "Returns the ex-data of the thrown failure, or nil when `f` passes." diff --git a/frontend/test/frontend_tests/benches/upload_test.cljs b/frontend/test/frontend_tests/benches/upload_test.cljs index 60d75150a8..ddd452d0b1 100644 --- a/frontend/test/frontend_tests/benches/upload_test.cljs +++ b/frontend/test/frontend_tests/benches/upload_test.cljs @@ -5,18 +5,18 @@ ;; Copyright (c) KALEIDOS SUBSIDIARY SL (ns frontend-tests.benches.upload-test - "Test routing contract for `benches.render-wasm.upload/upload-scene!`. + "Test routing contract for `benches.render-wasm.browser.upload/upload-scene!`. Byte layouts are proven by `frontend-tests.render-wasm.serialization-test` and `process-objects-test`; this suite pins: the order comes from - `scenes.common/upload-order`, the batch helper is called exactly once with + `snapshot/upload-order`, the batch helper is called exactly once with the caller's opts, and the prepared vector is returned in order." (:require [app.common.render-wasm.api.upload :as upload] [app.common.types.shape :as cts] [app.common.uuid :as uuid] - [benches.render-wasm.scenes.common :as common] - [benches.render-wasm.upload :as bench-upload] + [benches.render-wasm.browser.upload :as bench-upload] + [benches.render-wasm.snapshot :as common] [cljs.test :as t :include-macros true])) (defn- sample-snapshot