Matrix: typing-surface infrastructure + insert Form A coverage

Per docs/handoff/20260515-handoff-12.md §1. Systematic per-position
coverage of (state, hint, completion, parse_result) across canonical
schema shapes; submodule per command family. Insert Form A covers 23
cursor positions across serial-PK, text-PK, multi-table, and
every-Type schemas. Both bugs fixed in the previous commit were
surfaced by these tests.

Shared helpers under tests/typing_surface/mod.rs: 5 canonical schema
shapes, assess() helper, property-assertion shortcuts, and a snap!
macro that wraps insta with a stable per-cell suffix.

859 -> 885 tests passing; 1 ignored (pre-existing doc-test).
This commit is contained in:
claude@clouddev1
2026-05-15 20:06:58 +00:00
parent 0b15ce0306
commit 24e641bc21
38 changed files with 1641 additions and 0 deletions
@@ -0,0 +1,39 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Customers (Name)\" cursor=28"
expression: "& a"
---
Assessment {
input: "insert into Customers (Name)",
cursor: 28,
state: IncompleteAtEof,
hint: Some(
Candidates {
items: [
Candidate {
text: "values",
kind: Keyword,
},
],
selected: None,
},
),
completion: Some(
Completion {
replaced_range: (
28,
28,
),
partial_prefix: "",
candidates: [
Candidate {
text: "values",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,39 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert\" cursor=6"
expression: "& a"
---
Assessment {
input: "insert",
cursor: 6,
state: IncompleteAtEof,
hint: Some(
Candidates {
items: [
Candidate {
text: "insert",
kind: Keyword,
},
],
selected: None,
},
),
completion: Some(
Completion {
replaced_range: (
0,
6,
),
partial_prefix: "insert",
candidates: [
Candidate {
text: "insert",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,39 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert \" cursor=7"
expression: "& a"
---
Assessment {
input: "insert ",
cursor: 7,
state: IncompleteAtEof,
hint: Some(
Candidates {
items: [
Candidate {
text: "into",
kind: Keyword,
},
],
selected: None,
},
),
completion: Some(
Completion {
replaced_range: (
7,
7,
),
partial_prefix: "",
candidates: [
Candidate {
text: "into",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,39 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into \" cursor=12"
expression: "& a"
---
Assessment {
input: "insert into ",
cursor: 12,
state: IncompleteAtEof,
hint: Some(
Candidates {
items: [
Candidate {
text: "Customers",
kind: Identifier,
},
],
selected: None,
},
),
completion: Some(
Completion {
replaced_range: (
12,
12,
),
partial_prefix: "",
candidates: [
Candidate {
text: "Customers",
kind: Identifier,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,47 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into \" cursor=12"
expression: "& a"
---
Assessment {
input: "insert into ",
cursor: 12,
state: IncompleteAtEof,
hint: Some(
Candidates {
items: [
Candidate {
text: "Customers",
kind: Identifier,
},
Candidate {
text: "Orders",
kind: Identifier,
},
],
selected: None,
},
),
completion: Some(
Completion {
replaced_range: (
12,
12,
),
partial_prefix: "",
candidates: [
Candidate {
text: "Customers",
kind: Identifier,
},
Candidate {
text: "Orders",
kind: Identifier,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,49 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Customers (\" cursor=23"
expression: "& a"
---
Assessment {
input: "insert into Customers (",
cursor: 23,
state: IncompleteAtEof,
hint: Some(
Prose(
"Type a value: number, 'text', true/false, null (dates as 'YYYY-MM-DD', datetimes as 'YYYY-MM-DDTHH:MM:SS')",
),
),
completion: Some(
Completion {
replaced_range: (
23,
23,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
Candidate {
text: "true",
kind: Keyword,
},
Candidate {
text: "false",
kind: Keyword,
},
Candidate {
text: "Name",
kind: Identifier,
},
Candidate {
text: "id",
kind: Identifier,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,53 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Customers (\" cursor=23"
expression: "& a"
---
Assessment {
input: "insert into Customers (",
cursor: 23,
state: IncompleteAtEof,
hint: Some(
Prose(
"Type a value: number, 'text', true/false, null (dates as 'YYYY-MM-DD', datetimes as 'YYYY-MM-DDTHH:MM:SS')",
),
),
completion: Some(
Completion {
replaced_range: (
23,
23,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
Candidate {
text: "true",
kind: Keyword,
},
Candidate {
text: "false",
kind: Keyword,
},
Candidate {
text: "Email",
kind: Identifier,
},
Candidate {
text: "Name",
kind: Identifier,
},
Candidate {
text: "id",
kind: Identifier,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,49 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Items (\" cursor=19"
expression: "& a"
---
Assessment {
input: "insert into Items (",
cursor: 19,
state: IncompleteAtEof,
hint: Some(
Prose(
"Type a value: number, 'text', true/false, null (dates as 'YYYY-MM-DD', datetimes as 'YYYY-MM-DDTHH:MM:SS')",
),
),
completion: Some(
Completion {
replaced_range: (
19,
19,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
Candidate {
text: "true",
kind: Keyword,
},
Candidate {
text: "false",
kind: Keyword,
},
Candidate {
text: "Code",
kind: Identifier,
},
Candidate {
text: "Title",
kind: Identifier,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,47 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Customers \" cursor=22"
expression: "& a"
---
Assessment {
input: "insert into Customers ",
cursor: 22,
state: IncompleteAtEof,
hint: Some(
Candidates {
items: [
Candidate {
text: "values",
kind: Keyword,
},
Candidate {
text: "(",
kind: Punct,
},
],
selected: None,
},
),
completion: Some(
Completion {
replaced_range: (
22,
22,
),
partial_prefix: "",
candidates: [
Candidate {
text: "values",
kind: Keyword,
},
Candidate {
text: "(",
kind: Punct,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,39 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Customers (Name) values \" cursor=36"
expression: "& a"
---
Assessment {
input: "insert into Customers (Name) values ",
cursor: 36,
state: IncompleteAtEof,
hint: Some(
Candidates {
items: [
Candidate {
text: "(",
kind: Punct,
},
],
selected: None,
},
),
completion: Some(
Completion {
replaced_range: (
36,
36,
),
partial_prefix: "",
candidates: [
Candidate {
text: "(",
kind: Punct,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,33 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Customers (id, Name) values (\" cursor=41"
expression: "& a"
---
Assessment {
input: "insert into Customers (id, Name) values (",
cursor: 41,
state: IncompleteAtEof,
hint: Some(
Prose(
"for `id`: Type null to auto-generate, or an explicit integer",
),
),
completion: Some(
Completion {
replaced_range: (
41,
41,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,33 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Customers (Name) values (\" cursor=37"
expression: "& a"
---
Assessment {
input: "insert into Customers (Name) values (",
cursor: 37,
state: IncompleteAtEof,
hint: Some(
Prose(
"for `Name`: Type a quoted string (e.g. 'Alice') or null",
),
),
completion: Some(
Completion {
replaced_range: (
37,
37,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,41 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Things (b) values (\" cursor=31"
expression: "& a"
---
Assessment {
input: "insert into Things (b) values (",
cursor: 31,
state: IncompleteAtEof,
hint: Some(
Prose(
"for `b`: Type true, false, or null",
),
),
completion: Some(
Completion {
replaced_range: (
31,
31,
),
partial_prefix: "",
candidates: [
Candidate {
text: "true",
kind: Keyword,
},
Candidate {
text: "false",
kind: Keyword,
},
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,19 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Customers (Name, Email) values ('Alice', 'a@b.c')\" cursor=61"
expression: "& a"
---
Assessment {
input: "insert into Customers (Name, Email) values ('Alice', 'a@b.c')",
cursor: 61,
state: Valid,
hint: Some(
Prose(
"Submit with Enter",
),
),
completion: None,
parse_result: Ok(
"Insert",
),
}
@@ -0,0 +1,19 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Customers (id, Name, Email) values (1, 'Alice', 'a@b.c')\" cursor=68"
expression: "& a"
---
Assessment {
input: "insert into Customers (id, Name, Email) values (1, 'Alice', 'a@b.c')",
cursor: 68,
state: Valid,
hint: Some(
Prose(
"Submit with Enter",
),
),
completion: None,
parse_result: Ok(
"Insert",
),
}
@@ -0,0 +1,33 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Things (dt) values (\" cursor=32"
expression: "& a"
---
Assessment {
input: "insert into Things (dt) values (",
cursor: 32,
state: IncompleteAtEof,
hint: Some(
Prose(
"for `dt`: Type a quoted date as 'YYYY-MM-DD' or null",
),
),
completion: Some(
Completion {
replaced_range: (
32,
32,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,19 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Orders (OrderId, CustId, Total) values (42, 89, 17.59\" cursor=65"
expression: "& a"
---
Assessment {
input: "insert into Orders (OrderId, CustId, Total) values (42, 89, 17.59",
cursor: 65,
state: IncompleteAtEof,
hint: Some(
Prose(
"Next: `)`",
),
),
completion: None,
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,19 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Orders (OrderId, CustId, Total) values (42\" cursor=54"
expression: "& a"
---
Assessment {
input: "insert into Orders (OrderId, CustId, Total) values (42",
cursor: 54,
state: IncompleteAtEof,
hint: Some(
Prose(
"Next: `)`",
),
),
completion: None,
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,33 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Things (k) values (\" cursor=31"
expression: "& a"
---
Assessment {
input: "insert into Things (k) values (",
cursor: 31,
state: IncompleteAtEof,
hint: Some(
Prose(
"for `k`: Type an integer (e.g. 42, -7) or null",
),
),
completion: Some(
Completion {
replaced_range: (
31,
31,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,53 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Orders (\" cursor=20"
expression: "& a"
---
Assessment {
input: "insert into Orders (",
cursor: 20,
state: IncompleteAtEof,
hint: Some(
Prose(
"Type a value: number, 'text', true/false, null (dates as 'YYYY-MM-DD', datetimes as 'YYYY-MM-DDTHH:MM:SS')",
),
),
completion: Some(
Completion {
replaced_range: (
20,
20,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
Candidate {
text: "true",
kind: Keyword,
},
Candidate {
text: "false",
kind: Keyword,
},
Candidate {
text: "CustId",
kind: Identifier,
},
Candidate {
text: "OrderId",
kind: Identifier,
},
Candidate {
text: "Total",
kind: Identifier,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,33 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Things (sid) values (\" cursor=33"
expression: "& a"
---
Assessment {
input: "insert into Things (sid) values (",
cursor: 33,
state: IncompleteAtEof,
hint: Some(
Prose(
"for `sid`: Type null to auto-generate, or a quoted shortid",
),
),
completion: Some(
Completion {
replaced_range: (
33,
33,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,53 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Customers (id, \" cursor=27"
expression: "& a"
---
Assessment {
input: "insert into Customers (id, ",
cursor: 27,
state: IncompleteAtEof,
hint: Some(
Prose(
"Type a value: number, 'text', true/false, null (dates as 'YYYY-MM-DD', datetimes as 'YYYY-MM-DDTHH:MM:SS')",
),
),
completion: Some(
Completion {
replaced_range: (
27,
27,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
Candidate {
text: "true",
kind: Keyword,
},
Candidate {
text: "false",
kind: Keyword,
},
Candidate {
text: "Email",
kind: Identifier,
},
Candidate {
text: "Name",
kind: Identifier,
},
Candidate {
text: "id",
kind: Identifier,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,33 @@
---
source: tests/typing_surface/insert_form_a.rs
description: "input=\"insert into Customers (Name, Email) values ('Alice', \" cursor=53"
expression: "& a"
---
Assessment {
input: "insert into Customers (Name, Email) values ('Alice', ",
cursor: 53,
state: IncompleteAtEof,
hint: Some(
Prose(
"for `Email`: Type a quoted string (e.g. 'Alice') or null",
),
),
completion: Some(
Completion {
replaced_range: (
53,
53,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}