///|
/// Run a deterministic, allocation-bounded smoke check over all public
/// structure families and print exact serialized sizes.
fn main raise {
assert_true(@conformance.smoke_check())
let bits = @bitvector.from_bools([
true, false, true, false, false, true, false, true,
])
let sequence = @eliasfano.from_values([1UL, 3UL, 3UL, 9UL, 27UL, 81UL, 243UL])
let terms : Array[Bytes] = [
b"api", b"api/admin", b"api/catalog", b"compile", b"config",
]
let trie = @louds.trie_from_terms(terms)
let dictionary = @frontcoded.from_terms(terms, block_size=3)
assert_eq(sequence.successor(10UL), Some(27UL))
assert_eq(trie.terms_with_prefix(b"api", 10).length(), 3)
assert_eq(dictionary.terms_with_prefix(b"api", 10).length(), 3)
let bit_report = bits.space_report()
let sequence_report = sequence.space_report()
let trie_report = trie.space_report()
let dictionary_report = dictionary.space_report()
println("MoonSuccinct \{@lib.version()} self-check: ok")
println(
"bitvector items=\{bit_report.logical_items} bytes=\{bit_report.serialized_bytes}",
)
println(
"elias-fano items=\{sequence_report.logical_items} bytes=\{sequence_report.serialized_bytes}",
)
println(
"LOUDS terms=\{trie_report.logical_items} bytes=\{trie_report.serialized_bytes}",
)
println(
"front-coded terms=\{dictionary_report.logical_items} bytes=\{dictionary_report.serialized_bytes}",
)
}