Core and the app · crate

kinogaki-testkit

Core

Kinogaki Studio's core testkit: toy packages written against the SDK alone, so core is tested with no real plugin.

Repository
Core and the app (kinogaki/studio-core)
Folder
studio/core/testkit
Source
48 files, 11,992 lines
Tests
0 files, 0 lines
Depends on This crate Used by Studio's color service: the OpenColorIO config (lib-color's built-in ACES 2.0 CG config, or a file), the working space, and the viewer's display, view, look, exposure and gamma.kinogaki-color-service Studio's core cooking engine, the same for every network kind (the owner's rule: the cooking DAG for nodes is core's).kinogaki-cook Core's own SDK package (`kinogaki.core`): what Studio holds whatever plugins are installed.kinogaki-core-package Studio's document: the scene, a tree of objects under one root, and the core network each object of a kind naming a context holds.kinogaki-document Kinogaki's vectors, points, matrices, quaternions and deterministic elementary functions.kinogaki-math Studio's core networks (design: core-owned networks; "Cooking DAG for nodes is studio core").kinogaki-network Prism documents for Kinogaki.kinogaki-prism Studio's project files: a document as a Prism document.kinogaki-project Kinogaki's render interface: what a host (Studio) sends a render engine and what comes back, with no GPU or OS API.kinogaki-render-api Kinogaki Studio's headless plugin API.kinogaki-studio-api The SDK's test support (a dev-dependency only): [`assert_refused`] for admission tests, [`read_hostile`] for a format's tests of hostile files, [`format`](mod@format) for its scratch folders and round trips, [`workers`] as a host installs them, with `wgpu` an ...kinogaki-studio-api-testing Kinogaki Studio's UI layer for plugins.kinogaki-studio-ui-api The UI layer's test support (a dev-dependency only): headless fakes of the host's UI for plugin unit tests: [`RecordingUi`] and [`RecordingPainter`] record what a plugin asks to show and draw, and play back scripted user actions, with no window and no GPU ...kinogaki-studio-ui-api-testing Kinogaki's viewport packet contract: what a data type hands Studio's viewport to draw, with no GPU or UI API.kinogaki-viewport-api kinogaki-testkit Studio's test harness: the real editor, its event routing and its background work, driven offscreen with only the packages a test names.kinogaki-harness
depends onused by tests alonedependencies for tests alone are listed below, not drawn

What it is

Kinogaki Studio's core testkit: toy packages written against the SDK alone, so core is tested with no real plugin. Plugins use it as a dev-dependency only (tools/architecture).

PackageNameWhat it covers
board (toy.board)boarda context with every UI part: library, inspector, viewport layer (keys, holds, popovers, controls, overlay, and a live tool, Stretch, with its card, its drag, its heads-up value and its numeric bar), a level and its stacked list, a vocabulary, object rows (told when a board is first inspected), results; a user settings page whose rows show live state over a user value a creation reads; undoable slots; a pin the host's gizmo moves; a declared handle (Row's Spacing); a core network with a held edit and a multi-input
blocks (toy.blocks)blocksa drawable data type with every facet (Displayable with tallies and boxes, ObjectPicking with templated branches' pieces, Look, Snappable, Tabular, Renderable as a TriangleSource); node types for every ValueKind, a box handle, a time-reading animatable number, a failing cook and a slow one, a Merge taking operands; tools, and a viewport layer whose live node a test sets
files (toy.files)filesa format (toy.format.blocks) that reads and writes .blocks files, and two toy image formats (images: .picture, written as a display shows an image, and .light, as linear light), whose reads of a file a test holds wait until it lets them go (held)
looks (toy.looks, linked)—a format of materials, images and domes (toy.format.looks): a file's whole Shading networks and standard forms, textures on disk, embedded or packed in the file, a dome naming an image by key
shapes (toy.shapes)shapesa headless toy kernel over the standard data types core registers: a Quad making polygons, a Line making curves, and a toy modelling tool over core's editing API on both its paths, an Extrude cooking and an Edit holding stored edits that save
pictures (toy.pictures)picturesstandard images: a Ramp making one over a data window of tiles, a Dab replacing one tile, both painted by core's 2D canvas; an Arranged node making a value painted as pieces under placements, with text
handles (toy.handles, linked)—a node type and an object kind giving the handles a test declares; the kind a render prim written back through with_declared
patches (toy.patches, linked)—a context with Point, Edge and Face levels that combine, a Piece level (connected pieces) and an All preset over core's standard Geometry (a Patch object's Grid), keeping its selection in an undoable slot and every hit the host hands it
layers (toy.layers, linked)—a value drawn as ordered pieces (a Pile's Layers, a square a layer) whose viewport layer chooses which of them draw (Edited::pieces)
ledger (toy.ledger, linked)—project settings alone: two values of the project's (a number and a path row) and Settings ▸ Project's section editing them
planar (toy.planar, linked)—a B-rep mesher: planar faces of one loop as polygons, straight edges as polylines
shading (test.shade, linked)—two toy engines' material nodes (a Paint, a Flat), each translating the other's
stage (toy.stage, linked)—an engine and its Light kind (a render prim of a type it names), and core's Render Output for an engine, what core's render sync reads with no engine package
tracer (toy.tracer, linked)—a render engine on the SDK alone: its own material nodes, a CPU ray caster on a thread of its own, lit by what its lights add up to, instances and motion, previews and display approximations, idle and cancel; made on a host's device with the crate's engine feature
crates (toy.crates)cratesa headless package (no UI part): a core network context, a listed node type with vector rows and an object kind opening into it, served by core's UI alone; a Pallet node holding a labels network of Label nodes inside it (Description::holding), and a Shelf holding one it reads (Reads::inside); the labels context adopting the Crate node; a networkless Rack kind with a value and published Materials

fixtures builds the networks tests and latency workloads use, and kino is the .kino format suite's harness (round trips, comparisons, generated fixtures, damage), which core/project's tests and any plugin's run. render_output is core's Render Output kind, which a plugin's tests read a render output through.

Choosing packages. A host's tests ask for packages by name as --plugins does ("blocks,files", packages); toy names all of the testkit's. Render engines aren't the testkit's: tests that render with a real engine ask for it by its own name.

Depends on

CrateRepositoryAsWhat it is
kinogaki-color-serviceCore and the appnormalStudio's color service: the OpenColorIO config (lib-color's built-in ACES 2.0 CG config, or a file), the working space, and the viewer's display, view, look, exposure and gamma.
kinogaki-cookCore and the appnormalStudio's core cooking engine, the same for every network kind (the owner's rule: the cooking DAG for nodes is core's).
kinogaki-core-packageCore and the appnormalCore's own SDK package (kinogaki.core): what Studio holds whatever plugins are installed.
kinogaki-documentCore and the appnormalStudio's document: the scene, a tree of objects under one root, and the core network each object of a kind naming a context holds.
kinogaki-mathlib-mathnormalKinogaki's vectors, points, matrices, quaternions and deterministic elementary functions.
kinogaki-networkCore and the appnormalStudio's core networks (design: core-owned networks; "Cooking DAG for nodes is studio core").
kinogaki-prismlib-prismnormalPrism documents for Kinogaki.
kinogaki-projectCore and the appnormalStudio's project files: a document as a Prism document.
kinogaki-render-apiSDKnormalKinogaki's render interface: what a host (Studio) sends a render engine and what comes back, with no GPU or OS API.
kinogaki-studio-apiSDKnormalKinogaki Studio's headless plugin API.
kinogaki-studio-api-testingSDKnormalThe SDK's test support (a dev-dependency only): assert_refused for admission tests, read_hostile for a format's tests of hostile files, format for its scratch folders and round trips, workers as a host installs them, with wgpu an ...
kinogaki-studio-ui-apiSDKnormalKinogaki Studio's UI layer for plugins.
kinogaki-studio-ui-api-testingSDKnormalThe UI layer's test support (a dev-dependency only): headless fakes of the host's UI for plugin unit tests: RecordingUi and RecordingPainter record what a plugin asks to show and draw, and play back scripted user actions, with no window and no GPU ...
kinogaki-viewport-apiSDKnormalKinogaki's viewport packet contract: what a data type hands Studio's viewport to draw, with no GPU or UI API.

