Entity / API

foldkit-entity/conformance

The conformance suite for a query body: what data-query-DESIGN §6.0.1 says each operator means, as cases an interpreter can be run against.

Exported rather than kept in this repository's tests, because the interpreter most worth checking against it is one written elsewhere: run every case through yours and compare the ids, in order, against expected.

§18 names portable-kernel conformance as what the reference interpreter is for. This is that, extracted: one set of cases, run against every interpreter rather than each interpreter having its own tests that happen to agree. foldkit-remote-server runs them over rows in memory; foldkit-remote-drizzle compiles them to SQL and runs them against a real SQLite. A body that means two things fails in whichever is wrong.

The cases are chosen to make interpreters disagree, which is the only kind that tests anything. A fixture whose values are all lowercase cannot tell a case-sensitive contains from a case-insensitive one — that is not a hypothetical, it is how contains reached a released package meaning three different things.

Values

cases
refusals
rows
SubjectThe one Entity every case reads, with a column of each kind that matters.

Interfaces

ConformanceCase
ConformanceRefusalA body whose answer no two interpreters agree on, so every interpreter must refuse it rather than answer. Run each through yours and expect a failure.
ConformanceRowHow a row looks to an interpreter reading values, and to SQL as a table. The index signature is what lets one be read by key without a cast, which is how an…