macro_rules! corpus {
($($name:literal),+ $(,)?) => {
pub const ALL: &[(&str, &[u8])] = &[
$(($name, include_bytes!(concat!("../fixtures/", $name)))),+
];
};
}
corpus!(
"accepted_operation.json",
"agent_body_ref.bin",
"agent_card.bin",
"agent_chunk.bin",
"agent_chunk_open.bin",
"agent_chunk_terminal.bin",
"agent_command.bin",
"agent_command_signed.bin",
"agent_dead_letter.bin",
"agent_error.bin",
"agent_error_body.bin",
"agent_event.bin",
"agent_invalid_chunk_late_deadline.bin",
"agent_invalid_chunk_no_sequence.bin",
"agent_invalid_chunk_open_no_operation.bin",
"agent_invalid_command_no_correlation.bin",
"agent_invalid_error_last.bin",
"agent_invalid_event_task_state.bin",
"agent_invalid_response_channel.bin",
"agent_invalid_status_bad_operation.bin",
"agent_invalid_status_no_operation.bin",
"agent_must_understand.bin",
"agent_presence.bin",
"agent_record.bin",
"agent_response.bin",
"agent_session_end.bin",
"agent_session_parking.bin",
"agent_session_start.bin",
"agent_session_status.bin",
"agent_session_transition.bin",
"session_get.bin",
"session_list.bin",
"session_events.bin",
"session_state.bin",
"session_links.bin",
"session_sources.bin",
"session_sources_lane_only.bin",
"session_changes.bin",
"session_link_surface.bin",
"session_link_relation.bin",
"session_heartbeat.bin",
"session_reply_info.bin",
"session_reply_page.bin",
"session_reply_events.bin",
"session_reply_state.bin",
"session_reply_links.bin",
"session_reply_sources.bin",
"session_reply_changes.bin",
"session_reply_error.bin",
"agent_signature.bin",
"agent_status_card.bin",
"agent_status_session.bin",
"agent_status_task.bin",
"agent_usage_cost.bin",
"authz_bind_roles.bin",
"authz_get_role_reply.bin",
"authz_history_reply.bin",
"authz_history_request.bin",
"authz_role.bin",
"authz_whoami_reply.bin",
"arrow_ipc_metadata.bin",
"arrow_ipc_policy.bin",
"backend_announce.bin",
"backend_announce_topology.bin",
"backend_announce_unavailable.bin",
"batch_reply.bin",
"batch_request.bin",
"browse_projections.json",
"browse_reply_decoded.bin",
"browse_reply_projections.bin",
"browse_reply_schema_registered.bin",
"browse_reply_schemas.bin",
"browse_schemas.json",
"capabilities.json",
"change_record.bin",
"checkpoint_mutation_replicated.bin",
"checkpoint_public_mutation_discriminants.bin",
"checkpoint_reply_destination.bin",
"checkpoint_reply_query_route.bin",
"checkpoint_request_public.bin",
"client_metadata_list.bin",
"client_metadata_query.bin",
"producer_presence.bin",
"context_manifest.bin",
"context_compaction.bin",
"context_retrieval.bin",
"control_apply_binding.bin",
"control_filter_catalog.bin",
"control_drop_schema.bin",
"control_register_projection.bin",
"control_register_schema_avro.bin",
"control_register_schema_json.bin",
"control_register_schema_protobuf.bin",
"control_register_session_source_all.bin",
"control_register_session_source_named.bin",
"control_remove_binding.bin",
"control_remove_session_source.bin",
"decode_record.bin",
"data_stack_string_discriminants.bin",
"destination_checkpoint_status.bin",
"destination_issue.json",
"destination_page.json",
"error_body.json",
"fold_snapshot.bin",
"filter_ack.bin",
"filter_ack_unfiltered.bin",
"filter_catalog_reply_bound.bin",
"filter_catalog_reply_configured.bin",
"filter_catalog_reply_registered.bin",
"filter_consumer_filter.bin",
"filter_consumer_filter.json",
"filter_eval_cases.json",
"dispatch_cases.json",
"filter_codec_cases.json",
"header_block_envelope.json",
"header_block_generic.json",
"filter_mutation_register.bin",
"filter_mutation_register.json",
"filter_mutation_unbind_exact.bin",
"filter_mutation_unbind_exact.json",
"filter_poll_request.bin",
"filter_poll_request_group_id.bin",
"filter_reply_revision_disabled.bin",
"filter_mutation_revision_state.bin",
"filter_mutation_revision_state.json",
"filter_catalog_reply_revision_state.bin",
"filter_catalog_reply_revisions.bin",
"filter_catalog_reply_unbound.bin",
"filter_mutation_configure_group.bin",
"filter_mutation_configure_group.json",
"filter_poll_request_group_auto.bin",
"filter_reply_acknowledged.bin",
"filter_reply_error.bin",
"filter_reply_page.bin",
"filter_reply_page_unfiltered.bin",
"filter_validation.json",
"fork_create.bin",
"fork_info.json",
"fork_put.bin",
"fork_reply_created.bin",
"forwarded_command.bin",
"forwarded_command_scoped.bin",
"forwarded_query.bin",
"graph_edge.bin",
"graph_edge_conversation.bin",
"graph_edge_producer.bin",
"graph_edge_sourced.bin",
"graph_neighbors.bin",
"graph_neighbors_conversation.bin",
"graph_node.bin",
"graph_node_conversation.bin",
"graph_node_producer.bin",
"graph_node_sourced.bin",
"graph_query.bin",
"graph_query_conversation.bin",
"graph_reply.bin",
"graph_upsert.bin",
"graph_upsert_session.bin",
"hello_reply.bin",
"hello_reply_agent.bin",
"hello_reply_features.bin",
"kv_cas.bin",
"kv_cas_session.bin",
"kv_cas_fenced.bin",
"kv_delete_session.bin",
"kv_copy.bin",
"kv_get_barriered.bin",
"kv_lease.bin",
"kv_lease_renew.bin",
"kv_move.bin",
"kv_namespaces.bin",
"kv_entry_memory_scope.bin",
"kv_page_view.json",
"kv_patch_session.bin",
"kv_release.bin",
"kv_reply_committed.bin",
"kv_reply_leased.bin",
"kv_reply_namespaces.bin",
"kv_reply_page.bin",
"kv_reply_renewed.bin",
"kv_reply_stale.bin",
"kv_reply_version_conflict.bin",
"kv_scan.bin",
"kv_set.bin",
"kv_set_session.bin",
"key_record.bin",
"logical_schema.bin",
"logical_type_discriminants.bin",
"managed_request.bin",
"materialization_destination.bin",
"memory_feedback_scoped.bin",
"memory_forget_scoped.bin",
"memory_item_origin.bin",
"mutation_command.bin",
"mutation_command_scoped.bin",
"query_envelope.bin",
"query_envelope_aggregate.bin",
"query_envelope_raw_sql.bin",
"query_envelope_read_your_writes.bin",
"query_envelope_text.bin",
"query_error_discriminants.bin",
"query_cancel.bin",
"query_page.bin",
"query_reply_err_stale.bin",
"query_reply_err_too_large.bin",
"query_reply_ok.bin",
"query_execution.json",
"query_result.json",
"query_route.bin",
"query_route_page.json",
"query_status.bin",
"query_status_reply.bin",
"register_schema_managed.bin",
"schema_def.json",
"session_ref.bin",
"start_policy_discriminants.bin",
"state_delta.bin",
"state_snapshot.bin",
"snapshot_page.json",
"source_ref_generation.bin",
"token_estimates.json",
"table_file_page.json",
"table_metrics.json",
"table_schema_view.json",
"table_view.json",
"query_target_discriminants.bin",
"typed_value_discriminants.bin",
);
pub fn bytes(name: &str) -> Option<&'static [u8]> {
ALL.iter()
.find(|(fixture, _)| *fixture == name)
.map(|(_, bytes)| *bytes)
}
pub fn assert_matches(name: &str, encoded: &[u8]) {
let golden = bytes(name).unwrap_or_else(|| panic!("unknown fixture `{name}`"));
assert_eq!(
encoded, golden,
"fixture `{name}` drifted from the canonical frame"
);
}
pub const FILTER_CODEC_CASES: &str = include_str!("../fixtures/filter_codec_cases.json");
#[cfg(test)]
mod tests {
#[test]
fn given_the_corpus_when_looked_up_then_should_resolve_known_names() {
assert!(super::bytes("hello_reply.bin").is_some());
assert!(super::bytes("nope.bin").is_none());
}
}