Initial Dever 0.0.1

This commit is contained in:
Codex committed 2026-11-03 03:32:07 +00:00
commit 81233d098c
1479 files changed
+163782

No files matched your search

+108
View File
@@ -0,0 +1,108 @@
use super::{Directory, fixture};
use dever::compiler::{build, project::Project};
#[test]
fn json_nominal_documents_typed_encoding_and_failures_work_end_to_end() {
let directory = Directory::new();
let project = Project::load(&fixture().with_file_name("json.dever")).unwrap();
let program = project.check().unwrap();
for entry in [
"encodeVerify",
"manualVerify",
"failureVerify",
"nativeValueVerify",
] {
let binary =
build::build(&program, &project.sources, entry, &directory.0.join(entry)).unwrap();
let output = std::process::Command::new(binary).output().unwrap();
assert!(
output.status.success(),
"{entry}: {}",
String::from_utf8_lossy(&output.stderr)
);
assert_eq!(output.stdout, b"true\n", "{entry}");
}
}
#[test]
fn json_library_preserves_raw_numbers_and_property_values() {
let directory = Directory::new();
let project = Project::load(&fixture().with_file_name("json.dever")).unwrap();
let program = project.check().unwrap();
let binary = build::build(
&program,
&project.sources,
"verify",
&directory.0.join("verify"),
)
.unwrap();
let output = std::process::Command::new(binary).output().unwrap();
assert!(
output.status.success(),
"{}",
String::from_utf8_lossy(&output.stderr)
);
assert_eq!(output.stdout, b"true\n");
}
#[test]
fn json_document_api_parses_properties_and_stringifies() {
let directory = Directory::new();
let project = Project::load(&fixture().with_file_name("json.dever")).unwrap();
let program = project.check().unwrap();
let binary = build::build(
&program,
&project.sources,
"documentVerify",
&directory.0.join("documentVerify"),
)
.unwrap();
let output = std::process::Command::new(binary).output().unwrap();
assert!(
output.status.success(),
"{}",
String::from_utf8_lossy(&output.stderr)
);
assert_eq!(output.stdout, b"true\n");
}
#[test]
fn json_library_reports_parse_failure_at_the_intrinsic_call() {
let directory = Directory::new();
let project = Project::load(&fixture().with_file_name("json.dever")).unwrap();
let program = project.check().unwrap();
let binary = build::build(
&program,
&project.sources,
"invalid",
&directory.0.join("invalid"),
)
.unwrap();
let output = std::process::Command::new(binary).output().unwrap();
assert!(!output.status.success());
let error = String::from_utf8(output.stderr).unwrap();
assert!(error.contains("JsonResult.Failed"), "{error}");
assert!(error.contains("json.dever"), "{error}");
}
#[test]
fn json_record_views_preserve_values_finite_checks_and_initialization_failures() {
let directory = Directory::new();
let project = Project::load(&fixture().with_file_name("json-record.dever")).unwrap();
let program = project.check().unwrap();
for entry in ["verify", "faultEntry"] {
let binary =
build::build(&program, &project.sources, entry, &directory.0.join(entry)).unwrap();
let output = std::process::Command::new(binary).output().unwrap();
let error = String::from_utf8(output.stderr).unwrap();
if entry == "verify" {
assert!(output.status.success(), "{error}");
assert_eq!(output.stdout, b"true\n");
} else {
assert!(!output.status.success());
assert!(output.stdout.is_empty());
assert!(error.contains("Failure.Second"), "{error}");
assert!(!error.contains("Failure.First"), "{error}");
}
}
}