Third-party

None.

Used by

CrateRepositoryAsWhat it is
kinogaki-compComptestsComp as an SDK package (kinogaki.comp): what fills Studio's Comp context (kinogaki.core.comp, core declares it, inside a Render Output object).
kinogaki-documentCore and the apptestsStudio's document: the scene, a tree of objects under one root, and the core network each object of a kind naming a context holds.
kinogaki-editorCore and the apptestsKinogaki Studio's editor: the document and everything the window shows of it, as parts one frame borrows one by one.
kinogaki-harnessCore and the appnormalStudio's test harness: the real editor, its event routing and its background work, driven offscreen with only the packages a test names.
kinogaki-image-pipelineCore and the apptestsImagePipeline: what renders become on screen and in files.
kinogaki-layoutLayouttestsThe Layout context: a page on the 2D canvas and the pieces arranged on it, images and text, back to front in the order their nodes run.
kinogaki-meshMeshtestsThe Mesh plugin: polygon modelling, Maya's and Houdini's toolset on core's editing API (plugins/mesh/PLAN.md holds the inventory and its groups).
kinogaki-mesh-kernelMeshtestsThe Mesh kernel: the heavy, robustness-critical polygon algorithms, offered to every package as verbs (kernel).
kinogaki-networkCore and the apptestsStudio's core networks (design: core-owned networks; "Cooking DAG for nodes is studio core").
kinogaki-projectCore and the apptestsStudio's project files: a document as a Prism document.
kinogaki-sceneCore and the apptestsStudio's scene: the document cooked object by object.
kinogaki-spectreSpectretestsSpectre, the spectral path tracer, as a Kinogaki Studio render plugin.
kinogaki-workflowsWorkflowstestsTests alone: tests/workflows drives what a person does across the plugins the app ships, through the real editor offscreen.

Modules

Public types and traits

Re-exported from other crates

From kinogaki_core_package render_output

By module: 44 public types and traits in 23 modules

blocks BlocksBodyTools

blocks::data BlockBlocksBlocksTypeBlockTrianglesPicked

board BoardBoardBodyMarksPinProbeSpanStretchingToy

board::settings BoardSettings

crates RackBody

engine RecordedSent

handles GateTool

held Hold

images ToyImages

kino::compare Cooked

kino::fixtures SkippedVariant

kino::mutate Damaged

kino::rng Rng

layers Shown

ledger CountLedgerSpacingTemplate

looks Looks

patches PatchesProbe

patches::extrude Drag

pictures Arrangement

planar Planar

shapes::extrude Stored

tracer Rules

tracer::worker AppliedCountersTracer

Besides these, 145 public functions at module level.