gleam_ccsds_space_packet/test/space_packet/primary_hdr_test.gleam

121 lines
3.1 KiB
Plaintext
Raw Normal View History

2024-12-24 04:12:16 +00:00
import gleeunit/should
import space_packet/primary_hdr
pub fn packet_type_from_int_test() {
primary_hdr.packet_type_from_int(0)
|> should.equal(primary_hdr.Telemetry)
primary_hdr.packet_type_from_int(1)
|> should.equal(primary_hdr.Command)
primary_hdr.packet_type_from_int(555)
|> should.equal(primary_hdr.Telemetry)
}
pub fn packet_type_to_int_test() {
primary_hdr.packet_type_to_int(primary_hdr.Command)
|> should.equal(1)
primary_hdr.packet_type_to_int(primary_hdr.Telemetry)
|> should.equal(0)
}
pub fn packet_type_to_string() {
primary_hdr.packet_type_to_string(primary_hdr.Command)
|> should.equal("Command")
primary_hdr.packet_type_to_string(primary_hdr.Telemetry)
|> should.equal("Telemetry")
}
pub fn sequence_flags_from_int_test() {
primary_hdr.sequence_flags_from_int(0b00)
|> should.equal(primary_hdr.Continuation)
primary_hdr.sequence_flags_from_int(0b01)
|> should.equal(primary_hdr.FirstSegment)
primary_hdr.sequence_flags_from_int(0b10)
|> should.equal(primary_hdr.LastSegment)
primary_hdr.sequence_flags_from_int(0b11)
|> should.equal(primary_hdr.Unsegmented)
}
pub fn sequence_flags_to_int_test() {
primary_hdr.sequence_flags_to_int(primary_hdr.Continuation)
|> should.equal(0b00)
primary_hdr.sequence_flags_to_int(primary_hdr.FirstSegment)
|> should.equal(0b01)
primary_hdr.sequence_flags_to_int(primary_hdr.LastSegment)
|> should.equal(0b10)
primary_hdr.sequence_flags_to_int(primary_hdr.Unsegmented)
|> should.equal(0b11)
}
pub fn sequence_flags_to_string_test() {
primary_hdr.sequence_flags_to_string(primary_hdr.Continuation)
|> should.equal("Continuation")
primary_hdr.sequence_flags_to_string(primary_hdr.FirstSegment)
|> should.equal("First Segment")
primary_hdr.sequence_flags_to_string(primary_hdr.LastSegment)
|> should.equal("Last Segment")
primary_hdr.sequence_flags_to_string(primary_hdr.Unsegmented)
|> should.equal("Unsegmented")
}
pub fn from_bit_array_test() {
let valid_bit_array = <<
0b000:size(3), 0b0:size(1), 0b0:size(1), 0x200:size(11), 0b11:size(2),
0x01:size(11), 0x01:size(16),
>>
let expected_hdr =
primary_hdr.PrimaryHeader(
version: 0,
sp_type: primary_hdr.Telemetry,
sec_hdr_flag: False,
apid: 0x200,
seq_flag: primary_hdr.Unsegmented,
seq_count: 1,
packet_len: 1,
)
primary_hdr.from_bit_array(valid_bit_array)
|> should.be_ok()
|> should.equal(expected_hdr)
}
pub fn from_bit_array_fail_test() {
let invalid_bit_array = <<0x00:size(41)>>
primary_hdr.from_bit_array(invalid_bit_array)
|> should.be_error()
|> should.equal(primary_hdr.InvalidSize)
}
pub fn to_bit_array_test() {
let expected_bit_array = <<
0b000:size(3), 0b0:size(1), 0b0:size(1), 0x200:size(11), 0b11:size(2),
0x01:size(11), 0x01:size(16),
>>
let hdr =
primary_hdr.PrimaryHeader(
version: 0,
sp_type: primary_hdr.Telemetry,
sec_hdr_flag: False,
apid: 0x200,
seq_flag: primary_hdr.Unsegmented,
seq_count: 1,
packet_len: 1,
)
primary_hdr.to_bit_array(hdr)
|> should.equal(expected_bit_array)
}