test "quick_start_example" {
// Calculate Adler-32 of some data
let data = b"Hello, World!"
let checksum = @adler32.bytes(data)
inspect(checksum, content="0x491025710148525497")
// Verify data integrity
let received_data = b"Hello, World!"
let received_checksum = @adler32.bytes(received_data)
assert_eq(checksum, received_checksum)
}pub(all) struct Adler32(Int64) derive(Eq)test "bytes_function_example" {
let data = b"Hello, Adler32!"
let adler = @adler32.bytes(data)
inspect(adler, content="0x50565049485297102")
}test "example_basic" {
// Calculate checksum
let message = b"Hello, World!"
let checksum = @adler32.bytes(message)
// Display result
inspect("Message: Hello, World!", content="Message: Hello, World!")
inspect(checksum, content="0x491025710148525497")
}test "example_integrity" {
let original_data = b"Important data"
let expected_adler = @adler32.bytes(original_data)
// Simulate data transmission/storage
let received_data = b"Important data"
let received_adler = @adler32.bytes(received_data)
// Verify integrity
if expected_adler == received_adler {
inspect("✅ Data integrity verified", content="✅ Data integrity verified")
} else {
inspect("❌ Data corruption detected!", content="❌ Data corruption detected!")
}
}test "example_data_types" {
// Text data
let text_adler = @adler32.bytes(b"Hello")
// Binary data
let binary_data = Bytes::from_array([0x48, 0x65, 0x6c, 0x6c, 0x6f]) // "Hello" in bytes
let binary_adler = @adler32.bytes(binary_data)
// They should be equal
assert_eq(text_adler, binary_adler)
inspect(text_adler, content="0x48535699484910253")
}test "example_empty_data" {
// Empty data has a known Adler-32 value of 1
let empty_data = Bytes::from_array([])
let empty_adler = @adler32.bytes(empty_data)
// Non-empty data
let some_data = b"A"
let some_adler = @adler32.bytes(some_data)
inspect(empty_adler, content="0x4848484848484849")
inspect(some_adler, content="0x4848525048485250")
assert_true(empty_adler != some_adler)
}test "example_performance" {
let small_data = b"Hello"
let medium_data = b"This is a medium-sized piece of data for testing."
let large_data = b"This is a much larger piece of data that demonstrates the performance characteristics of Adler-32. It should still be processed very quickly due to the algorithm's efficiency."
let small_adler = @adler32.bytes(small_data)
let medium_adler = @adler32.bytes(medium_data)
let large_adler = @adler32.bytes(large_data)
inspect(small_adler, content="0x48535699484910253")
inspect(medium_adler, content="0x9851545049495698")
inspect(large_adler, content="0x1009855575110210099")
inspect("All calculated efficiently!", content="All calculated efficiently!")
}a = 1 + sum of all bytes
b = sum of all intermediate 'a' values
adler32 = (b << 16) | a| Feature | Adler-32 | CRC-32 |
|---|---|---|
| Speed | Faster | Slower |
| Error Detection | Good | Better |
| Collision Resistance | Lower | Higher |
| Memory Usage | Minimal | Lookup table |
| Use Cases | Compression, fast integrity | Archives, critical integrity |
test "verified_values" {
// These values are verified against Python's zlib.adler32()
let test1 = @adler32.bytes(b"hello world hgoho xx yy zz aa bb cc dd ee ff")
assert_eq(test1.0, 1725042482L)
let test2 = @adler32.bytes(b"hello world hgoho xx yy zz aa bb cc dd ee")
assert_eq(test2.0, 980291142L)
}test "integration_example" {
// Used internally by zlib compression
let data = b"Data to compress"
let adler = @adler32.bytes(data)
// Adler-32 is included in zlib headers for integrity verification
inspect(adler, content="0x5148545348544897")
}pub(all) type Adler32 Int64ZIP archive and deflate codec for MoonBit - ported from OCaml zipc library