1#!/usr/bin/env bash
2
3set -euxo pipefail
4
5mkdir -p out/
6OUT_DIR="$(pwd)/out"
7
8# move to `pdl-compiler` directory
9cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." &> /dev/null
10
11sed -e 's/little_endian_packets/big_endian_packets/' \
12    -e '/Start: little_endian_only/,/End: little_endian_only/d' \
13    < tests/canonical/le_test_file.pdl > "$OUT_DIR/be_test_file.pdl"
14
15mkdir -p "$OUT_DIR/canonical_test/src"
16
17cargo run --bin pdlc -- \
18    tests/canonical/le_test_file.pdl \
19    --output-format rust_legacy \
20    --exclude-declaration UnsizedCustomField \
21    --exclude-declaration Packet_Custom_Field_VariableSize \
22    --exclude-declaration Struct_Custom_Field_VariableSize_ \
23    --exclude-declaration Struct_Custom_Field_VariableSize \
24    --exclude-declaration Checksum \
25    --exclude-declaration Packet_Checksum_Field_FromStart \
26    --exclude-declaration Packet_Checksum_Field_FromEnd \
27    --exclude-declaration Struct_Checksum_Field_FromStart_ \
28    --exclude-declaration Struct_Checksum_Field_FromStart \
29    --exclude-declaration Struct_Checksum_Field_FromEnd_ \
30    --exclude-declaration Struct_Checksum_Field_FromEnd \
31    --exclude-declaration PartialParent5 \
32    --exclude-declaration PartialParent12 \
33    --exclude-declaration PartialChild5_A \
34    --exclude-declaration PartialChild5_B \
35    --exclude-declaration PartialChild12_A \
36    --exclude-declaration PartialChild12_B \
37    --exclude-declaration Packet_Array_Field_UnsizedElement_SizeModifier \
38    --exclude-declaration Struct_Array_Field_UnsizedElement_SizeModifier_ \
39    --exclude-declaration Struct_Array_Field_UnsizedElement_SizeModifier \
40    --exclude-declaration Packet_Array_Field_VariableElementSize_ConstantSize \
41    --exclude-declaration Packet_Array_Field_VariableElementSize_VariableSize \
42    --exclude-declaration Packet_Array_Field_VariableElementSize_VariableCount \
43    --exclude-declaration Packet_Array_Field_VariableElementSize_UnknownSize \
44    > "$OUT_DIR/canonical_test/src/le_backend.rs"
45cargo run --bin pdlc -- \
46    tests/canonical/le_test_vectors.json \
47    --output-format rust_legacy \
48    --tests \
49    >> "$OUT_DIR/canonical_test/src/le_backend.rs"
50cargo run --bin pdlc -- \
51    "$OUT_DIR/be_test_file.pdl" \
52    --output-format rust_legacy \
53    --exclude-declaration UnsizedCustomField \
54    --exclude-declaration Packet_Custom_Field_VariableSize \
55    --exclude-declaration Struct_Custom_Field_VariableSize_ \
56    --exclude-declaration Struct_Custom_Field_VariableSize \
57    --exclude-declaration Checksum \
58    --exclude-declaration Packet_Checksum_Field_FromStart \
59    --exclude-declaration Packet_Checksum_Field_FromEnd \
60    --exclude-declaration Struct_Checksum_Field_FromStart_ \
61    --exclude-declaration Struct_Checksum_Field_FromStart \
62    --exclude-declaration Struct_Checksum_Field_FromEnd_ \
63    --exclude-declaration Struct_Checksum_Field_FromEnd \
64    --exclude-declaration Packet_Array_Field_UnsizedElement_SizeModifier \
65    --exclude-declaration Struct_Array_Field_UnsizedElement_SizeModifier_ \
66    --exclude-declaration Struct_Array_Field_UnsizedElement_SizeModifier \
67    --exclude-declaration Packet_Array_Field_VariableElementSize_ConstantSize \
68    --exclude-declaration Packet_Array_Field_VariableElementSize_VariableSize \
69    --exclude-declaration Packet_Array_Field_VariableElementSize_VariableCount \
70    --exclude-declaration Packet_Array_Field_VariableElementSize_UnknownSize \
71    > "$OUT_DIR/canonical_test/src/be_backend.rs"
72cargo run --bin pdlc -- \
73    tests/canonical/be_test_vectors.json \
74    --output-format rust_legacy \
75    --tests \
76    >> "$OUT_DIR/canonical_test/src/be_backend.rs"
77
78cat <<EOT > "$OUT_DIR/canonical_test/src/lib.rs"
79mod le_backend;
80mod be_backend;
81EOT
82
83cat <<EOT > "$OUT_DIR/canonical_test/Cargo.toml"
84[package]
85name = "canonical_test"
86version = "0.0.0"
87publish = false
88edition = "2021"
89
90[features]
91default = ["serde"]
92
93[dependencies]
94bytes = {version = "1.4.0", features = ["serde"]}
95thiserror = "1.0.47"
96serde_json = "1.0.86"
97
98[dependencies.serde]
99version = "1.0.145"
100features = ["default", "derive", "serde_derive", "std", "rc"]
101optional = true
102
103[dependencies.pdl-runtime]
104path = "../../pdl-runtime"
105
106[workspace]
107EOT
108
109cd "$OUT_DIR/canonical_test"
110RUSTFLAGS=-Awarnings cargo test --tests
111